GitHub Actions에서 빌드 성공 및 실패를 Slack에 알리는 방법

5183 단어 GitHubActions

TL;DR


  • Slack의 Incoming Webhook 통합을 활용합니다.
  • if: success() , if: failure() 각각의 단계를 나누고 알림 결과를 조정합니다.

  • 전치



    알고 있는 사람은 이미 실천하고 있다고 생각합니다만, 의외로 초보자에게 알기 쉬운 정보가 적은 생각이 있으므로 써 둡니다.

    GitHub Actions에서 빌드 결과를 Slack에 알리려면



    2020-06-10 현재 GitHub Actions에는 표준으로 작업 실행 결과를 Slack 등에 통지하는 기능이 없습니다. (※예외에 대해서는 후술)
    그래서 마켓플레이스에 있는 액션이나 Slack의 Incoming Webhook URL을 두드리는 명령을 추가하는 형태가 된다고 생각합니다.

    예외



    위의 예외로 다음과 같은 경우 GitHub 공식 Slack 통합 에서 알림을 받을 수 있습니다.
  • 끌어오기 요청 알림을 사용하도록 설정하면 끌어오기 요청에 연결된 빌드 결과를 알 수 있습니다.
  • Deployments 알림을 사용하도록 설정하면 Deployments를 만드는 워크플로의 실행 결과를 알 수 있습니다. 1

  • 워크플로 설정 예



    아래는 git push로 go test를 실행하는 워크 플로우의 구성 예입니다.
    Slack 알림에는 rtCamp/action-slack-notify 이라는 액션을 사용했습니다.

    go-test.yml
    name: go-test
    
    on: push
    
    env:
      SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2
        - uses: actions/setup-go@v2
          with:
            go-version: '1.14.4'
        - run: go get -v ./...
        - run: go test -v ./...
          id: test
    
        # テスト成功時はこちらのステップが実行される
        - name: Slack Notification on Success
          if: success()
          uses: rtCamp/[email protected]
          env:
            SLACK_CHANNEL: ci
            SLACK_TITLE: Test Success
            SLACK_COLOR: good
    
        # テスト失敗時はこちらのステップが実行される
        - name: Slack Notification on Failure
          uses: rtCamp/[email protected]
          if: failure()
          env:
            SLACK_CHANNEL: ci
            SLACK_TITLE: Test Failure
            SLACK_COLOR: danger
    

    보충:
  • 사전에 리포지토리의 Secrets에 SLACK_WEBHOOK_URL라는 키로 Slack의 Incoming Webhook URL을 설정했습니다.

    슬랙 알림 결과 예





    참조


  • Context and expression syntax for GitHub Actions - GitHub Help#job-status-check-functions

  • 각주





    참고: GitHub Actions에서 GCP에 Terraform으로 인프라 CI/CD하기 - Qiita  

    좋은 웹페이지 즐겨찾기