2016-11-25 37 views
2

我一直在使用Gitlab,现在建立了一个构建服务器。当我换机器(笔记本电脑/个人电脑)时,我经常承诺并推动将我的工作保存到我的gitlab服务器,因为内容定期备份到云端。Gitlab亚军有条件运行取决于提交消息

构建服务器,效果很好,但完整的项目是建立在每一个推动。作为它的一个相当大的一个,我愿做这样的事情:

  • 推与评论“发布1.2.3.4”提交 - > Gitlab触发 构建
  • 提交的其他所有推动被忽略跑步者。

如果只在构建时检查头部提交注释,那么可以。

我搜索了.gitlab.yml文档,但找不到任何有用的信息。

+0

如果一个提交只是一个自述文件的改变,例如,你可以在你的git提交信息中写入'[skip ci]'或'[ci skip]' - 我试图在文档中找到它,能够找到它。如果您的推送仅包含具有此跳过标记的提交,则CI构建将被跳过。 –

+0

另外,现在是时候考虑将你的项目分解为多个git仓库和多个CI目标(build_x,build_y,build_z,其中x和y和z分开构建,并且可以混合管道)。您可能想考虑使用缓存,以便增量构建成为可能。缓存可以节省大量时间在C/C++,Java和其他编译语言构建中,增量构建可节省时间。 –

回答

2

根据您的示例消息“版本1.2.3.4”,最佳方法是将构建限制为仅标记提交。

在您的exinsting gitlab-ci.yml文件中,将“only”属性添加到要限制的步骤的末尾。

job1: 
    stage: build 
script: 
- echo "building..." 
# - Your commands here 
only: 
- tags 

现在,每当你需要构建它的时候,只是标记提交使用:

git tag "release 1.2.3.4" 

如果你真的需要看到每一个承诺,你应该看看在CI Variables消息,有一种方法获取当前提交散列引用。

+1

使用乌龟我做网络启动和运行。我承诺,标记和推送,但没有任何反应,没有新的管道开始。 – MichaSchumann

+1

但基于你的提示,我试图使用“只有: - 主”这一工作!所以我将在一个分支中开发,并且只在版本上将其合并到主分支上。也许标签thingy由于乌龟包装git命令而不起作用。不过,我接受你的答案,因为它帮助我找到了解决方案, – MichaSchumann

+1

你是否也在使用git push origin --tags进行提交后推送了标签?你可以在仓库中的Gitlab中签出 - >标签。您也可以在Web界面的这一部分创建标签。但无论如何,我很高兴能够提供帮助。 –