【Jenkins】빌드 실패시의 로그를 Slack에 자동 투고한다

4645 단어 슬랙Jenkins

소개





Jenkins 빌드가 실패하면 로그에서 원인을 확인하고 수정해야합니다. 그러나 Jenkins를 사내 로컬 서버에서 실행하는 경우와 같이 외부에서 액세스하지 못할 수 있습니다. 그래서 이번에는 빌드 실패시의 로그를 자동으로 Slack에 투고하는 구조를 만들었으므로 소개하고 싶습니다.

환경


  • Windows 10 Home 1903
  • Jenkins ver. 2.204.5

  • 방법



    빌드 실패시 트리거



    이번에는 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」도 잘 부탁드립니다!

    좋은 웹페이지 즐겨찾기