2017-10-28 256 views
2

自动化的Git版本的工作流程,我有以下的发展设置:与CI工作

  • 托管在托管GitLab
  • 自我的Git项目
  • GitLab CI运行每次我推时间对某些部门的工作(构建,测试,和皮棉的代码,例如)

到目前为止,一切都很好。但是现在,我想要自动执行某些git任务。例如,假设假设以下发布策略为我的次要版本:

  • 在Dev分支,从版本文件中删除-SNAPSHOT版本(package.jsonpom.xml ...取决于项目),然后提交
  • 合并开发成主机和标签的合并提交vX.Y.Z
  • 在开发,凹凸次要版本,并与-SNAPSHOT追加它,然后提交
  • 触发一个部署脚本(或有获取GitLab CI每当引发了部署CI工作一个vX.YZ标签被推送到主)

我怎么会这样释放脚本集成到我的CI设置?

我知道詹金斯可以做这样的事情,我碰巧有它运行的泊坞窗实例。我也认为我可以在GitLab CI中定义一个脚本来完成这项工作,并使用部署密钥将更改推送到Git仓库。

我要实现的最重要的事情是有版本的自动管理。出于这个原因,我目前有一个节点脚本,用于输入当前的-SNAPSHOT版本并输出发布版本和下一个开发SNAPSHOT版本,自动计算。我知道npmmaven有像nom version patch minor命令,但我要管理版本撞我自己(而不是委托给依赖管理器)。

回答

0

好了,所以这里是我最后只是:

  1. 我创建用于获取/设置项目的版本,根据其种类,这是我提供的命令行工具命令行参数。它可以帮助我的工具找出获取/设置版本(package.jsonNPM类型的项目,pom.xmlMAVEN
  2. 我创建的执行我的期望释放的工作流程bash脚本,该脚本使用命令行我创建的工具来获取/设置项目版本我的Jenkins发布作业是一个参数化作业,它将项目类型,存储库URL和存储库凭证作为输入,它克隆,更改并将更改推送到Gitlab。 ,我可以建立一个简单的工作对我的每一个项目,触发使用parametrized trigger plugin通用发布工作。这项工作可以选择触发部署到测试环境另一份工作。
  3. 的发行工作需要一个额外的参数知道哪些(典型值)它必须这样做,无论它是否为空(意思是“做一个预发布”,小的或重要的。