使用CI作业自动化Git发布工作流程

时间:2017-10-28 11:57:54

标签: git jenkins continuous-integration gitlab devops

我有以下开发设置:

  • Git项目托管在自托管的GitLab
  • 每次推送时,GitLab CI都会在某些分支上运行作业(例如,构建,测试和lint代码)

到目前为止,这么好。但现在,我想自动执行某些git任务。例如,假设我的次要版本的假设后续发布策略:

  • 在开发分支上,从版本文件中删除-SNAPSHOT版本(package.jsonpom.xml ...取决于项目),然后提交
  • 将dev合并为master并标记合并提交vX.Y.Z
  • 在开发时,碰撞次要版本并将其附加-SNAPSHOT,然后提交
  • 触发部署脚本(或者只要将vX.Y.Z标记推送到主控,就会在GitLab CI中触发部署CI作业)

如何将此版本脚本集成到我的CI设置中?

我知道Jenkins可以做这些事情,我碰巧有一个docker实例正在运行。我还以为我可以在GitLab CI中定义一个脚本来完成这项工作,并使用部署密钥将更改推送到Git仓库。

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

1 个答案:

答案 0 :(得分:0)

好的,所以这就是我最终如何做到的:

  1. 我创建了一个命令行工具,用于获取/设置项目的版本,具体取决于它的类型,我将其作为命令行参数提供。它有助于我的工具找到获取/设置版本的位置(package.json类型的NPMpom.xml的{​​{1}}等等。
  2. 我创建了一个执行我想要的发布工作流程的bash脚本。该脚本使用我创建的命令行工具来获取/设置项目版本。我的Jenkins发布作业是一个参数化作业,它将项目类型,存储库URL和存储库凭据作为输入。它克隆,进行更改并将更改推送到Gitlab。这样做,我可以为每个项目设置一个简单的工作,使用parametrized trigger plugin触发通用发布工作。此作业可以选择性地触发另一个部署到测试环境的作业。
  3. 发布作业需要一个额外的参数来了解它必须执行哪种类型的版本,是否为空(意味着"执行预发布",次要或主要。