【发布时间】:2022-01-03 18:28:31
【问题描述】:
需要 GitLab 专家的帮助。我在下面有一个以下管道。 我希望“sync_s3:prod”作业只有在我推送新的 git 标签时才会运行。但是gitlab同时触发了 工作。为什么它的行为是这样的?我只为一项工作创建 $git_commit_tag 规则。有什么想法吗?
stages:
- sync:nonprod
- sync:prod
.sync_s3:
image:
name: image
entrypoint: [""]
script:
- aws configure set region eu-west-1
- aws s3 sync ${FOLDER_ENV} s3://img-${AWS_ENV} --delete
sync_s3:prod:
stage: sync:prod
rules:
- if: $CI_COMMIT_TAG
changes:
- prod/*
extends: .sync_s3
variables:
AWS_ENV: prod
FOLDER_ENV: prod/
tags:
- gaming_prod
sync_s3:nonprod:
stage: sync:nonprod
rules:
- changes:
- pp2/*
extends: .sync_s3
variables:
AWS_ENV: nonprod
FOLDER_ENV: pp2/
tags:
- gaming_nonprod
【问题讨论】:
-
好吧,我误解了你的问题。查看此链接:stackoverflow.com/questions/42796018/…
-
But gitlab trigger both jobs什么时候?在标签管道上还是在提交管道上? -
@KamilCuk 当我执行“git push origin newtag”时,它会触发这两个工作。但正如你所见,我只为一项工作编写了这条规则。
-
所以你推送了一个标签?您说
I expect "sync_s3:prod" job will run only when i will push new git tag,这是真的,您的工作是在标签上运行的,似乎您的要求得到了满足。所以你想不在标签上运行other作业? -
是的,我不想在标签上运行其他作业。我想要完全执行的操作: - 仅当我更改“pp2”文件夹中的文件时才运行非生产作业。 - 仅当有新的 git 标签时才运行 prod 作业。
标签: gitlab gitlab-ci pipeline cicd