GitLab CI/CD build/pipeline 只触发一次而不是两次

GitLab CI/CD build/pipeline only triggered once instead of twice

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

我的项目中有 2 个分支:develtesting

两者都受到保护。

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 时,然后 create/accept 从 develtesting 的合并请求,devel 管道应该 运行 在我推送之后,然后 testing 管道应该 运行 在我接受合并请求之后。

下面是正在发生的事情:推送后仅触发 devel 管道。 testing 管道在我的合并请求后将永远不会被触发。

我想我遗漏了一些关于 GitLab 是如何工作的东西,但尽管我进行了研究,我还是无法弄清楚是什么。

如有任何帮助,我们将不胜感激。非常感谢。

https://docs.gitlab.com/ee/ci/yaml/#jobs 状态:

Each job must have a unique name, ...

您有两个同名工作docker_build。只是给他们一个不同的名字。