golang基于git仓库的多功能变更日志生成插件chyle的使用
Golang基于Git仓库的多功能变更日志生成插件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
更多关于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流程
通过合理配置,可以生成符合项目需求的变更日志,提高项目的可维护性和透明度。