GitタグからGitHubリリースを自動的に公開する方法
GitHubのリリースは、エンドユーザーがバージョン管理されたソフトウェアバイナリをダウンロードするためのアクセスしやすい方法を提供します。
GitHubのリリースは、エンドユーザーがバージョン管理されたソフトウェアのバイナリをダウンロードするための簡単な方法を提供します。手動で作成することもできますが、リポジトリ内で作成したリリースタグを使用してGitHub Actionsに自動的にビルドさせる方がはるかに簡単です。
タグ付きリリースの使用
タグはGitの既存の機能であり、GitHubによって提供されるリリースにより拡張サポートが提供され、関連する変更履歴と一緒にバイナリをホストする場所を提供します。
ブランチを作成するのと非常に似た方法でタグを作成できますが、タグは固定された地点であり、動くことはなく、常に特定のコミットを指し示します。これはバージョン付きリリースを作成するのに便利で、ほとんどの人はセマンティックバージョニング形式(メジャー.マイナー.パッチ)を使用してタグを作成します。
タグはGitHubにプッシュすることができ、他の自動化ワークフローで使用することができます。この場合、タグ付きリリースを含むコミットを監視し、自動的にビルドアーティファクトをリリースに公開するGitHub Actionsスクリプトを設定します。
GitHub Actionsの設定
まず、動作するGitHub Actionsビルドがあり、ビルドスクリプトが正常に機能していることを確認してください。ワークフローの正確な設定は、構築しているプロジェクトの種類によって異なりますが、一般的に、同時に2つの問題をデバッグしたくないので、動作する成果物を既に持っているときにリリース公開を追加するべきです。GitHub Actionsビルドの設定に関するガイドを読んで、詳細を学んでください。
最初にすべきことは、Actionsスクリプトの「on」セクションを編集して、タグが作成されたときにも実行されるようにすることです。デフォルトでは、おそらくリリースやマスターブランチを追跡するために「push」イベントが設定されています。タグを追加し、フィルターを設定する必要があります。すべてのタグについては、単純にワイルドカードを使用します。
ワークフローの最後に、すべてが構築された後、リリースエントリを作成します。これは二段階のステップです。まず、すべてのメタデータを持つ新しいリリースオブジェクトを作成する必要があります。その後、出力された公開URLを使用して、アーティファクトをアップロードできます。複数のアーティファクトがある場合は、複数のアップロードステップを作成できます。
いずれにせよ、ワークフローがタグによって実行されている場合のみ、これらのステップを実行する必要があります。これは、単純なものでできます。
ifチェックし、それが
github.refオブジェクトはタグであり、ワークフローをトリガーしたブランチまたはタグの参照名を保存します。
最初のステップは、Releaseオブジェクトを作成することであり、次のステップで行うことができます。GitHubトークンは手動で作成する必要はなく、常にActionsスクリプトから参照できる特別なトークンです。
- 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に保存されており、ワークフローが適切に動作するためには必ず存在する必要があるということです。このファイルは、各タグで編集してリリースページに表示されるMarkdownを変更できます。コミットメッセージを使って自動的に生成するツールもありますが、ほとんどのチームは自分たちの方法で管理しているでしょう。
次に、アーティファクトのアップロードを開始できます。これは前のステップからのアップロード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ファイルやその他の種類のファイルを公開する場合は、これを変更する必要がありますが、リリースページのビジュアルにのみ影響します。
これで、変更を Actions ワークフローにコミットし、新しいタグを作成して GitHub にプッシュできます。マスターブランチから実行されるのではなく、そのタグのために実行される新しいワークフロー実行が作成されるのが表示されるはずです。
完了すると、GitHubのサイドバーにリリースが表示されます。





