我們在團隊中使用Gitlab項目。每個開發人員在雲中都有自己的Kubernetes集羣,並在GitLab中擁有自己的分支。我們使用GitLab-CI自動構建新容器並將它們部署到我們的Kubernetes集羣。GitLab中的Concat變量名稱
目前,我們有一個.gitlab-ci.yml
看起來是這樣的:
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!"
[...]
所以在開始的時候,我們通過使用用戶名前綴參考的重要資料。這很有效,但是有問題,因爲我們需要在來自其他用戶的每次請求之後糾正它們。
因此,我們尋找一種方法來保持gitlab-ci文件對每個開發者都一樣,同時仍然引用一些對每個開發者都不同的gitlab變量。
事情,我們想過,這似乎不工作:
使用多個陽明文件,並將它們導入到對方=>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 shell。 –
由於YAML文件是結構化的,因此處理和組合它們非常簡單。只需做一個自動化的步驟,完成後您的vcs完成。 – Anthon