GitHub Actionsは普段CI/CDとして利用しているのですが、もっと様々な効率化されたワークフローを作れるのではないかと思い、第一歩として自作GitHubActionsを作って公開してみました。
GitHub Actionsとは
GitHub社が提供している、リポジトリの様々なワークフローを自動化するための仕組み。 ソースコードがcommitされたタイミングなど、様々なタイミングで処理を実行することができる。
https://docs.github.com/ja/actions
どんなアクションが作れるのか
自作パッケージを公開するに当たりどのような形式で作れるのか調べてみました。
Docker containerタイプ
OSはLinux
Dockerを使えるためあらゆる環境や操作を実現できる イメージの取得のために時間がかかるため、低速
JavaScript
環境がJavaScriptだけに限定されるが、Docker containerタイプに比べ高速に実行できる
Composite Actions
複数のワークフローをまとめたものを1つのアクションとして公開できる
アクションを公開する条件は
- アクションは公開リポジトリにあること
- 各リポジトリには1つのアクションが含まれていること
- アクションのメタデータファイル(action.yml または action.yaml)は、リポジトリのルートディレクトリにあること
- アクションのメタデータファイルの名前が一意であること
などといった条件があるみたいですが、最低限リポジトリを作ってREADME.mdとaction.ymlを置けば良いです。
今回、branchをpushしたら、自動でPullRequestを作り、branch名からPivotalTrackerのストーリーIDを取得してリンクを貼るという簡単なactionをComposite Actionsで作成しました。
name: Auto PR. Pivotal Tracker style description: Create a PR with an automatic title and summary by setting the branch as features/[Pivotal Tracker story ID]. inputs: github-token: description: GitHub token required: true runs: using: composite steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Dump GitHub context env: GITHUB_CONTEXT: ${{ toJSON(github) }} shell: bash run: echo "$GITHUB_CONTEXT" - name: Extract branch name shell: bash run: echo "::set-output name=branch::${GITHUB_REF#refs/heads/feature/}" id: extract_branch - name: Create Pull Request uses: repo-sync/pull-request@v2 with: destination_branch: "main" github_token: ${{ inputs.github-token }} pr_title: "[#${{ steps.extract_branch.outputs.branch }}] " pr_body: | https://www.pivotaltracker.com/story/show/${{ steps.extract_branch.outputs.branch }} # pr_label: "production" pr_assignee: ${{ github.actor }} branding: icon: git-pull-request color: green
公開したGitHub Action: auto-pr-pivotal-tracker-style
リリースの方法については、このページを参考に基本的にはaction.ymlだけをいじっていくことで公開できました。
公開できたのでGitHub Actionを作るときは、公開すべきかも考えて使っていこうと思います。