【Jenkins】빌드 실패시의 로그를 Slack에 자동 투고한다
소개
Jenkins 빌드가 실패하면 로그에서 원인을 확인하고 수정해야합니다. 그러나 Jenkins를 사내 로컬 서버에서 실행하는 경우와 같이 외부에서 액세스하지 못할 수 있습니다. 그래서 이번에는 빌드 실패시의 로그를 자동으로 Slack에 투고하는 구조를 만들었으므로 소개하고 싶습니다.
환경
방법
빌드 실패시 트리거
이번에는 Parameterized Trigger plugin을 사용했습니다. 이것은 매개 변수를 인수하면서 다운스트림 작업을 이동할 수 있는 플러그인입니다. 로그를 출력할 때에 필요가 파라미터 건네주면서, 또한 발화의 조건을 지정할 수도 있다(이번은 빌드 실패시) 때문에, 요건에 합치하고 있었습니다.
참고 : 개발자(개인)를 위한 Jenkins - Parameter 편
덧붙여서 다운스트림 작업에서는 받는 파라미터를 정의해 둘 필요가 있는 점에 주의입니다.
Jenkins 빌드 로그를 얻고 utf8로 변환
하류 작업의 빌드/쉘의 실행으로 기술해 갑니다.
cd "${JENKINS_HOME}/workspace"
curl http://localhost:8080/all/job/${PROJECT_NAME}/${BUILD_NUMBER}/consoleText >${PROJECT_NAME}-${BUILD_NUMBER}.log
./convert.bat ${PROJECT_NAME}-${BUILD_NUMBER}.log
빌드 로그를 얻으려면 curl
명령을 사용하십시오. 빌드 로그는 http://[JENKINS_URL]/job/[JOB_NAME]/[BUILD_NUMBER]/consoleText
로 취득할 수 있으므로, 업스트림 작업으로부터 계승한 파라미터를 이용해 가공합니다. 그대로라면 concoleText
라는 이름으로 저장되어 버리므로 향후를 위해 빌드 정보를 사용한 이름을 붙여 둡니다.
또, Windows에서는 Shift-Jis 형식으로 되어 있어 불편함이 있기 때문에, UTF8로 변환해 둡니다. 다음 배치 파일을 사용했습니다.
참고 : Shift JIS 텍스트 파일을 UTF-8로 변환하는 배치 - 오늘을 극복하는 Excel 연구소
(이번에는 출력 파일로 덮어 쓰기되도록 일부 변경하고 있습니다)
슬랙에 로그 파일 업로드
Slack API를 사용하여 파일을 업로드합니다. 파일 작업 권한이 필요하므로 Slack App을 만들어야 합니다. 조금 번잡합니다만, 문서를 참고로 진행해 나가면 어렵지 않다고 생각합니다.
참고 : Basic app setup | Slack
참고 : files.upload method | Slack
curl 명령을 사용하여 다음과 같이 업로드 할 수있었습니다 (.
curl -F file=@${PROJECT_NAME}-${BUILD_NUMBER}.log -F channels=[CHANNEL_ID] -H "Authorization: Bearer xoxb-[ACCESS_TOKEN]" https://slack.com/api/files.upload
rm ${PROJECT_NAME}-${BUILD_NUMBER}.log
참고 : Slack — API에 사용할 '채널 ID'를 얻는 방법 - Qiita
마지막으로 CHANNEL_ID
명령으로 로컬에서 파일을 삭제하고 끝납니다.
마지막으로
선전이지만, MyDearest 주식회사에서는 신작 VR게임 『ALTDEUS: Beyond Chronos(알토데우스: 비욘드 크로노스)』을 개발중입니다. 출시된 꼭 놀아주세요!
또, 나의 Twitter( 🌸 )의 팔로우나 「LGTM」도 잘 부탁드립니다!
Reference
이 문제에 관하여(【Jenkins】빌드 실패시의 로그를 Slack에 자동 투고한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nkjzm/items/0de43b0f8e75579c30fb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
cd "${JENKINS_HOME}/workspace"
curl http://localhost:8080/all/job/${PROJECT_NAME}/${BUILD_NUMBER}/consoleText >${PROJECT_NAME}-${BUILD_NUMBER}.log
./convert.bat ${PROJECT_NAME}-${BUILD_NUMBER}.log
curl -F file=@${PROJECT_NAME}-${BUILD_NUMBER}.log -F channels=[CHANNEL_ID] -H "Authorization: Bearer xoxb-[ACCESS_TOKEN]" https://slack.com/api/files.upload
rm ${PROJECT_NAME}-${BUILD_NUMBER}.log
선전이지만, MyDearest 주식회사에서는 신작 VR게임 『ALTDEUS: Beyond Chronos(알토데우스: 비욘드 크로노스)』을 개발중입니다. 출시된 꼭 놀아주세요!
또, 나의 Twitter( 🌸 )의 팔로우나 「LGTM」도 잘 부탁드립니다!
Reference
이 문제에 관하여(【Jenkins】빌드 실패시의 로그를 Slack에 자동 투고한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nkjzm/items/0de43b0f8e75579c30fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)