shwld.io

自作のGitHub Actionsを公開してみよう


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つのアクションとして公開できる

アクションを公開する条件は

などといった条件があるみたいですが、最低限リポジトリを作って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を作るときは、公開すべきかも考えて使っていこうと思います。

Line Notifyサービス終了。移行先どうしよう
shwld
2024/10/08
リモートワーク下のビデオ通話における音声デバイスの変遷ログ
shwld
2024/05/10
NestJSのGraphQLサーバにApplication Insightsのトレースを仕込む
shwld
2024/02/19
GitHub Copilotを効率よく使うために
shwld
2024/01/29