首页 文章

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

提问于
浏览
3

我的团队最近在过去的几个月里转而采用这三种技术,并努力工作以实现这一目标 . 下一步是自动化我们的更改日志 . 我们在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 回答

  • 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]*)
    

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

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

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

    The Analysis

    优点:

    • 整体有效

    • 实施起来相对较快

    缺点:

    • 未完全自动化 .

    • 如果从多个Jenkins作业中释放,则需要恢复为提交ID .

    • 所有变化的历史似乎只能回到詹金斯的工作(我可能会误解这个问题的具体情况 - 我只记得曾经有过类似这样的不满情绪 . )

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

  • 1

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

    1.2.1(MASTER) - XX XXX 2016增强类别A令人敬畏的新功能#1854修复类别Z修复了小部件的问题#1792类别Y修复了小部件的问题#1792修复了视图布局的异常#1848

相关问题