使用Gitlab CI

时间:2018-12-26 06:12:21

标签: gitlab gitlab-ci git-commit git-log git-webhooks

当用户将代码提交到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

2 个答案:

答案 0 :(得分:2)

我确信在GitLab中有多种方法可以做到这一点。这是一个:

  1. 在存储库的根目录下创建一个.gitlab-ci.yaml文件。您可以在本地执行此操作,也可以使用GitLab的Web UI。
  2. 将此代码段粘贴到您的.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]
    
  3. 要么在本地提交并推送,要么在GitLab的Web UI上提交。 changelog作业将被触发。

  4. 作业成功完成后,您的log.log文件将作为changelog作业的工件而提供

基本上,使用此代码段,您正在将GitLab的CI / CD系统设置为:

  • Docker executor与预先安装了git的Docker映像一起使用
  • 定义将运行您的git命令的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}}
"