動かざることバグの如し

近づきたいよ 君の理想に

GitLab CIでスクリプトからアーティファクトファイル名に環境変数を渡したい

環境

  • GitLab 18.6

やりたいこと

GitLabCIを使ってビルドして成果物をアーティファクトとして保存したかった。

保存するときにバージョンを取得しファイル名に組み込みたかったのだが、

script:
- yarn install --frozen-lockfile
- yarn build
- VERSION=$(node -p "require('./manifest.json').version")
- echo $VERSION
artifacts:
name: "my-chrome-extension-v$VERSION" # ここに値が入らない
paths:
- dist/

なぜかダウンロードしたときのファイル名は「my-chrome-extension-v.zip」となってしまいVERSION環境変数の値が反映されない。

対策

GitLab 16.4より $GITLAB_ENV環境変数を渡すことで script セクションから artifactscache セクションに環境変数を渡すことができるようになった。

今回のケースだと以下のようになる。

script:
- yarn install --frozen-lockfile
- yarn build
- VERSION=$(node -p "require('./manifest.json').version")
- echo "VERSION=$VERSION" >> $GITLAB_ENV # ← これを追加
- echo $VERSION
artifacts:
name: "my-chrome-extension-v$VERSION"
paths:
- dist/

これが該当のMR

gitlab.com

やったね