GitLab CI - 添加标签时避免构建 [英] GitLab CI - avoid build when adding tag

查看:50
本文介绍了GitLab CI - 添加标签时避免构建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何防止在添加 git 标签时触发 gitlab ci 管道?我在本地运行这个命令(而不是在 gitlab-ci 作业中)

git tag -a "xyz"

然后推送标签;这会触发各种管道.我想排除其中一些管道运行.

我正在尝试从诸如

如果您想为选定的提交跳过 CI,那么您可以使用 git push -o ci.skip,灵感来自这篇文章

How do I prevent a gitlab ci pipeline being triggered when I add a git tag? I'm running this command locally (as opposed to within a gitlab-ci job)

git tag -a "xyz"

and then pushing the tag; and this triggers various pipelines. I want to exclude some of those pipelines from running.

I'm trying variations on ideas from questions such as this; that question is using only, I'm wanting to exclude, so I'm trying except. The answers there have two variants, one with refs one without.

build:  
  # ... my work here ...  
  except:
    - tags


build:  
  # ... my work here ...  
  except:
    refs:
      - tags

Neither seem to have any effect; I add a tag, the build still happens.

My understanding may be completely awry here as there seem to be three possible meanings of the word tags and when reading docs or examples I'm not always sure which meaning is applicable:

  1. Git tags applied using git tag
  2. Gitlab CI tags used to determine which runners pick a job
  3. The ref identifier of a commit used to trigger a pipeline via the REST API. This is usually a branch name, but could be a git tag.

I'm interested in controlling what happens if the first case. It does seem clear from comments so far that "except: -tags" is not relevant to my case, so is there any approach that does work?

解决方案

Except tags is exactly what you should use if you want to skip build for tags.

You need to be sure to understand commit vs branches vs tags

To illustrate what happens when you push tagged commit to gitlab I did as follows:

  1. Created .gitlab-ci.yml with following content:

tests_always_run:
    script:
      - echo I should always execute
tests_except_tags:
    script:
      - echo I skip tagged triggers
    except:
      - tags

  1. Commited changes, tagged commit and pushed with --follow-tags to make sure tag is also propagated to server:

git add .gitlab-ci.yml
git commit -m 'my great yml with except tags'
git tag -a "abc" -m "Test tag"
git push --follow-tags

Ilustrated results:

If you want to skip CI for selected commit then you could use git push -o ci.skip, inspired by this article

这篇关于GitLab CI - 添加标签时避免构建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆