Skip to main content

GitHub Actions によるパッケージ化について

パッケージを生成し、GitHub Packagesあるいはその他のパッケージホスティングプロバイダにアップロードするワークフローをGitHub Actionsでセットアップできます。

継続的インテグレーションワークフロー内でのパッケージング

パッケージングのステップは、継続的インテグレーションあるいは継続的デリバリのワークフローの一般的な部分です。 継続的インテグレーションワークフローの終わりにパッケージを作成すれば、プルリクエストに対するコードレビューの間に役立つことがあります。

コードをビルドしてテストした後、パッケージングのステップで実行可能な、あるいはデプロイ可能な成果物を生成できます。 ビルドしているアプリケーションの種類によって、このパッケージは手動でのテストのためにローカルにダウンロードしたり、ユーザーがダウンロードできるようにしたり、ステージングあるいはプロダクションの環境にデプロイしたりできます。

たとえば、Java プロジェクトの継続的インテグレーション ワークフローで mvn package を実行して JAR ファイルを生成できます。 あるいは、Node.jsアプリケーションのためのCIワークフローは、Dockerコンテナを作成するかもしれません。

そうすれば、プルリクエストをレビューする際には、ワークフローの実行を見て生成された成果物をダウンロードできるでしょう。

ワークフロー実行の [成果物] セクションのスクリーンショット。 実行によって生成された成果物の名前 "artifact" が濃いオレンジ色の枠線で囲まれています。

こうすれば、Pull Request中のコードを自分のマシン上で実行できるので、Pull Requestのデバッグやテストに役立ちます。

パッケージを公開するためのワークフロー

継続的インテグレーションのワークフロー中で、テストのためにパッケージ化された成果物をアップロードすることに加えて、プロジェクトをビルドして、パッケージをパッケージレジストリに公開するワークフローを作成できます。

  • GitHub Packages へのパッケージの公開 GitHub Packages は、多くの種類のパッケージについてパッケージ ホスティング サービスとして振る舞うことができます。 パッケージをGitHubのすべてと共有することも、パッケージをプライベートにしてコラボレータやOrganizationと共有することもできます。 詳しくは、「GitHub Packages の概要」を参照してください。

    デフォルトブランチへのプッシュごとに、パッケージを GitHub Packages に公開することをお勧めします。 そうすれば、プロジェクトの開発者は常にデフォルトのブランチからの最新のビルドをGitHub Packagesからインストールして実行及びテストできるようになります。

  • パッケージ レジストリへのパッケージの公開 多くのプロジェクトで、新しいバージョンのプロジェクトがリリースされたときにパッケージ レジストリへの公開が行われます。 たとえば、JARファイルを生成するプロジェクトは、新しいリリースをMaven Centralリポジトリにアップロードするかもしれません。 あるいは、.NETのプロジェクトはnugetのパッケージを生成し、NuGet Galleryへアップロードするかもしれません。

    これは、リリースが作成される度にパッケージをパッケージレジストリに公開するワークフローを作成すれば、自動化できます。 詳しくは、「リポジトリのリリースを管理する」を参照してください。

参考資料