チーム内でGitlabプロジェクトを使用しています。各開発者は、クラウド内に独自のKubernetesクラスタを持ち、GitLab内に独自のブランチを持っています。私たちはGitLab-CIを使って新しいコンテナを自動的に構築し、それらをKubernetesクラスタに展開します。GitLabのconcat変数名
variables:
USERNAME: USERNAME
CI_K8S_PROJECT: ${USERNAME_CI_K8S_PROJECT}
REGISTRY_JSON_KEY_FILE: ${USERNAME_REGISTRY_JSON_KEY_FILE}
[...]
stages:
- build
- deploy
- remove
build-zeppelin:
stage: build
image: docker:latest
variables:
image_name: "zeppelin"
only:
- ${USERNAME}@Gitlab-Repo
tags:
- cloudrunner
script:
- docker login -u _json_key -p "${REGISTRY_JSON_KEY_FILE?}" https://eu.gcr.io
- image_name_fqdn="eu.gcr.io/${CI_K8S_PROJECT?}/${image_name?}:latest"
- docker build -t ${image_name_fqdn?} .
- docker push ${image_name_fqdn?}
- echo "Your new image is '${image_name_fqdn?}'. Have fun!"
[...]
だから、初めに、我々はUSERNAME、接頭辞を使用することにより、重要な情報を参照します。私たちは.gitlab-ci.yml
を持っている瞬間
は次のようになります。これは非常にうまくいきますが、問題があるのは、別のユーザーからのプル要求があるたびに修正する必要があるためです。
gitlab-ciファイルをすべての開発者と同じように保ちながら、開発者ごとに異なるgitlab変数を参照する方法を探します。
動作するようには思えません私たちが考えたものを、:
使用する複数のYMLファイル
と=> not supportedお互いにインポートします。プレフィックスとしてGitlab環境変数を組み合わせるようにしてください:
CI_K8S_PROJECT: ${${GITLAB_USER_ID}_CI_K8S_PROJECT}
または
INDIVIDUAL_CI_K8S_PROJECT: ${GITLAB_USER_ID}_CI_K8S_PROJECT
CI_K8S_PROJECT: ${INDIVIDUAL_CI_K8S_PROJECT}
そのイメージはbashシェルを使用していません。 –
YAMLファイルは構造化されているため、処理して組み合わせるのは非常に簡単です。ちょうどチェックアウト後にあなたのvcsによって行われる自動化されたステップ。 – Anthon