使用VSTS和Jenkins持续交付

时间:2017-06-07 15:13:03

标签: jenkins azure-devops

我试图通过Jenkins(构建,部署)和VSTS(源代码控制)继续交付。这是所需的工作流程:

  1. 开发人员分离主人,进行更改,创建拉取请求
  2. 另一位开发人员审核PR并最终将其合并为主
  3. 某个系统(Jenkins或VSTS)检测到PR已合并为master并且...
    1. 增加存储在repo
    2. 中的文件中的版本号
    3. 将版本更改提交回主文件
    4. 构建
    5. 展开时
  4. 我在VSTS中使用Service Hook来检测合并以掌握并执行Jenkins任务。 VSTS有3个我可以使用的钩子:

    1. 构建完成
    2. 推送代码
    3. 拉动请求合并提交已创建
    4. 我的印象是第三种选择只会在合并PR时发生,但事实并非如此。对分支的任何其他提交,虽然它与PR相关联触发了钩子。这会导致大量不必要的部署。

      我想我可以让Jenkins检测到VSTS内的变化。有一个"民意调查SCM"选项,采用类似cron的计划。完全令人困惑的是,我似乎无法配置每X分钟将会被轮询的内容(哪个回购,哪个分支)。

      只有当PR合并到主人时,我有什么选择才能触发Jenkins任务?我会使用VSTS" Code推送" Service Hook,但是它进入了一个无限循环,因为Jenkins在增加版本时会推动掌握。

      https://www.aspsnippets.com/Articles/Google-Maps-V3-Display-Colored-Markers-for-particular-type-of-location.aspx

1 个答案:

答案 0 :(得分:1)

请参阅以下步骤:

  1. 为master
  2. 创建新的构建定义
  3. 选择触发器并启用持续集成
  4. 设置分支过滤器和路径过滤器(不包括需要更改的版本号文件)
  5. 添加任务以修改版本号文件(例如PowerShell)
  6. 添加命令行任务(工具:git;参数:config --global user.email“test@example.com”;工作文件夹:$(build.sourcesdirectory))
  7. 添加命令行任务(工具:git;参数:config --global user.name“你的名字”;工作文件夹:$(build.sourcesdirectory))
  8. 添加命令行任务(工具:git;参数:添加[修改后的文件];工作文件夹:$(build.sourcesdirectory))
  9. 添加命令行任务(工具:git;参数:commit -m“更新版本”;工作文件夹:$(build.sourcesdirectory))
  10. 添加命令行任务(工具:git;参数:推送源HEAD:$(Build.SourceBranchName)“;工作文件夹:$(build.sourcesdirectory))
  11. 添加Jenkins Queue Job task以触发Jenkins作业