Git タグから GitHub リリースを自動的に公開する方法

Git タグから GitHub リリースを自動的に公開する方法

GitHub リリースは、エンド ユーザーがバージョン管理されたソフトウェア バイナリをダウンロードするための簡単にアクセスできる方法を提供します。手動で作成することもできますが、リポジトリで作成されたリリース タグを使用して、GitHub Actions で自動的に作成する方がはるかに簡単です。

タグ付きリリースの使用

タグは Git の既存の機能であり、GitHub のリリースで提供される拡張サポートにより、関連する変更ログを含むバイナリをホストする場所が提供されます。

タグはブランチを作成するのと同じように作成できますが、タグは移動せず、常に特定のコミットを指す固定点である点が異なります。これはバージョン付きリリースを作成する場合に便利で、ほとんどの人はセマンティック バージョン管理形式 (Major.Minor.Patch) を使用してタグを作成します。

タグは GitHub にプッシュでき、他の自動化ワークフローで使用できます。この場合、タグ付けされたリリースを含むコミットをリッスンし、ビルド アーティファクトをリリースに自動的に公開する GitHub Actions スクリプトをセットアップします。

GitHub アクションのセットアップ

まず、GitHub Actions ビルドが動作していること、およびビルド スクリプトが適切に機能していることを確認します。ワークフローの正確な設定は、構築しているプロジェクトの種類によって異なりますが、一般に、2 つの問題を同時にデバッグすることは望ましくないため、すでに動作するアーティファクトが得られたら、リリースの公開を追加する必要があります。詳細については、GitHub Actions ビルドのセットアップに関するガイドをご覧ください。

最初に行うことは、アクション スクリプトの「on」セクションを編集して、タグの作成時にも実行されるようにすることです。デフォルトでは、おそらくリリースまたはマスター ブランチを追跡するための「プッシュ」イベントがあります。タグを追加し、フィルターを設定する必要があります。すべてのタグについては、単純にワイルドカードを使用します。

すべてが構築された後、ワークフローの最後に、リリース エントリを作成します。これは 2 つの部分からなる手順です。まず、すべてのメタデータを含む新しい Release オブジェクトを作成する必要があります。次に、出力された公開 URL を使用して、アーティファクトをアップロードします。複数のアーティファクトがある場合は、複数のアップロード ステップを作成できます。

いずれの場合も、タグによってワークフローが実行されている場合にのみ、これらのステップを実行する必要があります。これは簡単なチェックで行うことができifgithub.refオブジェクトがワークフローをトリガーしたブランチまたはタグの参照名を格納するタグであるかどうかをチェックします。

最初のステップは Release オブジェクトを作成することです。これは次のステップで実行できます。GitHub トークンは手動で作成する必要はありません。これは、アクション スクリプトからいつでも参照できる特別なトークンです。

- name: Create Release

if: startsWith(github.ref, 'refs/tags/')

uses: actions/create-release@v1

id: create_release

with:

draft: false

prerelease: false

release_name: ${{ github.ref }}

tag_name: ${{ github.ref }}

body_path: CHANGELOG.md

env:

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

ここで、リリースの変更ログは に保存されていることに注意してください。ワークフローが適切に実行されるためにはCHANGELOG.md、このログが存在する必要があります。これを各タグで編集することで、GitHub がリリースページに表示するマークダウンを変更できます。コミット メッセージを使用してこれを自動的に生成するツールはありますが、ほとんどのチームはいずれにせよ、これを管理する独自の方法を持っています。

次に、アーティファクトのアップロードを開始できます。これでは、前の手順のアップロード URL が使用され、アセットの表示名とともにその URL が見つかるパスを定義する必要があります。

- name: Upload Release

if: startsWith(github.ref, 'refs/tags/')

uses: actions/upload-release-asset@v1

env:

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

with:

upload_url: ${{ steps.create_release.outputs.upload_url }}

asset_path: Oxide.Ext.Sanctuary/bin/Release/net48/Oxide.Ext.Sanctuary.dll

asset_name: Oxide.Ext.Sanctuary.dll

asset_content_type: application/octet-stream

ここでは、コンテンツ タイプが に設定されていることに注意してくださいoctet-stream。これは、実行可能ファイルや DLL などのバイナリ データでは一般的です。ZIP またはその他の種類のファイルを公開する場合は、これを変更する必要がありますが、影響を受けるのはリリース ページのビジュアルのみです。

これで、変更をアクション ワークフローにコミットし、新しいタグを作成して GitHub にプッシュできます。新しいワークフロー実行が作成されていることがわかります。ただし、マスター ブランチから実行されるのではなく、タグによって実行されています。

完了すると、GitHub サイドバーにリリースが表示されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です