導入
こんにちは。エンジニアのYamaです。
前職ではデプロイする資産をリリースする前に社内サーバーのストレージに格納することがルールとなっていました。
元々ソースコードがバージョン管理されておらず、資産も各自のローカルPC内の環境でビルドしていました。
そのため、その資産を保存しておくルールがありました。
私が離職する前にはGitHubでソースを管理し、リリースごとにタグを切る運用にしていていましたが、そのルールが撤廃されることはありませんでした。
ただ、少なくとも各自の環境でビルドしていること自体、不要な差分が出てしまう原因でもありましたので、GitHub Actions上で、ビルドを実行することにしました。
GitHub Actions
中身
主にSpring bootのプロジェクトが多かったので、今回はmvn package
で資産を作成する際のGHAになります。
name: Build hogehoge
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
outputs:
targetwar: ${{ steps.builder.outputs.targetwar }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '11'
- name: building
id: builder
run: |
mvn package
TARGET_WAR=$(ls ./target/hogehoge.war)
echo "targetwar=${TARGET_WAR}" >> "$GITHUB_OUTPUT"
- uses: actions/upload-artifact@v4
with:
name: target-war
path: ${{ steps.builder.outputs.targetwar }}
簡単な解説
実行タイミング
上記ソースのこの部分が実行タイミングになります。
on:
push:
branches:
- master
このGHAが実行されるのは、master
ブランチにプッシュされたタイミングになります。
私が担当していたプロジェクトは大抵master
ブランチを本番リリース用のブランチとして利用していました。
ワーカー
ワーカーはyamlに記載の通りubuntu-latest
としました。
各ステップ
actions/checkout@v4
ここで、ソースをチェックアウトしてきています。
actions/setup-java@v4
Javaのバージョンの設定等をしています。
building
Mavenコマンドを実行し、Warファイルを作成しています。
作成したファイル名を取得するようにしています。
actions/upload-artifact@v4
building
ステップで作成したWarをGithub上にアップロードしています。
アップロードされた資産
アップロードされた資産はGithub上からダウンロードが可能です。
以下の画像のようにダウンロードすることができます。
最後に
今回はGitHub Actionsでリリース資産を作成して、GitHub上からダウンロードする方法を紹介しました。
自動でビルドできるのは本当に助かりますね。
ぜひ参考にしてみてください。