12

我正在尝试改进 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

...这意味着“像往常一样构建,但不是我的分支”。两种方法都有复杂的尝试,我很确定有人应该肯定知道这个食谱。

因此,如果您愿意,我如何在不更改管道的情况下排除我的开发分支,仅配置?有可能吗?

4

2 回答 2

25

您需要做的就是exceptgitlab-ci.yml文件中使用并直接在下面添加分支,如下所示:

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

这在我的项目上工作没有问题。

于 2018-07-14T17:21:52.123 回答
0

@blurryroots 有点...在商业部署的情况下,您倾向于为特定功能分支并合并回主控。从 master 创建的分支可以称为任何东西,例如“Dev1-Metrics-Feature-Logger”,这反过来意味着如果您要使用“Only”标签让管道仅在开发分支上运行,您需要更改脚本每次创建新分支时,“except”会更好地工作 > 对所有“EXCEPT”master 运行测试,然后当您合并到 master 时,为 master 设计的其他作业将启动。

于 2020-10-29T10:13:12.873 回答