golang自动化变更日志工具插件库changie的使用

Golang自动化变更日志工具插件库Changie的使用

Changie Logo

Changie简介

Changie是一个将变更日志与提交消息分离的工具,避免两者之间的冲突。

主要特性

  • 基于文件的变更日志管理,保持提交历史和发布说明分离
  • 在工作时跟踪变更,保持知识新鲜度
  • 广泛的配置选项以适应您的项目
  • 语言和框架无关,使用单个Go二进制文件

快速开始

安装Changie

# 使用go安装
go install github.com/miniscruff/changie@latest

# 或者使用brew安装
brew install changie

基本使用示例

  1. 初始化项目
changie init
  1. 创建变更条目
changie new
  1. 生成变更日志
changie batch
changie merge

完整示例Demo

package main

import (
	"fmt"
	"github.com/miniscruff/changie/core"
)

func main() {
	// 初始化配置
	config, err := core.LoadConfig(".changie.yaml")
	if err != nil {
		fmt.Printf("Error loading config: %v\n", err)
		return
	}

	// 创建新的变更条目
	newChange := core.Change{
		Body:    "Added new feature for user authentication",
		Kind:    "Added",
		Version: "v1.0.0",
	}

	// 保存变更条目
	err = core.SaveChange(config, &newChange, "v1.0.0")
	if err != nil {
		fmt.Printf("Error saving change: %v\n", err)
		return
	}

	// 批量处理变更
	batch := core.Batch{
		Version: "v1.0.0",
		Changes: []core.Change{newChange},
	}

	// 合并变更到变更日志
	err = core.Merge(config, &batch)
	if err != nil {
		fmt.Printf("Error merging changes: %v\n", err)
		return
	}

	fmt.Println("Changelog updated successfully!")
}

进阶使用

Changie支持自定义配置,您可以创建.changie.yaml文件来配置变更日志的格式和行为:

# .changie.yaml 示例配置
kindFormat: uppercase
changeFormat: list
kinds:
  - label: Added
    header: "## Added"
  - label: Changed
    header: "## Changed"
  - label: Deprecated
    header: "## Deprecated"
  - label: Removed
    header: "## Removed"
  - label: Fixed
    header: "## Fixed"
  - label: Security
    header: "## Security"

获取帮助

如果您需要帮助或有使用问题,可以使用讨论页面寻求帮助。对于bug报告或功能请求,请创建GitHub issue。

贡献指南

如果您想贡献代码或文档,请参考贡献指南。如果需要额外帮助,可以创建issue或在讨论区发帖。

许可证

Changie采用MIT许可证分发。


更多关于golang自动化变更日志工具插件库changie的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang自动化变更日志工具插件库changie的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用Changie实现Golang自动化变更日志管理

Changie是一个优秀的Golang自动化变更日志工具,它可以帮助开发者轻松管理项目版本变更记录。下面我将详细介绍如何使用Changie来简化你的变更日志管理流程。

Changie核心功能

Changie主要提供以下功能:

  • 自动化变更日志生成
  • 支持语义化版本(SemVer)
  • 可定制的变更日志模板
  • 批量变更管理
  • 与CI/CD流程集成

安装Changie

# 使用go install安装
go install github.com/miniscruff/changie@latest

# 或者使用brew(MacOS)
brew install miniscruff/tap/changie

初始化项目

# 在项目根目录执行
changie init

这会创建.changie.yaml配置文件和一个changes目录结构。

基本使用流程

1. 创建变更条目

changie new

交互式命令行会引导你输入变更内容,包括:

  • 变更类型(feature, bugfix, breaking等)
  • 变更内容描述
  • 相关issue编号(可选)

2. 批量处理变更

# 查看待发布的变更
changie batch

# 创建新批次(准备发布)
changie batch next

3. 生成变更日志

# 生成变更日志文件
changie merge

这会根据所有变更条目生成/更新CHANGELOG.md文件。

高级配置示例

.changie.yaml配置文件示例:

# .changie.yaml
changesDir: .changes
unreleasedDir: unreleased
headerPath: header.tpl
changelogPath: CHANGELOG.md
versionExt: md
versionFormat: "## {{.Version}} - {{.Time.Format \"2006-01-02\"}}"
kindFormat: "### {{.Kind}}"
changeFormat: "* {{.Body}}"
kinds:
  - label: feature
    header: Features
  - label: bug
    header: Bug Fixes
  - label: breaking
    header: Breaking Changes

与Golang项目集成

你可以创建一个changelog包来封装Changie操作:

// pkg/changelog/generator.go
package changelog

import (
	"os/exec"
)

// Generate creates a new changelog entry
func Generate(changeType, message string) error {
	cmd := exec.Command("changie", "new")
	cmd.Stdin = strings.NewReader(fmt.Sprintf("%s\n%s\n\n", changeType, message))
	return cmd.Run()
}

// Release creates a new version and updates CHANGELOG.md
func Release(version string) error {
	cmd := exec.Command("changie", "batch", "next")
	if err := cmd.Run(); err != nil {
		return err
	}
	
	cmd = exec.Command("changie", "merge")
	return cmd.Run()
}

CI/CD集成示例

在GitHub Actions中集成Changie:

# .github/workflows/release.yml
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install Changie
        run: go install github.com/miniscruff/changie@latest
      - name: Generate Changelog
        run: changie merge
      - 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.md for ${{ github.ref_name }}"
          git push

自定义模板

你可以创建自定义模板来改变变更日志的呈现方式:

header.tpl示例:

# Changelog

All notable changes to this project will be documented in this file.

{{- if .Versions }}
{{- range .Versions }}
{{ if .Tag.Previous }}[{{ .Tag.Previous }} -> {{ .Tag.Current }}]{{ else }}[{{ .Tag.Current }}]{{ end }}
{{ end -}}
{{ end -}}

最佳实践

  1. 小步提交:每个功能/修复都应有独立的变更条目
  2. 语义化版本:遵循SemVer规范(MAJOR.MINOR.PATCH)
  3. 自动化流程:将Changie集成到你的CI/CD流程中
  4. 团队协作:确保所有团队成员都使用Changie添加变更
  5. 代码审查:将变更条目纳入代码审查流程

Changie通过标准化和自动化变更日志管理,可以显著提高项目的可维护性和透明度,特别适合中大型Golang项目使用。

回到顶部