使用JIRA,GitHub和Jenkins自动更改日志

时间:2013-02-20 15:57:01

标签: github jenkins jira changelog

在过去的几个月里,我的团队最近转而采用这三种技术,并努力使其运行起来。下一步是自动化我们的更改日志。我们在Github提交消息中设置了JIRA设置标记(例如TAG-123)。 Jenkins通过5分钟计时器,拉动,构建等监视GitHub提交。

我希望看到的是当构建标记为“已提升为生产”时自动生成的更改日志。我希望看到它做类似于以下的事情:

  • 查询Jenkins以获取标记为生产版本的先前版本,并获取相应的git commit SHA1。
  • 在当前Git提交和上一次提交
  • 之间运行diff
  • 查找所有引用的JIRA门票
  • 编译JIRA标题列表
  • 将列表导出到文本文件并放置在构建中(如果可以直接通过Jenkins访问则可以获得奖励)

这个流程是否按照书写的方式进行是无关紧要的 - 我在最终结果之后并且不打算重新发明轮子。当然有人之前做过类似的事情吗?

就重新发明而言,我能够找到https://wiki.jenkins-ci.org/display/JENKINS/Promoted+Builds+Plugin,它允许某人捎带促进生产行动并运行单独的脚本。然后,需要收集功能来完成上述任务。 (我也注意到Jenkins可以标记当前的GitHub提交,我的团队可能会另外提交。)

任何接近完成此事的人都将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

由于我们团队中的任何人都没有多余的时间专注于此,我们最终投入了快速解决方案。

流程

  1. 安装并设置Jenkins的All Changes plugin
  2. 当我们发布时,我们使用“构建促销”系统,它将星标放在上一个版本旁边,因此我们可以很容易地看到构建#看历史。
  3. 将所有更改的相关输出复制并粘贴到记事本++(human-diff'ing ftw!)
  4. 之类的内容中
  5. 运行正则表达式查找/替换。搜索正则表达式字符串,替换为空字符串。 (下面 - 有一个大爆炸选项或它可以理解的分解。)
  6. 以当前商定的标准以任何形式手动组织和发布。
  7. 一下子

    (\s*\(commit:\s[a-z0-9]{40}.\s..detail)|([\r][\n]#.*\B[\r][\n][\r][\n])|(^[ \t]*)
    

    删除提交哈希 \s*\(commit:\s[a-z0-9]{40}.\s..detail

    删除时间和周围的换行符 [\r][\n]#.*\B[\r][\n][\r][\n]

    删除前导空格^[ \t]*

    分析

    专业人士

    • 有效整体
    • 相对快速实施

    缺点

    • 未完全自动化。
    • 如果从多个Jenkins作业中释放,则需要恢复为提交ID。
    • 所有变更历史似乎只能回到詹金斯的工作(我可能会误解这个问题的具体情况 - 我只记得曾经有过类似的这种不满情绪。)

    总的来说,缺点有点“野兽的本质”。我想读一些其他的解决方案。 (当我们有一个难以捉摸的东西叫做时间,当然!)

答案 1 :(得分:1)

替代问题跟踪器的依赖可能是纯粹使用拉取请求本身。对我们来说,他们有足够的上下文来生成发行说明,我们使用标签进行分类。我创建了PullRequestReleaseNotes,您可以尝试一下。它支持GitHub,GitLab,BitBucket和TFS,它可以通过合并拉取请求及其标签在markdown中生成发行说明,并可选择将其发布到Atlassian Confluence页面,并将其作为帖子发布到Slack通道。它可以作为持续集成的一部分运行。这是一个示例:

  

1.2.1(MASTER) - XX XXX 2016

     

增强

     

A类

     
      
  • 令人敬畏的新功能#1854
  •   
     

修复

     

Z类

     
      
  • 修复了小部件#1792
  • 的问题   
     

Y类

     
      
  • 修复了小部件#1792
  • 的问题   
  • 修复了视图布局#1848
  • 的异常