Github Scriptを使ってマイルストーン作成を自動化した話

1 min read読了の目安(約1600字

今週やる作業をマイルストーン管理しよう!って話をチームでしていたときに、「マイルストーンを毎週毎週作るのは面倒くさい」だったり、「イチイチマイルストーンに手動登録するの面倒くさい」という話になりました。
最初、シェルスクリプトで書いていたのですが大変でどうしたものかなと思っていた時に、Github Scriptを教えてもらったので、それを使って今回はマイルストーン作成を自動化してみました。

Github Scriptとは

script部分をJavaScriptで書けるツールです。
詳しくはREADME参照ですが、GitHubAPIを呼び出して色々書くことができます。
rest.jsのDocREST APIのDocを読むと、なんとなくでも書けます(書けました...)

マイルストーンを週の初めに自動作成する

一例として指定した曜日の朝9時にマイルストーンを作ってくれるコードを載せます。

name: Create Weekly Milestone
on:
  schedule:
  - cron: '0 0 * * Thu'

jobs:
  create-weekly-milestone:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/github-script@v3
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const date = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));
            const startDate = (date.getMonth() + 1) + "/" + date.getDate()
            date.setDate(date.getDate() + 7)
            const due_on = date.toISOString()
            const endDate = (date.getMonth() + 1) + "/" + date.getDate()
            github.issues.createMilestone({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: startDate + " ~ " + endDate,
              due_on: due_on,
              description: startDate + "~" + endDate + "のマイルストーン"
            })

実行されると↓のようなマイルストーンが作成されます。

おわりに

特定のラベルが付与/削除されたら、マイルストーンに自動登録/削除してくれるという機能を作ったりなど色々な事が簡単にできるのがいい所だなと思いました。
本記事が何かのお役に立てば幸いです。