在 azure-devops 中的发布管道期间创建标签

Posted

技术标签:

【中文标题】在 azure-devops 中的发布管道期间创建标签【英文标题】:Create a tag during a release pipeline in azure-devops 【发布时间】:2020-01-28 17:57:54 【问题描述】:

设置

在运行发布管道时,我会这样做

    使用 build-pipeline projectA 的工件(使用存储库 projectA) 这个工件是一个节点包构建 我将注入(重新版本)包版本(使用管道变量 VERSION),然后作为最后一步发布到 npm 注册表

目标 除了所有的构建/发布任务都有效之外,我们还有一个特定的问题,那就是发布步骤中缺少的checkout of the repository。我们不想让存储库真正“重建”某些东西,而是为了标记我们使用变量 $VERSION 构建的提交并将其推送到存储库。

问题

我确实知道如何获取源项目存储库构建的 commit hash (env var Build.SourceVersion) 和存储库名称 (env var Build.Repository.Name),但我不明白我实际上将如何获取存储库由于我错过了凭据,因此已签出。

现在我在 Github 上有存储库(私有存储库),但可能也会转移到私有 Bitbucket。

实际的具体问题是,如何使用

签出存储库 使用静态名称 或使用Build.Repository.Name

还有

一般任务(一些 git repo) 或特定的 SCM 存储库任务(例如 checkout-from-githubcheckout-from-bitbucket 使用某种服务连接)。

我假设我需要某种凭据,在我目前的情况下,它将是某种 Github 访问令牌或类似的 (oAuth)?

【问题讨论】:

【参考方案1】:

所以我不确定您使用的是基于 GUI 的版本还是更新的 multi-stage pipeline feature。

对于经典版本 GUI,您可以从 release definition editor 添加一个 Artifact,它是您的 Github 存储库。当您添加 Artifact 时,它会要求您将服务连接配置回 github,或者您可以使用现有连接。

在代理作业级别的发布定义编辑器中,您需要确保选中允许脚本访问 OAuth 令牌

从那里导航到包含您的存储库的发布目录,然后您可以推送标签。

cd $(Agent.ReleaseDirectory)\_enufacas_azureDevOps.Postman
git tag  Rel-$(Build.BuildNumber)
git push --tags

多级流水线也有类似的路径,使用checkout task

【讨论】:

这个问题更多了,非常感谢!我不知道多级管道,也会研究一下! @EugenMayer 没问题!

以上是关于在 azure-devops 中的发布管道期间创建标签的主要内容,如果未能解决你的问题,请参考以下文章

Yaml Azure Devops TerraformInstaller 不明确

如何在 Azure 管道中运行 docker 容器?

为啥线程在进程间通信期间会破坏命名管道?

Azure DevOps - 是不是可以为特定日期和时间安排发布?

Microsoft azure devops python 管道失败,Bash 以代码“5”退出

是否可以在 MongoDB 聚合期间为每个文档创建唯一 ID?