4

在过去的几个月里,我的团队最近切换到所有这三种技术,并努力让它运行起来。下一步是自动化我们的变更日志。我们设置了 JIRA 在 github 提交消息中查找标签(例如 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 提交,我的团队可能还会这样做。)

任何更接近实现这一目标的东西都将不胜感激。

谢谢!

4

2 回答 2

2

由于我们团队中没有人有多余的时间来解决这个问题,我们最终想出了一个快速的解决方案。

过程

  1. 为 Jenkins安装和设置All Changes 插件
  2. 当我们发布时,我们使用“构建提升”系统,将星号放在之前的构建旁边,所以我们可以很容易地看到构建#查看历史。
  3. 将 All Changes 中的相关输出复制并粘贴到 notepad++ 之类的文件中(human-diff'ing ftw!)
  4. 运行正则表达式查找/替换。搜索正则表达式字符串,替换为空字符串。(下面——有大爆炸选项或为了便于理解而将其分解。)
  5. 以当前公认标准的任何形式手动组织和发布。

全部一起

(\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。
  • 所有更改的历史似乎只能追溯到詹金斯的工作(我可能会误解这一点的具体细节——我只记得有一次类似这样的事情的轻微不满。)

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

于 2013-05-27T20:47:49.417 回答
1

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

1.2.1(主)- XX XXX 2016

增强功能

甲类

  • 很棒的新功能 #1854

修复

Z 类

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

Y 类

  • 修复了小部件 #1792 的问题
  • 修复了视图布局的异常 #1848
于 2016-06-21T17:00:48.523 回答