如何解决Gitlab ci cd 删除了合并请求的工件
在我的 gitlab ci cd 管道中,我有两个工作:
- build :创建从分支开发到发布分支的拉取请求后,将触发此作业。我将生成我的项目发行版(vuejs 项目),生成作为环境变量的版本(版本将从目标分支名称中检索。如果目标是 release/1.0.0,则版本将为 1.0.0)
- publish :此作业将获取工件并基于它创建一个 docker 映像。在上一个作业中创建的版本将是图像标签。
build:
image: node:15.5.1-alpine3.10
stage: build
before_script:
# retrieve the new version from the branch name
- version="$(echo $CI_MERGE_REQUEST_TARGET_BRANCH_NAME | cut -d '/' -f 2)"
- echo "The new version to release is $version"
script:
- npm install -g @vue/cli
- npm install
- npm run build
# write the version to the build.env so it can be used in the next jobs
- echo "BUILD_VERSION=$version" >> build.env
- cat build.env
artifacts:
when: on_success
paths:
- dist
reports:
dotenv: build.env
# Run this job only when merge request on release and master branches
rules:
- if: ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^release\/\d+\.\d+\.\d+$/) && ($CI_PIPELINE_SOURCE == "merge_request_event")
正如我们在下面看到的,版本 BUILD_VERSION 环境变量已经生成。
publish:quality:
stage: publish
image: docker:19.03.12
services:
- docker:19.03.12-dind
variables:
CI_REGISTRY_IMAGE: 'mouhamedali/co-training-gui'
before_script:
- echo " The build version is $BUILD_VERSION"
- docker login --username mouhamedali --password-stdin < $GITLAB_DOCKER_HUB_TOKEN
script:
- docker pull $CI_REGISTRY_IMAGE || true
- echo "Building the docker image $CI_REGISTRY_IMAGE:$BUILD_VERSION"
- docker build --cache-from "$CI_REGISTRY_IMAGE" -t "$CI_REGISTRY_IMAGE:$BUILD_VERSION" .
- docker push $CI_REGISTRY_IMAGE:$BUILD_VERSION
dependencies:
# get artifacts only from the build job
- build
only:
- /^release\/\d+\.\d+\.\d+$/
但是在下一个发布的作业中,BUILD_VERSION 是空的。
如果我更改了在将开发合并到发布后触发的构建作业的规则,它可以正常工作并且版本存在但如果我将规则更改为 merge_requests 则不存在,所以我不知道为什么它在第二种情况。
ci-cd 文件:https://gitlab.com/co-training/co-training-gui/-/blob/develop/.gitlab-ci.yml
解决方法
artifacts:reports:dotenv
/dependencies:
不支持使用 needs:
。
您可以看到 this issue 要求对此进行更好的记录(评论中有关此特定案例的详细信息)
我发现最好将 .env
文件作为普通工件生成,然后在后续作业中 source
它们。
build:
#...
artifacts:
paths:
- build.env
release:
before_script:
- source build.env
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。