GitHub Actionsは普段CI/CDとして利用しているのですが、もっと様々な効率化されたワークフローを作れるのではないかと思い、第一歩として自作GitHubActionsを作って公開してみました。
GitHub Actionsとは
GitHub社が提供している、リポジトリの様々なワークフローを自動化するための仕組み。 ソースコードがcommitされたタイミングなど、様々なタイミングで処理を実行することができる。
https://docs.github.com/ja/actions
どんなアクションが作れるのか
自作パッケージを公開するに当たりどのような形式で作れるのか調べてみました。
Docker containerタイプ
OSはLinux
Dockerを使えるためあらゆる環境や操作を実現できる イメージの取得のために時間がかかるため、低速
JavaScript
OSはLinux, macOS, Windows
環境がJavaScriptだけに限定されるが、Docker containerタイプに比べ高速に実行できる
Composite Actions
OSはLinux, macOS, Windows
複数のワークフローをまとめたものを1つのアクションとして公開できる
アクションを公開する条件は
アクションは公開リポジトリにあること
各リポジトリには1つのアクションが含まれていること
アクションのメタデータファイル(action.yml または action.yaml)は、リポジトリのルートディレクトリにあること
アクションのメタデータファイルの名前が一意であること
GitHub Marketplace で公開されている既存のアクション名と一致させることはできない
ユーザーまたは組織のオーナーがアクションを公開している場合を除き、名前は GitHub 上のユーザーまたは組織と一致することはできない。例えば、Github という名前のアクションを公開できるのは GitHub 組織のみ。
名前は、既存のGitHub Marketplaceのカテゴリと一致することはできない
GitHub は GitHub 機能の名前を留保します。
などといった条件があるみたいですが、最低限リポジトリを作って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を作るときは、公開すべきかも考えて使っていこうと思います。