GitHub Actions のリリース手順を自動化する GitHub Actions

開発
GitHub Actionsについて - GitHub ヘルプ

GitHub Actions の種類にはDockerコンテナ版とJavaScript版があります。

アクションについて - GitHub ヘルプ
GitHub Actions では、カスタムソフトウェア開発のライフサイクル (SDLC) にわたるワークフローを GitHub リポジトリに直接作成することができます。

元々はDocker版しかなかったようですが、JavaScript版は起動がとても早く、これからはJavaScript版が主流になっていくと思います。

そのJavaScript版ですが、実行してもらうためにはビルド済みのソースやすべての依存モジュールがコミットされている必要があります

一方でこれらは開発用のブランチにはコミットすべきではありません

開発者のシステムごとに適切なバイナリが異なる場合があったり、cloneする際に開発に必要ないファイルが含まれたりするためです。

上記のことから GitHub Actions をリリースする手順は割と大変です。

リリースするまでの手順

  1. 開発用ブランチでローカルにて開発を行う
  2. リリース用にビルドする
  3. ビルドしたファイルや node_modules のような依存モジュールも含めて実行に必要なコードをリリース用ブランチにコミットする
  4. タグを付与する(メジャーやマイナーバージョンを考慮)
  5. GitHub に Push
  6. リリース

開発を終えてからリリースを完了するまでに行うことは多いです。

とくに GitHub が推奨している Semantic versioning を考慮してタグを張り直しを行っている GitHub Actions はほとんど見かけたことがありません。

About actions - GitHub Help
GitHub Actions enable you to create custom software development life cycle (SDLC) workflows directly in your GitHub repository.

GitHub Actions を使用して自動化

Release GitHub Actions を使用することで手順は以下のように簡略化されます。

  1. 開発用ブランチでローカルにて開発を行う
  2. リリース(タグを作成)
  3. 自動化された手順が完了するのを待つ
    1. リリース用にビルドする
    2. ビルドしたファイルや node_modules のような依存モジュールも含めて実行に必要なコードをリリース用ブランチにコミットする
    3. タグを付与する(メジャーやマイナーバージョンを考慮)
    4. GitHub に Push

開発者が行うことは

  • GitHub Actions の開発
  • GitHub Releases からリリース(タグを作成)

だけです。

このアクションはタグ作成をトリガーとして起動し、以下を実行して実行に必要なファイルを用意します。

yarn install
yarn build
yarn install --production
rm -rdf .[!.]*
...
rm -rdf _config.yml
technote-space/release-github-actions
GitHub Action to auto release GitHub Action. Contribute to technote-space/release-github-actions development by creating an account on GitHub.

それらをGitHub Actions用に作成したブランチにコミットした後、すでに付与されているタグを張替えてプッシュします。

もし公開済みのリリースがある場合はタグの張替えで下書き状態になるため、再度公開させます。

使用方法

タグ作成をトリガーとする workflow を用意します。

technote-space/release-github-actions
GitHub Action to auto release GitHub Action. Contribute to technote-space/release-github-actions development by creating an account on GitHub.
on: create
name: Release
jobs:
  release:
    name: Release GitHub Actions
    runs-on: ubuntu-latest
    steps:
      - name: Release GitHub Actions
        uses: technote-space/release-github-actions@v1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

あとは GitHub Actions を開発し、GitHub Releases のページからリリースを作成(タグを作成)します。

リリースの作成 - GitHub ヘルプ
パッケージソフトウェア、リリースノート、バイナリファイルを他の人が使用できるように提供するリリースを作成できます。

テスト用リリース

更新を公開する前に実際に動作させてみたい場合、 TEST_TAG_PREFIX を設定してください。

technote-space/release-github-actions
GitHub Action to auto release GitHub Action. Contribute to technote-space/release-github-actions development by creating an account on GitHub.

例えば TEST_TAG_PREFIX: test/ を設定した場合、 test/v1.2.3 のようなタグを付与すると

  • test/v1
  • test/v1.2
  • test/v1.2.3

のバージョンでアクションが利用できるようになります。

uses で上記タグを指定して動作を確認し、問題なければ改めて v1.2.3 のようなタグを付与します。

スクリーンショット

オプション

この GitHub Actions は 以下のテンプレートから作成されたものを想定しています。

actions/typescript-action
Contribute to actions/typescript-action development by creating an account on GitHub.

ビルド用コマンドがより複雑なものであったり、不要なファイルが他にある場合はオプションで設定を変更してください。

technote-space/release-github-actions
GitHub Action to auto release GitHub Action. Contribute to technote-space/release-github-actions development by creating an account on GitHub.

アクションの再実行

何らかの理由で再度実行したい場合、タグを付け直すことで再度実行できます。

コメント

タイトルとURLをコピーしました