我已经尝试了很多不同的变体,但没有任何措辞适合我。
这是 gitlab.ci 项目的示例代码:
cache:
key: $CI_COMMIT_REF_SLUG
publish_image:
stage: publish-image
only: [ dev ]
variables:
IMAGE_TAG: $CI_COMMIT_SHORT_SHA
script:
- echo "IMAGE_TAG=$CI_COMMIT_SHORT_SHA" > $CI_PROJECT_DIR/data.txt
artifacts:
paths:
- $CI_PROJECT_DIR/data.txt
retag_image_stg:
stage: retag-image-stg
only: [ stg ]
script:
- echo $IMAGE_TAG
- ls -lah
- pwd
- cat $CI_PROJECT_DIR/data.txt
- cat data.txt
缓存和工件在下一个管道中不可访问。
API无法使用 - 如果我指示项目和作业 ID,我可以下载工件,但是这个变量每次都会更改,因此要从第一个管道获取工件,我需要首先与不可能的 ID 共享变量。
我心中唯一的建议是以某种方式使用 GIT 中的不同分支来存储工件并检索它们。
我在Gitlab中找到了3种在管道之间共享变量的解决方案:
使用 git 中的某个分支来存储这些变量。
在 Gitlab 中使用 API 调用 PUSH 和 PULL 变量
curl --request PUT --header "PRIVATE-TOKEN: token" --data "value=123" "https://your.gitlab-site.com/api/v4/projects/projectID/variables/TEST_ENV"
curl --request GET --header "PRIVATE-TOKEN: token" "https://your.gitlab-site.com/api/v4/projects/projectID/variables/TEST_ENV" | jq -r '.value'
或者使用 gitlab runner 的 shell 执行器将值直接存储在服务器上的文件中。