golang快速创建GitHub项目模板的种子插件golang-templates/seed的使用
Golang快速创建GitHub项目模板的种子插件golang-templates/seed的使用
描述
这是一个用于Go应用程序的GitHub仓库模板。您可以使用它:
- 创建一个具有自动化和环境设置的新仓库
- 作为改进现有仓库自动化的参考
它包含以下功能:
- 通过GitHub Actions实现持续集成
- 使用Make进行构建自动化
- 使用Go Modules进行依赖管理
- 使用gofumpt进行代码格式化
- 使用golangci-lint和misspell进行代码检查
- 单元测试包含竞态检测、HTML覆盖率报告和Codecov报告
- 使用GoReleaser进行发布
- 通过Dependabot进行依赖扫描和更新
- 使用CodeQL Action和govulncheck进行安全代码分析
- 包含Visual Studio Code配置和Go支持
使用方法
- 在Codecov上注册并配置Codecov GitHub应用
- 点击"Use this template"按钮(或克隆/下载此仓库)
- 在所有文件中将
golang-templates/seed
替换为your_org/repo_name
- 在Dockerfile中将所有
seed
替换为repo_name
- 添加
CODECOV_TOKEN
作为GitHub Actions和Dependabot的secret - 更新以下文件:
- CHANGELOG.md
- CODE_OF_CONDUCT.md
- LICENSE
- README.md
设置开发环境
- 安装Go
- 安装Visual Studio Code
- 安装Go扩展
- 克隆并打开此仓库
- 按
F1
->Go: Install/Update Tools
-> (选择全部) -> 确定
构建
终端命令
make # 执行构建流程
make help # 打印Make目标的帮助信息
Visual Studio Code
按F1
→ Tasks: Run Build Task (Ctrl+Shift+B或⇧⌘B)
执行构建流程
发布
每当推送带有v
前缀的标签时,就会触发发布工作流。
注意:在增加主版本号之前,请确保理解其影响。
示例代码
以下是使用该模板创建新项目的示例步骤:
# 1. 使用模板创建新仓库
git clone https://github.com/golang-templates/seed.git my-new-project
cd my-new-project
# 2. 替换所有模板引用
# Linux/macOS
find . -type f -exec sed -i 's/golang-templates\/seed/yourname\/my-new-project/g' {} +
find . -type f -exec sed -i 's/seed/my-new-project/g' Dockerfile {} +
# 3. 初始化新的git仓库
rm -rf .git
git init
git add .
git commit -m "Initial commit from golang-templates/seed"
# 4. 创建GitHub仓库并推送
# 在GitHub上创建新仓库后
git remote add origin https://github.com/yourname/my-new-project.git
git push -u origin main
维护
重要文件:
- .github/workflows - GitHub Actions工作流
- .github/dependabot.yml - Dependabot配置
- .vscode - Visual Studio Code配置文件
- .golangci.yml - golangci-lint配置
- .goreleaser.yml - GoReleaser配置
- Dockerfile - GoReleaser用于创建容器镜像的Dockerfile
- Makefile - 用于开发、CI构建的Make目标
常见问题
为什么选择Visual Studio Code编辑器配置
使用Visual Studio Code的开发者可以利用编辑器配置,而其他开发者可以忽略它。VS Code是最受欢迎的Go编辑器,并且得到Go团队的官方支持。
为什么选择GitHub Actions而不是其他CI服务器
GitHub Actions是GitHub内置的功能,对于已经在使用GitHub的用户来说非常方便。如果需要切换到其他CI服务器也很简单,因为构建逻辑和工具安装都在Makefile中。
如何在Windows上构建
安装tdm-gcc并将C:\TDM-GCC-64\bin\mingw32-make.exe
复制为C:\TDM-GCC-64\bin\make.exe
。或者安装mingw-w64并相应复制mingw32-make.exe
。
如何自定义发布
参考GoReleaser文档了解如何添加deb/rpm/snap包、Homebrew Tap、Scoop App Manifest等。如果是开发库并喜欢手工制作的变更日志和发布说明,可以移除GoReleaser的使用。
更多关于golang快速创建GitHub项目模板的种子插件golang-templates/seed的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang快速创建GitHub项目模板的种子插件golang-templates/seed的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用golang-templates/seed快速创建GitHub项目模板
golang-templates/seed是一个用于快速生成Golang项目模板的工具,它可以帮助开发者快速初始化项目结构,遵循最佳实践。下面我将详细介绍如何使用这个工具。
安装
首先,你需要安装seed工具:
go install github.com/golang-templates/seed@latest
或者通过git克隆后编译:
git clone https://github.com/golang-templates/seed.git
cd seed
go build -o seed
mv seed /usr/local/bin/
基本使用
1. 创建新项目
seed new my-project
这将在当前目录下创建一个名为"my-project"的新项目,包含基本的Golang项目结构。
2. 项目结构
创建的项目通常包含以下结构:
my-project/
├── cmd/
│ └── main.go
├── internal/
│ └── app/
│ └── app.go
├── pkg/
├── go.mod
├── Makefile
├── README.md
└── .gitignore
3. 自定义模板
seed支持自定义模板。你可以创建一个模板目录,然后使用它:
seed new my-project --template=path/to/your/template
高级功能
1. 使用预定义模板
seed提供了一些预定义模板:
# 创建CLI应用模板
seed new my-cli --template=cli
# 创建Web服务模板
seed new my-web --template=web
# 创建微服务模板
seed new my-microservice --template=micro
2. 使用变量
你可以在模板中使用变量,创建时传入:
seed new my-project --author="Your Name" --email="your@email.com"
在模板文件中可以使用{{.Author}}
和{{.Email}}
引用这些变量。
示例代码
下面是一个简单的Golang程序,演示如何以编程方式使用seed库:
package main
import (
"fmt"
"log"
"github.com/golang-templates/seed/pkg/generator"
)
func main() {
// 初始化生成器配置
config := generator.Config{
ProjectName: "example-project",
Template: "web", // 使用web模板
Variables: map[string]string{
"Author": "John Doe",
"Email": "john@example.com",
"Description": "A sample web application",
},
OutputDir: "./output",
}
// 创建生成器实例
gen, err := generator.New(config)
if err != nil {
log.Fatalf("Failed to create generator: %v", err)
}
// 生成项目
if err := gen.Generate(); err != nil {
log.Fatalf("Failed to generate project: %v", err)
}
fmt.Println("Project generated successfully at", config.OutputDir)
}
自定义模板开发
如果你想创建自己的模板,可以按照以下步骤:
- 创建一个模板目录结构
- 在模板文件中使用Go模板语法
- 使用
.seedignore
文件指定哪些文件不需要处理
示例模板结构:
my-template/
├── {{.ProjectName}}.go
├── README.md.tmpl
└── .seedignore
在模板文件中可以使用以下变量:
{{.ProjectName}}
- 项目名称{{.Author}}
- 作者名{{.Email}}
- 作者邮箱{{.Description}}
- 项目描述
集成到CI/CD
你可以在CI/CD流程中使用seed来初始化项目:
# GitHub Actions 示例
name: Initialize Project
on: [push]
jobs:
init:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install seed
run: go install github.com/golang-templates/seed@latest
- name: Initialize project
run: seed new my-service --template=web
总结
golang-templates/seed是一个强大的工具,可以帮助你快速启动Golang项目,保持一致的代码结构和最佳实践。通过自定义模板,你可以为团队创建标准化项目结构,大大提高开发效率。