使用GitLab-Runner和Docker自动发布时Release-Job报错求助
问题排查与修复方案
核心报错原因
你的release_job继承了全局default段中的before_script(执行docker info命令),但你指定的release-cli镜像没有安装Docker客户端,导致执行docker info时直接失败,这就是release任务报错的根源。
修复步骤
覆盖release_job的before_script
在release_job中添加空的before_script配置,避免继承全局的Docker相关命令:release_job: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest before_script: [] # 关键:清空before_script,不执行docker info rules: - if: $CI_COMMIT_TAG script: - echo "Running the release job." release: tag_name: $CI_COMMIT_TAG name: 'Release $CI_COMMIT_TAG' description: 'Release created using the release-cli.'验证Runner权限
确保执行该任务的GitLab Runner拥有足够权限:- 进入项目的「Settings → CI/CD → Runners」
- 检查对应Runner的权限,需包含
api权限(用于调用GitLab Release API)
可选:添加exe文件到Release资产
如果你需要把打包好的exe作为Release的下载资产,可以在release配置中补充assets字段,关联build阶段生成的artifact:release: tag_name: $CI_COMMIT_TAG name: 'Release $CI_COMMIT_TAG' description: 'Release created using the release-cli.' assets: links: - name: '项目可执行文件' url: '$CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/dist/your-app.exe' filepath: '/your-app.exe' # 可选:指定下载后的文件名 link_type: 'package'
额外说明
你的build阶段运行正常是因为build任务使用了docker:24.0.7镜像,自带Docker客户端,能正常执行docker info命令;而release任务用的是专门的release-cli镜像,不需要也没有Docker环境,所以必须断开全局before_script的继承。
内容的提问来源于stack exchange,提问作者Ozge Durgut
相关产品推荐
相关产品推荐

