我的团队最近在过去的几个月里转而采用这三种技术,并努力工作以实现这一目标 . 下一步是自动化我们的更改日志 . 我们在Github提交消息中设置了JIRA设置标记(例如TAG-123) . Jenkins通过5分钟计时器,拉动,构建等监视GitHub提交 .
我希望看到的是当构建标记为“提升为 生产环境 ”时自动生成的更改日志 . 我希望看到它做类似于以下的事情:
-
查询Jenkins,将之前的版本标记为 生产环境 版本,并获取相应的git commit SHA1 .
-
在当前Git提交和上一次提交之间运行diff
-
查找所有引用的JIRA票证
-
编译JIRA Headers 列表
-
将列表导出到文本文件并放置在构建中(如果可以直接通过Jenkins访问则可以获得奖励)
无论这个流程是否按照书面形式进行都是无关紧要的 - 我在最终结果之后并没有想要重新发明轮子......当然有人之前做过这样的事情吗?
就重新发明而言,我能够找到https://wiki.jenkins-ci.org/display/JENKINS/Promoted+Builds+Plugin,它允许某人捎带促进 生产环境 行动并运行单独的脚本 . 然后,需要收集功能来完成上述任务 . (我也注意到Jenkins可以标记当前的GitHub提交,我的团队可能会另外提交 . )
任何接近完成此事的人都将非常感激 .
谢谢!
2 回答
由于我们团队中没有人有足够的时间投入到这个,我们最终投入了快速解决方案 .
The Process
为Jenkins安装并设置All Changes plugin .
当我们发布时,我们使用"build promotion"系统将星号放在上一个版本旁边,这样我们就可以很容易地看到构建#看着历史了 .
将所有更改的相关输出复制并粘贴到记事本之类的内容(human-diff'ing ftw!)
运行正则表达式查找/替换 . 搜索正则表达式字符串,替换为空字符串 . (下面 - 有一个大爆炸选项或它可以理解的分解 . )
以当前商定的标准以任何形式手动组织和发布 .
全部一起
删除提交哈希
\s*\(commit:\s[a-z0-9]{40}.\s..detail
删除时间和周围的换行符
[\r][\n]#.*\B[\r][\n][\r][\n]
删除前导空格:
^[ \t]*
The Analysis
优点:
整体有效
实施起来相对较快
缺点:
未完全自动化 .
如果从多个Jenkins作业中释放,则需要恢复为提交ID .
所有变化的历史似乎只能回到詹金斯的工作(我可能会误解这个问题的具体情况 - 我只记得曾经有过类似这样的不满情绪 . )
总的来说,缺点有点“野兽的本质” . 我想读一些其他的解决方案 . (当我们有一个叫做时间的难以捉摸的东西时,当然!)
问题跟踪器依赖的替代方案可能是纯粹使用拉取请求本身 . 对我们来说,他们有足够的上下文来生成发行说明,我们使用标签进行分类 . 我创建了PullRequestReleaseNotes,你可以尝试一下 . 它支持GitHub,GitLab,BitBucket和TFS,它可以通过合并拉取请求及其标签在markdown中生成发行说明,并可选择将其发布到Atlassian Confluence页面,并将其作为帖子发布到Slack通道 . 它可以作为持续集成的一部分运行 . 这是一个示例: