GitLab CI/CD 构建/管道仅触发一次而不是两次

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

我正在使用 GitLab CI/CD(编辑:v10.2.2)。

我的项目中有 2 个分支:

devel
testing

两者都受到保护。

devel
是默认分支。

工作流程是:我推送

devel
,然后通过合并请求将
devel
合并到
testing

这是我的

.gitlab-ci.yml
v1:

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

当我在

devel
上推送修改时,脚本将运行并进行构建。完美。

现在与分支

testing
一样,这是我的
.gitlab-ci.yml
v2:

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

当我直接在

testing
上推送修改时,使用
testing
分支会发生同样的事情。 但是这里当我按下
testing
时,
testing
上的管道(以及仅在
devel
上,所以只有一次)也会被触发,然后在
testing
上合并,这是完美的

现在

.gitlab-ci.yml
v3,它只不过是之前两个版本的串联:

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
管道应该在我推送后立即运行,然后
testing
管道应该在我的合并请求接受后立即运行。

相反,这是正在发生的事情:推送后仅触发

devel
管道。在我的合并请求之后,
testing
管道将永远不会被触发。

我想我遗漏了一些关于 GitLab 工作原理的信息,但尽管我进行了研究,我还是无法弄清楚是什么。

任何帮助将不胜感激。非常感谢。

yaml gitlab pipeline gitlab-ci continuous-deployment
1个回答
1
投票

https://docs.gitlab.com/ee/ci/jobs/ 指出:

Each job must have a unique name, ...

您有两个同名的工作

docker_build
。只需给它们起一个不同的名字即可。

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