golang基于git仓库的多功能变更日志生成插件chyle的使用

Golang基于Git仓库的多功能变更日志生成插件chyle的使用

chyle

Chyle是一个从git仓库生成变更日志的工具。

使用方式

# 从提交历史创建变更日志

用法:
  chyle [command]

可用命令:
  config      配置提示
  create      创建新的变更日志
  help        获取命令帮助

标志:
      --debug  启用调试模式
  -h, --help   显示帮助信息

使用 "chyle [command] --help" 获取命令的更多信息

config命令

运行一系列提示来帮助快速轻松地生成配置。

create命令

生成变更日志。

工作原理

Chyle从git仓库获取符合给定条件的提交范围。从这些提交中,你可以从提交消息、作者等信息中提取相关数据,并将其添加到原始payload中。之后如果需要,你可以通过各种有用的数据(shell命令、api等)来丰富你的payload,最后你可以发布你收集的内容(到外部api、stdout等)。你可以混合所有步骤,跳过某些步骤,组合某些步骤,这完全取决于你。

安装

根据你的架构从发布页面下载chyle二进制文件。

查看文档和示例,运行chyle config启动配置提示。

文档和示例

请查看本项目的wiki。

贡献

如果你想为chyle项目添加新功能,最好的方法是先打开一个ticket,以了解如何在代码中实现你的更改。

开发环境设置

克隆仓库后,你需要使用go mod vendor安装依赖项。要本地测试你的更改,可以运行go测试:make test-all

示例Demo

以下是使用chyle生成变更日志的完整示例:

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	// 1. 初始化配置
	cmd := exec.Command("chyle", "config")
	out, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Printf("配置失败: %s\n", err)
		return
	}
	fmt.Println(string(out))

	// 2. 生成变更日志
	cmd = exec.Command("chyle", "create")
	out, err = cmd.CombinedOutput()
	if err != nil {
		fmt.Printf("生成变更日志失败: %s\n", err)
		return
	}
	fmt.Println(string(out))
}

或者使用YAML配置文件:

# .chyle.yaml 示例配置
repository:
  # Git仓库路径
  path: "."
  
extractors:
  # 从提交消息中提取类型(feat, fix等)
  - kind: regex
    key: type
    regex: "^([a-zA-Z]+)(?:\\(.*\\))?:"

decorators:
  # 添加JIRA问题链接
  - kind: jira
    url: "https://jira.example.com"
    key: jiraurl
    match: "[A-Z]+-[0-9]+"

publishers:
  # 输出到控制台
  - kind: stdout
    template: |
      {{range .}}
      - {{.Type}}: {{.Subject}} ({{.Jiraurl}})
      {{end}}

运行命令:

# 使用配置文件生成变更日志
chyle create --config .chyle.yaml

更多关于golang基于git仓库的多功能变更日志生成插件chyle的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang基于git仓库的多功能变更日志生成插件chyle的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang基于Git仓库的多功能变更日志生成插件chyle使用指南

chyle是一个基于Git仓库的多功能变更日志生成工具,使用Go语言编写。它能够从Git提交历史中提取信息,生成格式化的变更日志,并支持多种输出格式和自定义模板。

安装chyle

可以通过go get命令安装chyle:

go get -u github.com/antham/chyle

或者下载预编译的二进制文件:

# Linux
curl -L https://github.com/antham/chyle/releases/download/v1.5.0/chyle_1.5.0_linux_amd64 -o chyle

# macOS
curl -L https://github.com/antham/chyle/releases/download/v1.5.0/chyle_1.5.0_darwin_amd64 -o chyle

# 赋予执行权限
chmod +x chyle

基本使用

1. 创建配置文件

创建一个YAML配置文件chyle.yml

# chyle.yml
repo:
  # Git仓库路径
  path: .
  
  # 起始提交
  start: HEAD~10
  
  # 结束提交
  end: HEAD

# 提交消息处理
commitExtractors:
  - type: message
    key: message
    regex: "(.*)"

  - type: author
    key: author
    regex: "(.*)"

# 变更日志生成器
changelog:
  # 输出格式 (markdown, json, custom)
  format: markdown
  
  # 自定义模板 (当format为custom时使用)
  template: |
    ## {{.Version}} ({{.Date}})
    {{range .Commits}}
    - {{.Message}} ({{.Author}})
    {{end}}

2. 运行chyle生成变更日志

chyle -c chyle.yml

高级功能

自定义提交过滤器

commitFilters:
  - type: message
    include: "^feat|^fix"
    exclude: "^docs"

使用环境变量

repo:
  path: $GOPATH/src/myproject

多种输出格式

支持Markdown、JSON和自定义模板:

changelog:
  format: json
  # 或者
  format: markdown
  # 或者
  format: custom
  template: |
    {{range .Commits}}
    {{.Hash}} - {{.Message}}
    {{end}}

发布到多个目标

publishers:
  - type: file
    path: CHANGELOG.md
    
  - type: stdout

完整示例

下面是一个完整的示例,展示如何生成包含特性、修复和破坏性变更的Markdown格式变更日志:

# chyle.yml
repo:
  path: .
  start: v1.0.0
  end: HEAD

commitExtractors:
  - type: message
    key: message
    regex: "(.*)"
  
  - type: author
    key: author
    regex: "(.*)"
  
  - type: hash
    key: hash
    regex: "(.*)"

commitFilters:
  - type: message
    include: "^feat|^fix|^BREAKING"

changelog:
  format: markdown
  template: |
    # Changelog
    
    ## Features
    {{range .Commits}}
    {{if (hasPrefix .Message "feat")}}
    - {{.Message}} ({{.Author}})
    {{end}}{{end}}
    
    ## Bug Fixes
    {{range .Commits}}
    {{if (hasPrefix .Message "fix")}}
    - {{.Message}} ({{.Author}})
    {{end}}{{end}}
    
    ## Breaking Changes
    {{range .Commits}}
    {{if (hasPrefix .Message "BREAKING")}}
    - {{.Message}} ({{.Author}})
    {{end}}{{end}}

集成到CI/CD流程

可以将chyle集成到CI/CD流程中,例如在GitHub Actions中使用:

# .github/workflows/changelog.yml
name: Generate Changelog

on:
  push:
    tags:
      - 'v*'

jobs:
  changelog:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      
      - name: Download chyle
        run: |
          curl -L https://github.com/antham/chyle/releases/download/v1.5.0/chyle_1.5.0_linux_amd64 -o chyle
          chmod +x chyle
      
      - name: Generate changelog
        run: |
          ./chyle -c chyle.yml > CHANGELOG.md
      
      - name: Commit changelog
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
          git add CHANGELOG.md
          git commit -m "Update changelog"
          git push

总结

chyle是一个功能强大且灵活的变更日志生成工具,特别适合Go项目。它支持:

  • 从Git提交历史提取信息
  • 自定义过滤和提取规则
  • 多种输出格式
  • 易于集成到CI/CD流程

通过合理配置,可以生成符合项目需求的变更日志,提高项目的可维护性和透明度。

回到顶部