GitLab CI/CD build/pipeline 只触发一次而不是两次
GitLab CI/CD build/pipeline only triggered once instead of twice
我正在使用 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
时,然后 create/accept 从 devel
到 testing
的合并请求,devel
管道应该 运行 在我推送之后,然后 testing
管道应该 运行 在我接受合并请求之后。
下面是正在发生的事情:推送后仅触发 devel
管道。 testing
管道在我的合并请求后将永远不会被触发。
我想我遗漏了一些关于 GitLab 是如何工作的东西,但尽管我进行了研究,我还是无法弄清楚是什么。
如有任何帮助,我们将不胜感激。非常感谢。
https://docs.gitlab.com/ee/ci/yaml/#jobs 状态:
Each job must have a unique name, ...
您有两个同名工作docker_build
。只是给他们一个不同的名字。
我正在使用 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
时,然后 create/accept 从 devel
到 testing
的合并请求,devel
管道应该 运行 在我推送之后,然后 testing
管道应该 运行 在我接受合并请求之后。
下面是正在发生的事情:推送后仅触发 devel
管道。 testing
管道在我的合并请求后将永远不会被触发。
我想我遗漏了一些关于 GitLab 是如何工作的东西,但尽管我进行了研究,我还是无法弄清楚是什么。
如有任何帮助,我们将不胜感激。非常感谢。
https://docs.gitlab.com/ee/ci/yaml/#jobs 状态:
Each job must have a unique name, ...
您有两个同名工作docker_build
。只是给他们一个不同的名字。