当用户将代码提交到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
答案 0 :(得分:2)
我确信在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系统设置为:
git
的Docker映像一起使用changelog
job log.log
artifact,它将在作业中生成并存储,以便您以后可以下载。我还建议您检出GitLab CI/CD quickstart
答案 1 :(得分:1)
library使用的Jenkins plugin还有一个command line tool,可以在任何地方使用:
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}}
"