GitHubの更新をActionsで楽にする公式Actionのgithub-scriptへ入門してみる

GitHub自体の操作もActionsで楽に行いたいため、何か方法はないかと探して行き着いたgithub-scriptに入門してみました。
2020.03.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

GitHub Actionsを使ったCICDが手軽なことは勿論のこと、各種外部サービスとの連携も手軽です。が、GitHub自体の更新はほぼ手作業になっている有様でした。もうちょい何かやり方あるんじゃないかなと思い、Star 8.8超えのawesome-actionsを眺めていました。

sdras/awesome-actions: A curated list of awesome actions to use on GitHub

公式と非公式が混在しているなかで「これなら余り手間を掛けずにいけそう」と見えたのが github-script。公式のActionです。

actions/github-script

触れば触るほど色々出来そうですが、ドキュメントはどうしたものかと検索する必要があったため、備忘録として残すことにしました。

github-scriptとは

Workflow内でのGitHub APIとContextの制御がScriptで行えるActionです。

GitHub APIの呼び出しは認証含めて octokit/rest.js にて行われており、実質このライブラリのドキュメントが github-script 操作用のドキュメントとも言えます。

octokit/rest.js

実際にサンプルを試してみる

適当なリポジトリを作成し、Actionsタブから「Set up a workflow yourself」を選択します。

ファイル名をcomment_on_an_issue.ymlとでもしておき、以下のサンプルを貼り付けます。

on:
  issues: {types: opened}
  
jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@0.9.0
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '? Thanks for reporting!'
            })

「Start commit」を選択します。コメント等を入れる必要はありません。masterブランチへのコミットとします。

次にIssuesのタブにて「New Issue」を選択します。

とりあえず何か入力して「Submit new issue」をクリックします。

暫く待つとコメントが自動で付きます。Actionsの処理待ちがあるため即時ではないのがポイントです

あとがき

github-scriptの動作自体がどんな感じになるのか調査と検証を兼ねていたこともあり、稚拙なサンプルではありますが「そんな感じかー」というのが判ると幸いです。

Labelを自動でつけたりと色々な使いみちがあるようなので、業務での色々な工夫をまとめていけたらいいなと思っています。