Gitlab CI脚本:排除分支

22

我正在尝试改进项目构建脚本,该脚本描述在YML文件中,改进似乎相当琐碎,但意外破坏自动构建的想法有点让人担忧。

目前在项目中有几个分支、版本标签和其他内容。

一个开发分支,由运行程序创建,会很有用,因为在虚拟机之间复制庞大的项目以在不同平台上测试构建并不方便。所以,我想要将“prj-dev”分支从构建中排除出去。

这就是问题所在:

stages:
 - build
 - linuxbuild
job:
 tags:
 - win2008build
 stage: build
 script:
  # something complex

job1:
 tags:
 - linux
 stage: linuxbuild
 script:
  # something else complex

我谷歌搜索并找到了一个解决方案,类似于:

stages:
 - build
 - linuxbuild
job:
 tags:
 - win2008build 
 branches:
  except:
    - *dev-only

但是看起来我们的管道与众不同,标签不是Git标签,而是管道标签。因此,我考虑使用以下配置:

stages:
 - build
 - linuxbuild
job:
 tags:
 - win2008build 
 except:
   branches:
    - *dev-only

这意味着“像往常一样构建,但不是我的分支”。试图以这两种方式尝试会出现复杂情况,我确定有人肯定知道确切的方法。

所以,如果可以的话,--我如何在不改变管道的情况下排除我的dev分支?这是否可能?


你不能在不更改 .gitlab-ci.yml 的情况下进行操作。 - djuarezg
哦,非常清楚!我问题中的那些片段是.gitlab-ci.yml文件的一部分,该文件正在项目中使用。我想知道更改文件的正确方法。 - MasterAler
具体是什么出了问题?乍一看似乎没什么问题。 - Jakub Kania
1个回答

43

您需要做的就是在gitlab-ci.yml文件中使用except,并像这样直接在下面添加您的分支:

mybuild:
    stage: test
    image: somedockerimage
    script:
        - some script running
    except:
        - branch-name

这个项目在我这里运行得很好,没有任何问题。


4
你可以使用“only”代替“except”,以指定一个分支仅用于构建。 - blurryroots
@Thomas,在GitLab 13版本中,这个怎么运作? - Miltex
1
我想为所有标签构建。除了主分支。 - Miltex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接