以前、レビュータイムや定期的なissueチェックのためにGithubのissueを検索してSlackに投稿するCLIツールを作ったで紹介したnotify-issues-to-slackだが、これまでは
- 適当に立てたサーバーのcronで動かす
- Jenkinsなどで実行する
という方法で動かしていた。
しかし、issueをslackに通知するためだけにサーバーを立てたりするのもだるい。そこでGithub Actionsで動かしてみた。
Github Actionsを動かすレポジトリのみを対象とする場合
secrets.GITHUB_TOKENを使えば、そのレポジトリへアクセス可能なので、何も設定せずとも以下のように設定できる。
.github/workflows/notify-issues.yml
name: daily bug report on: schedule: - cron: 30 12 * * 1-5 # UTC 12:30 on weekdays jobs: notify: runs-on: ubuntu-latest steps: - name: daily bug report env: # You can use secrets.GITHUB_TOKEN if you # don't have to access other repositories GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | docker pull shibayu36/notify-issues-to-slack docker run --rm shibayu36/notify-issues-to-slack \ -github-token=${GITHUB_TOKEN} \ -slack-webhook-url=... \ -query='repo:shibayu36/notify-issues-to-slack state:open label:"bug"' \ -text="Please check bug reports @shibayu36" \ -channel="bug-report-channel"
ポイントとしては、on schedule cronはUTCで設定する必要がある、くらい。
別レポジトリも含めてissue検索し、通知したい場合
Personal access tokenを発行して、secretsに登録すれば良い。
.github/workflows/notify-issues-with-personal-access-token.yml
name: daily bug report on: schedule: - cron: 30 12 * * 1-5 # UTC 12:30 on weekdays jobs: notify: runs-on: ubuntu-latest steps: - name: daily bug report env: # You have to use personal access token if you # want to access other repositories. # Create secrets ( named NOTIFY_ISSUES_GITHUB_TOKEN in this example ) in repository settings, and use it. GITHUB_TOKEN: ${{ secrets.NOTIFY_ISSUES_GITHUB_TOKEN }} run: | docker pull shibayu36/notify-issues-to-slack docker run --rm shibayu36/notify-issues-to-slack \ -github-token=${GITHUB_TOKEN} \ -slack-webhook-url=... \ -query='repo:shibayu36/notify-issues-to-slack state:open label:"bug"' \ -text="Please check bug reports @shibayu36" \ -channel="bug-report-channel"
まとめ
今回はGithub Actionsでnotify-issues-to-slackを動かしてみた。こういうツールはコンテナイメージを作りDocker Hubとかに公開しておけば、シュッとGithub Actionsで利用することが出来て便利だった。