Gitlab-ci 丢失环境变量
Gitlab-ci lost environment variables
我正在 GitLab-ci 上开发一个管道,在第一份工作中我使用 gittools/gitversion
获取我的软件的语义版本。
这里是 /gitversion-ci-cd-plugin-extension.gitlab-ci.yml
的一小段代码(这里是完整的文档 https://gitversion.net/docs/reference/build-servers/gitlab)
.gitversion_function:
image:
name: gittools/gitversion
entrypoint: ['']
stage: .pre
.....
.....
artifacts:
reports:
#propagates variables into the pipeline level
dotenv: thisversion.env
那么我的流水线简化版如下
stages:
- .pre
- install_dependencies
- build
- deploy
include:
- local: '/gitversion-ci-cd-plugin-extension.gitlab-ci.yml'
determineversion:
extends: .gitversion_function
install_dependencies:
image: node:16.14
stage: install_dependencies
script:
- echo ${PACKAGE_VERSION}
build:
image: node:16.14
stage: build
script:
- echo $PACKAGE_VERSION
deploy:
image: bitnami/kubectl
stage: deploy
needs: ['build']
script:
- echo $PACKAGE_VERSION
问题是环境变量 $PACKAGE_VERSION
在前两个作业 install_dependencies
和 build
中起作用。
echo $PACKAGE_NAME; //0.0.1
但是当执行作业 deploy
时,环境变量没有被管道扩展,我从字面上得到了这个
echo $PACKAGE_NAME; //$PACKAGE_NAME
我发现了问题。
在管道的最后一个作业中,我使用 needs
(https://docs.gitlab.com/ee/ci/yaml/#needs) 来建立作业之间的依赖关系。
问题是工件不会自动传递,因为 determineversion
和 deploy
之间没有依赖关系,要修复我这样做:
...
deploy:
image: bitnami/kubectl
stage: deploy
needs: ['determineversion', 'build'] # <------
script:
- echo $PACKAGE_VERSION
...
我添加了determineversion
作为deploy
的依赖,这样$PACKAGE_VERSION
就可以正确打印
我正在 GitLab-ci 上开发一个管道,在第一份工作中我使用 gittools/gitversion
获取我的软件的语义版本。
这里是 /gitversion-ci-cd-plugin-extension.gitlab-ci.yml
的一小段代码(这里是完整的文档 https://gitversion.net/docs/reference/build-servers/gitlab)
.gitversion_function:
image:
name: gittools/gitversion
entrypoint: ['']
stage: .pre
.....
.....
artifacts:
reports:
#propagates variables into the pipeline level
dotenv: thisversion.env
那么我的流水线简化版如下
stages:
- .pre
- install_dependencies
- build
- deploy
include:
- local: '/gitversion-ci-cd-plugin-extension.gitlab-ci.yml'
determineversion:
extends: .gitversion_function
install_dependencies:
image: node:16.14
stage: install_dependencies
script:
- echo ${PACKAGE_VERSION}
build:
image: node:16.14
stage: build
script:
- echo $PACKAGE_VERSION
deploy:
image: bitnami/kubectl
stage: deploy
needs: ['build']
script:
- echo $PACKAGE_VERSION
问题是环境变量 $PACKAGE_VERSION
在前两个作业 install_dependencies
和 build
中起作用。
echo $PACKAGE_NAME; //0.0.1
但是当执行作业 deploy
时,环境变量没有被管道扩展,我从字面上得到了这个
echo $PACKAGE_NAME; //$PACKAGE_NAME
我发现了问题。
在管道的最后一个作业中,我使用 needs
(https://docs.gitlab.com/ee/ci/yaml/#needs) 来建立作业之间的依赖关系。
问题是工件不会自动传递,因为 determineversion
和 deploy
之间没有依赖关系,要修复我这样做:
...
deploy:
image: bitnami/kubectl
stage: deploy
needs: ['determineversion', 'build'] # <------
script:
- echo $PACKAGE_VERSION
...
我添加了determineversion
作为deploy
的依赖,这样$PACKAGE_VERSION
就可以正确打印