actions/github-scriptとoctokit/rest.jsでお手軽ワークフロー


actions/github-scriptはGitHub ActionsのYAML形式のワークフローに直接JavaScriptのスクリプトを書ける便利なアクションです。

https://github.com/actions/github-script

GitHub APIのラッパーであるoctokit/rest.jsを設定不要で使うことができ、プルリクエストやイシューにラベルをつけたりといった操作が簡単にできます。

https://octokit.github.io/rest.js/v18

actions/github-scriptのExamplesからいくつか抜粋します。

  • イシューにコメントする
on:
  issues:
    types: [opened]

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v6
        with:
          script: |
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '👋 Thanks for reporting!'
            })
  • イシューにラベルをつける
on:
  issues:
    types: [opened]

jobs:
  apply-label:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v6
        with:
          script: |
            github.rest.issues.addLabels({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              labels: ['Triage']
            })
  • 別のファイルから呼び出す
on: push

jobs:
  echo-input:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/github-script@v6
        with:
          script: |
            const script = require('./path/to/script.js')
            console.log(script({github, context}))

イシューをプルリクエストなどに変えたい場合、トリガーとして宣言するイベントを変更すればOKです。

https://docs.github.com/ja/github-ae@latest/actions/using-workflows/events-that-trigger-workflows#pull_request

actions/github-scriptとoctokit/rest.jsで快適なCIライフを!