GitHubRelease@1 - GitHub Release v1 任务

使用此任务创建、编辑或删除 GitHub 版本。

语法

# GitHub Release v1
# Create, edit, or delete a GitHub release.
- task: GitHubRelease@1
  inputs:
    gitHubConnection: # string. Required. GitHub connection (OAuth or PAT). 
    repositoryName: '$(Build.Repository.Name)' # string. Required. Repository. Default: $(Build.Repository.Name).
    action: 'create' # 'create' | 'edit' | 'delete'. Required. Action. Default: create.
    #target: '$(Build.SourceVersion)' # string. Required when action = create || action = edit. Target. Default: $(Build.SourceVersion).
    tagSource: 'gitTag' # 'gitTag' | 'userSpecifiedTag'. Required when action = create. Tag source. Default: gitTag.
    #tagPattern: # string. Optional. Use when tagSource = gitTag. Tag Pattern. 
    #tag: # string. Required when action = edit || action = delete || tagSource = userSpecifiedTag. Tag. 
    #title: # string. Optional. Use when action = create || action = edit. Release title. 
    #releaseNotesSource: 'filePath' # 'filePath' | 'inline'. Optional. Use when action = create || action = edit. Release notes source. Default: filePath.
    #releaseNotesFilePath: # string. Optional. Use when releaseNotesSource = filePath. Release notes file path. 
    #releaseNotesInline: # string. Optional. Use when releaseNotesSource = inline. Release notes. 
    #assets: '$(Build.ArtifactStagingDirectory)/*' # string. Optional. Use when action = create || action = edit. Assets. Default: $(Build.ArtifactStagingDirectory)/*.
    #assetUploadMode: 'delete' # 'delete' | 'replace'. Optional. Use when action = edit. Asset upload mode. Default: delete.
    #isDraft: false # boolean. Optional. Use when action = create || action = edit. Draft release. Default: false.
    #isPreRelease: false # boolean. Optional. Use when action = create || action = edit. Pre-release. Default: false.
    #addChangeLog: true # boolean. Optional. Use when action = create || action = edit. Add changelog. Default: true.
  # Changelog configuration
    changeLogCompareToRelease: 'lastFullRelease' # 'lastFullRelease' | 'lastNonDraftRelease' | 'lastNonDraftReleaseByTag'. Required when addChangeLog = true. Compare to. Default: lastFullRelease.
    #changeLogCompareToReleaseTag: # string. Required when changeLogCompareToRelease = lastNonDraftReleaseByTag && addChangeLog = true. Release Tag. 
    changeLogType: 'commitBased' # 'commitBased' | 'issueBased'. Required when addChangeLog = true. Changelog type. Default: commitBased.
    #changeLogLabels: '[{ "label" : "bug", "displayName" : "Bugs", "state" : "closed" }]' # string. Optional. Use when changeLogType = issueBased && addChangeLog = true. Categories. Default: [{ "label" : "bug", "displayName" : "Bugs", "state" : "closed" }].

输入

gitHubConnection - gitHub 连接 (OAuth 或 PAT)
string. 必需。

指定要用于连接到 GitHub 存储库的 GitHub 服务连接的名称。 连接必须基于 GitHub 用户的 OAuth 或 GitHub 个人访问令牌。 有关服务连接的详细信息,请参阅 管理服务连接


repositoryName - 存储 库
string. 必需。 默认值:$(Build.Repository.Name)

指定要在其中创建、编辑或删除 GitHub 版本的 GitHub 存储库的名称。


action - 行动
string. 必需。 允许的值:createeditdelete。 默认值:create

指定要执行的发布操作的类型。 此任务可以创建、编辑或删除 GitHub 版本。


target - 目标
string. 当 action = create || action = edit 时,需要此选项。 默认值:$(Build.SourceVersion)

指定要用于创建 GitHub 版本的提交 SHA,例如 48b11d8d6e92a22e3e9563a3f643699c16fd6e27。 还可以在此字段中使用变量,例如 $(myCommitSHA)


tagSource - 标记源
string. 当 action = create 时,需要此选项。 允许的值: gitTag (Git 标记) , userSpecifiedTag (用户指定的标记) 。 默认值:gitTag

指定要用于创建发布的标记。 选项 gitTag 自动使用与 Git 提交关联的标记。 userSpecifiedTag使用 选项手动提供标记。


tagPattern - 标记模式
string. 可选。 在 时 tagSource = gitTag使用 。

使用正则表达式指定 Git 标记模式,例如 release-v1.*。 将仅为具有匹配 Git 标记的提交创建 GitHub 版本。


tag - 标记
string. 当 action = edit || action = delete || tagSource = userSpecifiedTag 时,需要此选项。

指定要在创建、编辑或删除发布时使用的标记。 还可以在此字段中使用变量,例如 $(myTagName)


title - 发布标题
string. 可选。 在 时 action = create || action = edit使用 。

指定 GitHub 版本的标题。 如果留空,标记将用作发布标题。


releaseNotesSource - 发行说明源
string. 可选。 在 时 action = create || action = edit使用 。 允许的值: filePath (发行说明文件) , inline (内联发行说明) 。 默认值:filePath

指定 GitHub 版本的说明。 filePath 使用 (发行说明文件) 选项将文件内容用作发行说明。 inline 使用 (内联发行说明) 选项手动输入发行说明


releaseNotesFilePath - 发行说明文件路径
string. 可选。 在 时 releaseNotesSource = filePath使用 。

指定包含发行说明的文件。


releaseNotesInline - 发行说明
string. 可选。 在 时 releaseNotesSource = inline使用 。

指定发行说明。 支持 Markdown。


assets - 资产
string. 可选。 在 时 action = create || action = edit使用 。 默认值:$(Build.ArtifactStagingDirectory)/*

指定要上传为发布资产的文件。 可以使用通配符指定多个文件。 例如,将 $(Build.ArtifactStagingDirectory)/*.zip 或 用于 $(System.DefaultWorkingDirectory)/*.zip 发布管道。

还可以指定多个模式,每行一个模式。 默认情况下,将上传 $(Build.ArtifactStagingDirectory) 目录中的所有文件。 有关可用预定义变量列表的详细信息,请参阅 生成变量发布变量


assetUploadMode - 资产上传模式
string. 可选。 在 时 action = edit使用 。 允许的值: delete (删除现有资产) , replace (替换现有资产) 。 默认值:delete

指定要使用的资产上传模式。 使用“ delete (删除现有资产) 选项首先删除发布中的任何现有资产,然后上传所有资产。 replace 使用“ (替换现有资产) 选项替换同名的任何资产。


isDraft - 草稿版本
boolean. 可选。 在 时 action = create || action = edit使用 。 默认值:false

指示是否应将发布另存为草稿 (未发布的) 。 如果为 false,则将发布版本。


isPreRelease - 预发布
boolean. 可选。 在 时 action = create || action = edit使用 。 默认值:false

指示是否应将发布标记为预发布。


addChangeLog - 添加更改日志
boolean. 可选。 在 时 action = create || action = edit使用 。 默认值:true

指定是否要包含更改日志。 如果设置为 true,则会生成当前版本和上一个发布版本之间) (提交和问题的更改列表,并将其追加到发行说明中。


changeLogCompareToRelease - 与 进行比较
string. 当 addChangeLog = true 时,需要此选项。 允许的值: lastFullRelease (上次完整发布) 、 lastNonDraftRelease (上一个非草稿版本) , lastNonDraftReleaseByTag (最后一个非草稿版本按标记) 。 默认值:lastFullRelease

指示要与哪个版本进行比较以生成更改日志:

  • lastFullRelease (上次完整发布) :将当前版本与未标记为预发布的最新非草稿版本进行比较。
  • lastNonDraftRelease (上一个非草稿版本) :将当前版本与最新的非草稿版本进行比较。
  • lastNonDraftReleaseByTag (按标记) 的最后一个非草稿版本:将当前版本与与指定标记匹配的最后一个非草稿版本进行比较。 还可以指定正则表达式而不是精确标记。

changeLogCompareToReleaseTag - 发布标记
string. 当 changeLogCompareToRelease = lastNonDraftReleaseByTag && addChangeLog = true 时,需要此选项。

指定发布标记的正则表达式。 匹配此标记的版本将用作更改日志计算的基础。


changeLogType - 更改日志类型
string. 当 addChangeLog = true 时,需要此选项。 允许的值: commitBased (基于提交的) , issueBased (基于问题的) 。 默认值:commitBased

指定更改日志类型。 更改日志可以基于提交或基于问题。 基于提交的更改日志列出发布中包含的所有提交。 基于问题的更改日志列出发布中包含的所有问题或拉取请求 (PR) 。


changeLogLabels - 类别
string. 可选。 在 时 changeLogType = issueBased && addChangeLog = true使用 。 默认值:[{ "label" : "bug", "displayName" : "Bugs", "state" : "closed" }]

根据与问题或 PR 关联的标签对更改进行分类。 对于标签,可以提及类别的显示名称和问题状态。 标签的示例包括: "[{ "label" : "bug", "displayName" : "Bugs", "state" : "closed" }]"。 如果更改上有多个标签,则第一个指定的标签优先。 将此字段留空可查看问题或 PR 的简单列表。


任务控制选项

除了任务输入,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性

输出变量

无。

备注

在管道中使用此任务创建、编辑或放弃 GitHub 发布

GitHub 服务连接

此任务需要 GitHub 服务连接以及对 GitHub 存储库的“写入”权限。 你可以在 Azure Pipelines 项目中创建一个 GitHub 服务连接。 创建后,在此任务的设置中使用该服务连接的名称。

示例

创建 GitHub 发布

每次任务运行时,以下 YAML 都会创建 GitHub 发布。 生成号用作发布的标记版本。 $(Build.ArtifactStagingDirectory) 文件夹中的所有 .exe 文件和 README.txt 文件均作为资产上传。 默认情况下,该任务还会生成更改日志(此发布中的提交和问题列表),并将其作为发行说明发布。

- task: GithubRelease@1 
  displayName: 'Create GitHub Release'      
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven
    tagSource: manual
    tag: $(Build.BuildNumber)      
    assets: |
      $(Build.ArtifactStagingDirectory)/*.exe
      $(Build.ArtifactStagingDirectory)/README.txt

还可以根据存储库标记控制发布的创建。 仅当触发管道的提交具有与之关联的 Git 标记时,以下 YAML 才会创建 GitHub 发布。 GitHub 发布是使用与关联的 Git 标记相同的标记版本创建的。

- task: GithubRelease@1 
  displayName: 'Create GitHub Release'      
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven           
    assets: $(Build.ArtifactStagingDirectory)/*.exe

你可能还希望将任务与任务条件结合使用,以便更精细地控制任务运行时间,从而限制发布的创建。 例如,在以下 YAML 中,仅当管道由匹配模式“refs/tags/release-v*”的 Git 标记触发时,任务才会运行。

- task: GithubRelease@1 
  displayName: 'Create GitHub Release'   
  condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/release-v')   
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven           
    assets: $(Build.ArtifactStagingDirectory)/*.exe

编辑 GitHub 发布

以下 YAML 将 GitHub 发布的状态从“草稿”更新为“已发布”。 要编辑的发布由指定的标记决定。

- task: GithubRelease@1
  displayName: 'Edit GitHub Release'
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven
    action: edit
    tag: $(myDraftReleaseVersion)
    isDraft: false

删除 GitHub 发布

以下 YAML 删除 GitHub 发布。 要删除的发布由指定的标记决定。

- task: GithubRelease@1
  displayName: 'Delete GitHub Release'
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven
    action: delete
    tag: $(myDraftReleaseVersion)

内联发行说明

以下 YAML 创建 GitHub 发布并添加内联发行说明。

- task: GitHubRelease@1
  inputs:
    gitHubConnection: <GITHUB_SERVICE_CONNECTION>
    repositoryName: '$(Build.Repository.Name)'
    action: 'create'
    target: '$(Build.SourceVersion)'
    tagSource: 'userSpecifiedTag'
    tag: <YOUR_TAG>
    title: <YOUR_TITLE>
    releaseNotesSource: 'inline'
    releaseNotesInline: <YOUR_RELEASE_NOTES>

要求

要求 说明
管道类型 YAML,经典内部版本,经典版本
运行平台 Agent、DeploymentGroup
需求
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
可设置的变量 任意
代理版本 2.0.0 或更高版本
任务类别 实用工具