web-dev-qa-db-ja.com

gitlabCIランナーのグローバル環境変数

私は複数のプロジェクトにgitlabランナーを設定するように取り組んでおり、すべてのプロジェクトに環境変数を設定できるようにしたいと考えています。 .bashrcユーザーとrootユーザーの両方のgitlab-runnerにグローバル変数を設定しようとしましたが、CIスクリプト中にそれらを認識しませんでした。グローバル環境変数を宣言する正しい場所はどこですか?

8
TristanV

ランナーのconfig.tomlファイルに挿入する環境変数を定義できます。 [[runners]]セクションの 高度なランナー構成ドキュメント を参照してください。

特定のランナーのためだけにGitLabUIで環境変数を指定する方法はないようです。

1
DarkDust

GitLab設定で変数を簡単に設定できます。

プロジェクトレベルの変数は、プロジェクトの[設定]> [CI/CD]に移動し、[変数]というセクションを見つけることで追加できます。

変数がでのみ使用されるようにするには

参照: https://docs.gitlab.com/ee/ci/variables/#variables

0
Michael Schober

VaultKeywhiz などの外部永続シークレットストレージサービスの使用を検討してください

免責事項:私は上記のサービスのいずれにも関連付けられておらず、使用されていません

0
elingerojo

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
0
betontalpfa

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 -
0
Dominik Kummer