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支持

使用方法

  1. 在Codecov上注册并配置Codecov GitHub应用
  2. 点击"Use this template"按钮(或克隆/下载此仓库)
  3. 在所有文件中将golang-templates/seed替换为your_org/repo_name
  4. 在Dockerfile中将所有seed替换为repo_name
  5. 添加CODECOV_TOKEN作为GitHub Actions和Dependabot的secret
  6. 更新以下文件:

设置开发环境

  1. 安装Go
  2. 安装Visual Studio Code
  3. 安装Go扩展
  4. 克隆并打开此仓库
  5. F1 -> Go: Install/Update Tools -> (选择全部) -> 确定

构建

终端命令

make       # 执行构建流程
make help  # 打印Make目标的帮助信息

Visual Studio Code

F1Tasks: 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

1 回复

更多关于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)
}

自定义模板开发

如果你想创建自己的模板,可以按照以下步骤:

  1. 创建一个模板目录结构
  2. 在模板文件中使用Go模板语法
  3. 使用.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项目,保持一致的代码结构和最佳实践。通过自定义模板,你可以为团队创建标准化项目结构,大大提高开发效率。

回到顶部