You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Pipelines YAML创建GitHub Release及排障

解决Azure Pipelines中GitHubRelease任务报错的问题

先帮你拆解两个尝试中的错误原因,再给出贴合你需求的正确配置方案:

错误原因分析

尝试1(Create Release)报错

你遇到的Error: Not Found核心问题出在tagSource: 'auto'的逻辑:这个配置会尝试查找当前构建对应的commit($(build.sourceVersion))上关联的标签,但你当时的提交并没有打标签,导致GitHub API返回404错误。非master分支并不是问题根源,没有对应标签才是触发报错的关键。

尝试2(Edit Release)报错

使用action: 'edit'的前提是仓库中已经存在对应的Release,但你的仓库还没有任何已发布的Release,任务找不到可编辑的对象,因此抛出"Not Found"错误。另外,tagSource: 'auto'和手动指定tag: '1.0'的配置存在冲突,进一步导致任务逻辑异常。

正确解决方案

你的需求是推送标签时触发Release并上传wheels,我们可以通过以下步骤完成配置:

1. 配置Pipeline仅在推送标签时触发

在YAML开头添加触发规则,避免每次代码提交都运行Release任务:

trigger:
  tags:
    include:
      - '*'  # 匹配所有标签,也可以指定特定格式如v*

2. 修正GitHubRelease任务配置

使用action: 'create'(每次推送新标签都需要创建新Release),并正确关联已推送的标签:

# 先确保之前的Python wheels构建、PublishBuildArtifacts任务已成功执行

- task: GithubRelease@0
  inputs:
    gitHubConnection: 'my-connection'
    repositoryName: 'my-repo'
    action: 'create'
    target: '$(build.sourceVersion)'  # 关联当前标签对应的commit
    tagSource: 'gitTag'  # 直接从Git中读取已推送的标签
    # 也可以替换为tag: '$(Build.SourceBranchName)',因为推送标签时SourceBranchName就是标签名(比如1.0)
    assets: '$(Build.ArtifactStagingDirectory)/*'
    assetUploadMode: 'replace'
    # 可选:设置Release状态,比如是否为预发布
    # isPreRelease: false

3. 关键检查项

  • GitHub服务连接权限:确认my-connection这个服务连接拥有目标仓库的读写权限(包括创建Release、上传资产、读取标签的权限),如果是OAuth连接,要确保授权范围包含repo权限。
  • 构建工件存在性:运行Release任务前,确认PublishBuildArtifacts已成功将wheels文件上传到$(Build.ArtifactStagingDirectory),可以在Pipeline的Artifacts页面验证文件是否存在。

测试流程

  1. 提交代码并推送标签:
git commit -am "Prepare release 1.0"
git tag -am "Release 1.0" 1.0
git push origin 1.0
  1. 等待Pipeline自动触发,检查GitHub仓库是否成功创建Release并上传了对应的wheels文件。

内容的提问来源于stack exchange,提问作者fredrik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:19:03