如何编写GitLab CI配置,合并代码至master分支后自动创建Release
实现GitLab合并master时自动创建Release的CI配置
可以通过自定义gitlab-ci.yml配置实现需求,核心是利用GitLab CI的原生release关键字或官方release-cli工具,在master分支部署完成后自动生成带日期时间的Release记录。
完整配置示例(推荐原生关键字方案)
假设你已有针对master分支的部署流程,只需新增一个创建Release的任务:
stages: - deploy - create_release # 你已有的部署任务 deploy_to_production: stage: deploy only: - master script: - echo "执行你的部署命令..." # 这里替换为你实际的部署脚本 # 新增的自动创建Release任务 create_gitlab_release: stage: create_release only: - master needs: [deploy_to_production] # 确保部署成功后再生成Release script: - echo "生成Release标签: release-v$(date +%Y%m%d-%H%M%S)" release: tag_name: "release-v$(date +%Y%m%d-%H%M%S)" description: "自动发布记录:代码合并至master分支"
关键配置说明
- 触发条件:
only: [master]限定任务仅在代码合并到master分支时执行 - 依赖控制:
needs确保只有部署任务成功完成后,才会创建Release,避免生成无效发布记录 - 标签格式:
release-v$(date +%Y%m%d-%H%M%S)生成包含固定标识+精确日期时间的标签(如release-v20240520143000),格式可根据需求调整(比如改为release-v2024-05-20_14-30-00) - 原生Release关键字:GitLab CI会自动基于配置的标签创建Release页面,无需额外工具,操作简洁
备选方案(使用release-cli工具)
如果你的GitLab版本不支持原生release关键字,可使用官方提供的release-cli镜像实现:
create_gitlab_release: stage: create_release only: - master needs: [deploy_to_production] image: registry.gitlab.com/gitlab-org/release-cli:latest script: - | RELEASE_TAG="release-v$(date +%Y%m%d-%H%M%S)" release-cli create \ --name "Release $RELEASE_TAG" \ --tag-name "$RELEASE_TAG" \ --description "自动发布记录:代码合并至master分支"
注意事项
- GitLab CI的服务账号默认拥有创建Release的权限,无需额外配置权限
- 标签名称需符合Git标签规范:仅包含字母、数字、
-、_、.,不能有空格或特殊字符 - 若部署任务失败,创建Release的任务会自动跳过,保证发布记录与实际部署状态一致
内容的提问来源于stack exchange,提问作者user2188158
相关产品推荐
相关产品推荐

