在持续集成过程中,版本发布常常伴随一系列重复且易错的操作:手动创建 Tag、编辑更新说明、上传构建产物……这些步骤若不能自动完成,不仅效率低下,也易埋下失误隐患。
为此,Gitee 流水线现已支持 Release 插件,提供从构建产物到版本发布的完整自动化能力。插件可将版本信息、更新日志、构建文件一键发布至仓库 Release 页面,适用于正式发版、预发布测试、开源产物同步等场景。
将 Release 流程集成至流水线
Gitee Go Release 插件定位为流水线内的发布步骤,通过配置参数可完成以下任务:
-
自动创建 Release 页面,附带描述与构建产物; -
自动生成或复用对应 Tag; -
支持预发布版本与重复覆盖; -
结合流水线变量实现构建号驱动的版本管理。
适配 Gitee 流水线的插件机制,用户可通过表单或 YAML 方式快速集成。
应用场景示例
💻 开源项目:合并主干后自动发布更新日志与构建产物,贡献者可直接下载最新版本。
💻 迭代发布:读取 CHANGELOG.md 作为描述,上传 dist 压缩包,全流程无需手动操作。
💻 测试发布:启用「预发布」与「允许覆盖」,支持同一 Tag 下多次更新,用于测试验证。
手把手实操一次自动发布流程
以下是一个典型流程:当开发者在主干提交包含release:前缀的变更时,流水线自动触发构建并发布 Release。
配置触发条件
进入对应流水线的触发事件配置页面,设置如下:
-
事件类型:Push -
触发分支:master(或你的主分支) -
提交注释关键字匹配:提交信息包含 ^release:.*
配置 Release 插件参数
-
选择任务编排,新建 Gitee Go Release 任务:
-
根据需求填入相关参数:
详细参数说明可查看 Gitee Release 文档页面:https://help.gitee.com/enterprise/pipeline/plugin/gitee-release
使用技巧
Tag 关联说明:tagName标签存在将会直接使用,不存在的话会基于流水线运行的 commit 为起点创建 Tag。
附件路径规范:assertFiles中的文件路径需基于流水线执行时的工作目录(通常为源码根目录),建议通过ls命令确认文件是否存在,避免因路径错误导致附件上传失败。
动态变量使用:支持在参数中引用流水线全局变量,例如通过${GITEE_PIPELINE_BUILD_NUMBER}自动获取当前构建的标签作为tagName,示例:
tagName: v.${GITEE_PIPELINE_BUILD_NUMBER}
releaseName: 版本${GITEE_PIPELINE_BUILD_NUMBER}
同时你也可以进入代码视图,使用 YAML 进行精确控制。以下是推荐配置:
stages:
- name: stage-e4e45c6b
displayName: 构建
strategy: naturally
trigger: auto
executor: []
steps:
- step: build@golang
name: build_golang
displayName: Golang 构建
golangVersion: '1.12'
commands:
- CGO_ENABLED=0 && GOOS=linux GOARCH=amd64 go build -o plugin-amd64 main.go
- CGO_ENABLED=0 && GOOS=linux GOARCH=arm64 go build -o plugin-arm64 main.go
artifacts:
- name: PLUGIN_RELEASE
path:
- plugin-amd64
- plugin-arm64
caches:
- /go/pkg/mod
notify: []
strategy:
retry: '0'
- name: stage-1933bd18
displayName: 发版
strategy: naturally
trigger: auto
executor: []
steps:
- step: release@gitee
name: release_gitee
displayName: Gitee Release
releaseName: release-v.${GITEE_PIPELINE_BUILD_NUMBER}
# Release描述:读取CHANGELOG.md内容,附加构建信息
description: CHANGELOG.md
# Tag名称:结合构建号生成,格式如v1.0.1
tagName: v.${GITEE_PIPELINE_BUILD_NUMBER}
# 上游构建产物标识
upstreamArtifact:
- PLUGIN_RELEASE
# 附件文件列表
assertFiles:
- plugin-arm64
- plugin-amd64
# 预发布版本:测试阶段可改为true,正式发布改为false
prerelease: false
# 允许覆盖:测试阶段可改为true,正式发布改为false
allowUpdate: true
notify: []
strategy:
retry: '0'
执行效果验证
-
代码提交推送,生成 CHANGELOG.md,Commit 信息为release: add artifact。
-
流水线被触发,成功完成 Gitee Go Release 任务的执行:Golang 构建、tag 创建、release 创建、附件上传。
-
进入仓库发行版页面,查看对应的 Release。
常见问题解答
Q:附件上传失败怎么办?
A:首先通过 ls 路径命令在流水线中校验文件是否存在,确认路径为源码根目录的相对路径,而非绝对路径。
Q:Tag已经存在,想更新Release内容怎么操作?
A:勾选「允许覆盖」参数,插件会用新内容覆盖同名 Tag 的旧 Release。
Q:如何自定义Release的显示名称?
A:在插件参数中添加
releaseName,例如releaseName: 演示项目v1.0.${GITEE_PIPELINE_BUILD_NUMBER}。
Gitee Go Release 插件将版本发布整合入流水线流程,显著提升自动化程度,让版本发布从「繁琐操作」变成「流水线的最后一步」。无论是个人开发还是团队协作,都能通过它提升版本管理效率。
目前 Gitee Go Release 插件已在社区版与企业版全面上线,欢迎试用并在使用过程中反馈建议,我们将持续优化插件功能,支持更多发布场景。

