私は複数のプロジェクトにgitlabランナーを設定するように取り組んでおり、すべてのプロジェクトに環境変数を設定できるようにしたいと考えています。 .bashrc
ユーザーとroot
ユーザーの両方のgitlab-runner
にグローバル変数を設定しようとしましたが、CIスクリプト中にそれらを認識しませんでした。グローバル環境変数を宣言する正しい場所はどこですか?
ランナーのconfig.toml
ファイルに挿入する環境変数を定義できます。 [[runners]]
セクションの 高度なランナー構成ドキュメント を参照してください。
特定のランナーのためだけにGitLabUIで環境変数を指定する方法はないようです。
GitLab設定で変数を簡単に設定できます。
プロジェクトレベルの変数は、プロジェクトの[設定]> [CI/CD]に移動し、[変数]というセクションを見つけることで追加できます。
変数がでのみ使用されるようにするには
export MY_VAR="FOO"
をgitlab-runner
の.bashrc
に追加しましたが、機能します。
echo export MY_VAR=\"FOO\" >> /home/gitlab-runner/.bashrc
どのタイプのエグゼキュータを使用していますか? (Shell、kubernetes、docker-ssh、parallels ...)私はShellexecutorを使用しています。
gitlab-runner
が使用しているシェルのタイプを確認してください。 ( 現在作業中のシェルを特定する方法 )そして 適切なrc
ファイル を編集します。
Gitlab CI Runnerユーザー を確認してください。
.gitlab-ci.yml
のスクリプトにenv
を追加して、さらにデバッグするためにすべての環境変数をダンプすることをお勧めします。
#.gitlab-ci.yml
job:
script: env
gitlab-runner exec docker --help
が示すように、コマンドラインで直接gitlab-runnerに環境変数を挿入することもできます。
オプション:.. --envvalueビルド環境に挿入されたカスタム環境変数[$ RUNNER_ENV]。
これは、スクリプトでどのように使用するかの小さな例です。
必要に応じて宣言を変更します。
declare jobname="your_jobname"
declare runnerdir="/path/to/your/repository"
Envファイルをbash配列に取得します。
[ -f "$runnerdir/env" ] \
declare -a envlines=($(cat "$runnerdir/env"))
declare -a envs=()
for env in "${envlines[@]}"; do
envs+=(--env "$env")
done
そして最後にそれをgitlab-runnerに渡します。
[ -d "$runnerdir" ] && cd "$runnerdir" \
&& gitlab-runner exec docker "${envs[@]}" $jobname \
&& cd -