diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-19 01:49:51 +0900 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2019-08-19 01:49:52 +0900 |
commit | 2f6c8ed26eec4ad2d2fdaa0823cc63ba32f4c7a2 (patch) | |
tree | 431e2c9874a20051da335624ee68313f87130db8 /.github | |
parent | e4c43207f9c7c56ecc76bb941c08a686a242b1de (diff) | |
download | ruby-2f6c8ed26eec4ad2d2fdaa0823cc63ba32f4c7a2.tar.gz |
Implement Slack notification for Actions
Diffstat (limited to '.github')
-rw-r--r-- | .github/actions/notify-slack/action.yml | 53 | ||||
-rw-r--r-- | .github/workflows/macos.yml | 21 | ||||
-rw-r--r-- | .github/workflows/ubuntu.yml | 18 | ||||
-rw-r--r-- | .github/workflows/windows.yml | 10 |
4 files changed, 85 insertions, 17 deletions
diff --git a/.github/actions/notify-slack/action.yml b/.github/actions/notify-slack/action.yml new file mode 100644 index 0000000000..1a51a2503a --- /dev/null +++ b/.github/actions/notify-slack/action.yml @@ -0,0 +1,53 @@ +name: notify-slack +description: You can notify slack of GitHub Actions. +author: k0kubun +inputs: + status: + description: Success or Failure + matrix_name: + description: Matrix task name + committer_name: + description: Git committer name + commit_message: + description: Git commit message + commit_timestamp: + description: Git commit timestamp +runs: + using: docker + image: 'docker://ruby:2.6-slim' + args: + - /usr/local/bin/ruby + - -e + - |- + require 'json' + require 'net/http' + require 'uri' + + github_repo = ENV.fetch('GITHUB_REPOSITORY') + github_sha = ENV.fetch('GITHUB_SHA') + github_ref = ENV.fetch('GITHUB_REF') + + workflow = ENV.fetch('GITHUB_WORKFLOW') + matrix = ENV.fetch('INPUT_MATRIX_NAME') + status = ENV.fetch('INPUT_STATUS') + + message = ENV.fetch('INPUT_COMMIT_MESSAGE') + timestamp = ENV.fetch('INPUT_COMMIT_TIMESTAMP') + committer = ENV.fetch('INPUT_COMMITTER_NAME') + + commit_url = "https://github.com/#{github_repo}/commit/#{github_sha}" + attachment = { + title: "#{status}: #{workflow} / #{matrix}", + title_link: "#{commit_url}/checks", + text: "<#{commit_url}|#{github_sha[0...10]}> of #{github_repo}@#{File.basename(github_ref)} "\ + "by #{committer} on #{timestamp}: #{message}", + color: status == 'Success' ? 'good' : 'danger', + } + + resp = Net::HTTP.post( + URI(ENV.fetch('SLACK_WEBHOOK_URL')), + { attachments: [attachment] }.to_json, + { 'Content-Type' => 'application/json' }, + ) + puts "#{resp.code} (#{resp.body}) -- #{payload.to_json}" + resp.value diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index e357e3ad2e..d974a9f7ad 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -42,19 +42,20 @@ jobs: - name: configure run: ./configure -C --disable-install-doc --with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) - run: make $JOBS - - name: make check + - name: Tests run: make -s ${{ matrix.test_task }} env: TESTOPTS: "$JOBS -q --tty=no" MSPECOPT: "-ff" # not using `-j` because sometimes `mspec -j` silently dies - if: matrix.test_task == 'check' - # test-bundler/test-bundled-gems are separated because it randomly fails and ends up cancelling `make check`. - # TODO: Remove `continue-on-error` once they become stable and also we have a notification for their failure. - - name: make test-bundler/test-bundled-gems - run: make -s ${{ matrix.test_task }} - env: - TESTOPTS: "$JOBS -q --tty=no" - continue-on-error: true - if: matrix.test_task != 'check' - name: Leaked Globals run: make -s leaked-globals + - uses: ./.github/actions/notify-slack + with: + status: ${{ job.status }} + matrix_name: ${{ matrix.test_task }} + committer_name: ${{ github.event.head_commit.committer.name }} + commit_message: ${{ github.event.head_commit.message }} + commit_timestamp: ${{ github.event.head_commit.timestamp }} + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 8c2d3a2fd5..31fba17aac 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -45,16 +45,20 @@ jobs: - name: configure run: ./configure -C --disable-install-doc - run: make $JOBS - - name: make check + - name: Tests run: make -s ${{ matrix.test_task }} env: TESTOPTS: "$JOBS -q --tty=no" MSPECOPT: "-ff" # not using `-j` because sometimes `mspec -j` silently dies - if: matrix.test_task == 'check' - # TODO: Remove `continue-on-error` once they become stable and also we have a notification for their failure. - - name: make test-bundler/test-bundled-gems - run: make -s ${{ matrix.test_task }} - if: matrix.test_task != 'check' - continue-on-error: true - name: Leaked Globals run: make -s leaked-globals + - uses: ./.github/actions/notify-slack + with: + status: ${{ job.status }} + matrix_name: ${{ matrix.test_task }} + committer_name: ${{ github.event.head_commit.committer.name }} + commit_message: ${{ github.event.head_commit.message }} + commit_timestamp: ${{ github.event.head_commit.timestamp }} + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 984ac7011a..ae5d2e5451 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -53,3 +53,13 @@ jobs: run: | call "C:\Program Files (x86)\Microsoft Visual Studio\${{ matrix.vs }}\Enterprise\VC\Auxiliary\Build\vcvars64.bat" nmake ${{ matrix.test_task }} + - uses: ./.github/actions/notify-slack + with: + status: ${{ job.status }} + matrix_name: ${{ matrix.test_task }} + committer_name: ${{ github.event.head_commit.committer.name }} + commit_message: ${{ github.event.head_commit.message }} + commit_timestamp: ${{ github.event.head_commit.timestamp }} + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + if: failure() && github.event_name == 'push' |