当用户将代码提交到 git 存储库时,我们需要自动生成提交历史记录文件。
它可以使用Jenkins,Gitlab Webhooks和Jenkins Git Changelog插件来完成。此外,可以使用下面的 git 命令创建它。
$ git log --pretty=format:'At %ci, %cN committed %h : %s' --decorate --graph >log.log
但是,无论如何,我们可以使用Gitlab CI/CD操作生成提交历史记录文件。该文件可以保存在 git 存储库或本地存储中。
示例提交历史记录文件
* At 2018-11-16 18:02:21, kRiZ committed 1714a95 : Commit 4
* At 2018-11-15 16:06:06, kRiZ committed bab5c0c : Commit 3
* At 2018-11-14 18:05:09, kRiZ committed b3c9d86 : Commit 2
* At 2018-11-14 06:47:34, kRiZ committed 8e6ee30 : Add README.md
我相信在GitLab中有多种方法可以做到这一点。这是其中之一:
- 在存储库的根目录中创建一个
.gitlab-ci.yaml
文件。您可以在本地或使用 GitLab 的 Web UI 执行此操作。 -
将此代码段粘贴到
.gitlab-ci.yaml
文件中:changelog: image: docker:git script: - git log --pretty=format:'At %ci, %cN committed %h - %s' --decorate --graph >log.log artifacts: paths: [log.log]
-
要么在本地提交和推送,要么在 GitLab 的 Web UI 上提交。将触发
changelog
作业。 - 作业成功完成后,
log.log
文件将作为changelog
作业的项目提供
从本质上讲,使用此代码段,您将 GitLab 的 CI/CD 系统设置为:
- 将 Docker
- 执行程序与预装
git
的 Docker 映像一起使用 - 定义将运行 git 命令的
changelog
作业 - 定义一个
log.log
项目,该项目将作为作业的一部分生成并存储,以便以后可以下载它。
我还建议查看 GitLab CI/CD 快速入门。
Jenkins 插件使用的库还有一个命令行工具,可以在任何地方使用:
npx git-changelog-command-line -std -tec "
# Changelog
Changelog for {{ownerName}} {{repoName}}.
{{#tags}}
## {{name}}
{{#issues}}
{{#hasIssue}}
{{#hasLink}}
### {{name}} [{{issue}}]({{link}}) {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
{{/hasLink}}
{{^hasLink}}
### {{name}} {{issue}} {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
{{/hasLink}}
{{/hasIssue}}
{{^hasIssue}}
### {{name}}
{{/hasIssue}}
{{#commits}}
**{{{messageTitle}}}**
{{#messageBodyItems}}
* {{.}}
{{/messageBodyItems}}
[{{hash}}](https://github.com/{{ownerName}}/{{repoName}}/commit/{{hash}}) {{authorName}} *{{commitTime}}*
{{/commits}}
{{/issues}}
{{/tags}}
"