Skip to content
Permalink
Browse files

Implement Slack notification for Actions

  • Loading branch information...
k0kubun committed Aug 18, 2019
1 parent e4c4320 commit 2f6c8ed26eec4ad2d2fdaa0823cc63ba32f4c7a2
Showing with 85 additions and 17 deletions.
  1. +53 −0 .github/actions/notify-slack/action.yml
  2. +11 −10 .github/workflows/macos.yml
  3. +11 −7 .github/workflows/ubuntu.yml
  4. +10 −0 .github/workflows/windows.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
@@ -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'
@@ -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'
@@ -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'

0 comments on commit 2f6c8ed

Please sign in to comment.
You can’t perform that action at this time.