Yaml GitLab CI/CD构建/管道仅触发一次,而不是两次
我正在使用GitLab CI/CD编辑:v10.2.2 我的项目中有两个分支:开发和测试 两者都受到保护 devel是默认的分支 工作流程是:我推动devel,然后通过合并请求将devel合并到测试中 这是我的.gitlab-ci.yml v1: 当我在devel上推送修改时,脚本将运行并生成。太好了 现在,分支测试也是如此,下面是我的.gitlab-ci.yml v2: 当我直接在测试上推动修改时,使用测试分支也会发生同样的事情。但是这里的管道是关于测试和只关于测试的,所以当我推动devel时,只会触发一次,然后在测试时合并,这是完美的 现在是.gitlab-ci.yml v3,它只不过是前两个版本的串联:Yaml GitLab CI/CD构建/管道仅触发一次,而不是两次,yaml,gitlab,pipeline,gitlab-ci,continuous-deployment,Yaml,Gitlab,Pipeline,Gitlab Ci,Continuous Deployment,我正在使用GitLab CI/CD编辑:v10.2.2 我的项目中有两个分支:开发和测试 两者都受到保护 devel是默认的分支 工作流程是:我推动devel,然后通过合并请求将devel合并到测试中 这是我的.gitlab-ci.yml v1: 当我在devel上推送修改时,脚本将运行并生成。太好了 现在,分支测试也是如此,下面是我的.gitlab-ci.yml v2: 当我直接在测试上推动修改时,使用测试分支也会发生同样的事情。但是这里的管道是关于测试和只关于测试的,所以当我推动devel时
docker_build:
stage: build
only:
- devel
script:
- docker build -t gitlab.mydomain.com:4567/myproject/app:debug1 .
- docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567
- docker push gitlab.mydomain.com:4567/myproject/app:debug1
docker_build:
stage: build
only:
- testing
script:
- docker build -t gitlab.mydomain.com:4567/myproject/app:debug2 .
- docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567
- docker push gitlab.mydomain.com:4567/myproject/app:debug2
我的期望是:当我推送devel时,然后创建/接受devel到testing的合并请求,devel管道应该在推送之后立即运行,然后测试管道应该在接受合并请求之后立即运行
而是发生了这样的事情:推送之后只会触发devel管道。在我的合并请求之后,将永远不会触发测试管道
我想我遗漏了一些关于GitLab如何工作的信息,但尽管我做了研究,我还是搞不清楚到底是什么
任何帮助都将不胜感激。非常感谢。声明:
您有两个同名docker_build的作业。只需给他们一个不同的名称。您是否检查过gitlab ci文件没有被MR更改?最佳实践是对管道有一个定义,并根据分支在其定义上进行区分,就像使用“only”关键字一样。此外,如果您与MR合作,“测试”管道将触发两次。一次是在创建MR时,第二次是在实际合并代码时。就是这样,非常感谢!不过我读了好几遍这一页。我想我读了太多的文档,有时记不住每一个细节。
docker_build:
stage: build
only:
- testing
script:
- docker build -t gitlab.mydomain.com:4567/myproject/app:debug2 .
- docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567
- docker push gitlab.mydomain.com:4567/myproject/app:debug2
docker_build:
stage: build
only:
- devel
script:
- docker build -t gitlab.mydomain.com:4567/myproject/app:debug1 .
- docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567
- docker push gitlab.mydomain.com:4567/myproject/app:debug1
docker_build:
stage: build
only:
- testing
script:
- docker build -t gitlab.mydomain.com:4567/myproject/app:debug2 .
- docker login -u="$DOCKER_LOGIN" -p="$DOCKER_PWD" gitlab.mydomain.com:4567
- docker push gitlab.mydomain.com:4567/myproject/app:debug2
Each job must have a unique name, ...