带有变量的env文件不会在gitlab-ci的后续阶段保留

问题描述 投票:0回答:1

我正在尝试使用

kaniko
在我的 gitlab-ci-pipeline 中实现构建 docker-image 的阶段。在构建过程中,我需要当前的 git-hash,但
kaniko
-image 不包含 git。因此,我想在我的管道中有一个单独的阶段,用于将当前的 git-hash 保存在环境变量中并使用 dotenv-artifact 转发它:

prepare_docker_build_job:
  stage: prepare_docker
  extends:
    - .rules:new_push_pipelines
  <<: *before_script_template
  needs: [test_job]
  script:
    - echo "CUR_GIT_VERSION=$(git describe --always --dirty)" >> git_variables.env
  artifacts:
    reports:
      dotenv: git_variables.env

之后,我应该能够在构建作业中访问它:

docker_build_job:
  stage: docker_build
  needs:
    - job: prepare_docker_build_job
      optional: false
      artifacts: true
  extends:
    - .rules:new_push_pipelines
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - echo "Current git version is $CUR_GIT_COMMIT"
    - echo "Current project path is $CI_PROJECT_DIR"
    - /kaniko/executor --context "$CI_PROJECT_DIR"
      --cache=true
      --dockerfile "${CI_PROJECT_DIR}/docker/docker_setup"
      --destination "${CI_REGISTRY_LOCATION}:${CI_COMMIT_TAG}"
      --build-arg CUR_GIT_COMMIT=$CUR_GIT_COMMIT

但是,在

docker_build
的设置部分,我可以看到现有文件
git_variables.env
被删除,随后
$CUR_GIT_COMMIT
未定义。我是否忘记了任何允许
docker_build
保留环境文件的内容?

gitlab-ci
1个回答
0
投票

正如@kofemann所提到的,只要在后续作业中引用

$CUR_GIT_VERSION
,这就会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.