私はGitLab CI/CD(EDIT:v10.2.2)を使用しています。GitLab CI/CDビルド/パイプラインは2回ではなく1回だけ起動されました
私は自分のプロジェクトに2つの支店を持っている:devel
とtesting
の両方が保護されています。
devel
がデフォルトブランチです。
ワークフローは:devel
を押してから、devel
をマージリクエストによってtesting
にマージします。
はここにある私の.gitlab-ci.yml
V1:私は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
、スクリプトが実行されると、ビルドが行われます。完璧。ブランチ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
ブランチを使用して行われます。
ただし、devel
を押してからtesting
のパイプライン(testing
のみ)がトリガーされてから、にマージすると、になります。
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
からのマージ要求を受け入れる前の2つのバージョンの連結よりも何もありません今
.gitlab-ci.yml
V3、 testing
の場合は、devel
パイプラインをプッシュした直後に実行する必要があります。testing
パイプラインは、マージ要求の受け入れ直後に実行する必要があります。
代わりにが発生します。プッシュ後にdevel
パイプラインのみがトリガされます。 testing
パイプラインは、マージ要求後には実行されません。
GitLabの仕組みが分からないと思っていますが、私の研究にもかかわらず何が分かりません。
ご協力いただきますようお願い申し上げます。どうもありがとうございました。
gitlab-ciファイルがMRによって変更されていないことを確認しましたか?ベストプラクティスは、パイプラインの定義を1つしか持たず、ブランチに基づいて区別することです。さらに、MRで作業する場合、「テスト」パイプラインが2回トリガされます。一度MRが作成されると、コードを実際にマージする2回目です。 – secustor