目的

CI 時に呼び出すシェルスクリプト内で、CI 時でなくてもブランチ名を利用したい。

対応方法

#!/bin/bash
set -Ceu

if [ "${CI_COMMIT_REF_NAME:-UNDEF}" = "UNDEF" ]; then
  CI_COMMIT_REF_NAME=$(git rev-parse --abbrev-ref HEAD)
fi

## 以下の書き方は GitLab 16.0 以降使えなくなる
# if [ "${CI_BUILD_REF_NAME:-UNDEF}" = "UNDEF" ]; then
#   CI_BUILD_REF_NAME=$(git rev-parse --abbrev-ref HEAD)
# fi

bash のオプション

  • C: リダイレクト時に既存のファイルを上書きしない。
  • e: コマンドがゼロ以外のステータスを返した場合、スクリプトを即座に終了する。
  • u: 未定義の変数を参照時にエラー。

参考サイト