我们的构建工件是 Octopus nuget 包。当构建版本发布时,它会进入 QA 阶段,其中通过 Octopus 部署工件。此章鱼直接从 Azure Artifacts nuget feed 中消耗它。
如果部署和后续测试成功,我们希望将该工件提升到 Azure Artifacts nuget feed 的 Release 视图,因为我们认为它为我们提供了一个不同的 nuget URL,可供下一阶段服务的另一个 Octopus 使用(对于历史记录)我们在每个阶段都有专用章鱼的原因 - 正在努力改变这一点,但这需要时间)。
我们可以手动进行推广,但我们希望自动进行。如何才能做到这一点?
我们正在本地 TFS 2019 RC2 上对其进行测试。
编辑1
建议的插件似乎未安装在本地 TFS 2019 RC2 上:
release release-management azure-devops azure-pipelines-release-pipeline
我们有一个发布管道,每次构建完成时都会自动创建一个新版本。
那时,我们有了一个候选版本,所以这是有道理的。每个构建都可能是可发布的。
在管道中,发布会自动进入开发阶段。因此,我们进行签入和构建,然后将其发送到开发服务器。
发布到阶段有一个批准门。批准通常需要一段时间,等待批准期间将继续开发。
现在,我们有 10 - 15 个构建被列为排队。
因此,我需要自动取消每一个,以便开始发布最新版本。
当较新的版本进入队列时,有没有办法自动取消发布,或者我应该在开发阶段创建一个后批准,使其保持在阶段之外,直到有人在该发布版本上点击“开始”?
我用这个对吗?
azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-release-task
我们正在尝试利用 Azure DevOps 管道来自动化 .NET Core 应用程序的发布过程。这个想法是通过独立的数据库部署在三个不同的环境中。目前,我们有一个由构建生成的工件,并由版本部署在环境中,无需进行任何类型的转换,因此,在这一点上,哪一个可能是最好的方法:
先感谢您
.net-core azure-devops azure-pipelines azure-pipelines-release-pipeline azure-artifacts
我有一个带有变量的发布管道,但似乎没有任何方法可以将该变量的值设置为在发布时评估的值。例如另一个变量。
这是一个真实的例子:
我想做的就是将 的值设置MyExpressionBasedVariable为 的值MyOtherVariable。
所有在线文档和示例似乎都表明这是可能的,但我无法让它发挥作用。我总是以文字字符串而不是计算值结束。
我尝试过使用这些不同的语法:
$(MyOtherVariable)$[variables['MyOtherVariable']]${{variables['MyOtherVariable']}}我已经看到您可以定义自定义任务来将变量名称设置为管道的一部分,但这似乎太过分了。
本质上,我想做的就是将密钥保管库机密重命名为不同的变量名称,以便在配置文件中进行基于约定的 XML 变量替换。
例如,我有一个名为 的秘密this-is-a-secret-name-which-is-a-different-naming-convention-to-my-connectionstrings,但我需要它在一个名为 的变量中MySecret-ConnectionString。
azure-keyvault azure-devops azure-pipelines azure-pipelines-release-pipeline
我知道,在 Azure DevOps 中创建发布管道时,您可以使用管道中的变量更新应用程序的 web.config,这对于所有 appSettings 值都非常有效。
但是,在发布管道期间,我想更新 web.config 的不同部分,特别是sessionState提供程序节点。我已经尝试了一些用于发布管道的插件,例如 Magic Chunks 的 Config Transform,但问题是它需要您指定要编辑的配置文件的路径,但是当它到达发布管道时,源文件位于zip 存档。不知何故,appSettings 的正常转换能够处理解压版本,但在文件解压后我无法进行其他转换。
我知道您可以在构建管道中进行更改,但我们有理由希望在发布管道中进行更改。
有人知道如何在 Azure 应用服务的发布管道中的 appSettings 分组之外对 web.config 进行更改吗?
web-config web.config-transform azure-devops azure-pipelines azure-pipelines-release-pipeline
澄清一下:这与Git 标签无关。我正在谈论可以添加到单个管道构建中的标签。例如,当使用日志记录命令##vso[build.addbuildtag]时。
构建管道向其构建添加了许多标签。例如版本号、构建是否针对候选版本等......
我的问题是如何根据标记的管道构建在发布管道中获取这些标签。
[编辑]应用的解决方案
我的实现方式是在命令任务中使用 Bash。唯一的依赖项是一个名为“myvars.pat”的(秘密)变量。这是为此特定情况创建的个人访问令牌。我使用了一个变量组来与不同的发布管道共享令牌。
# Construct the url based on the environment
ORG=$(basename $(System.CollectionUri))
URL=https://dev.azure.com/$ORG/$(Build.ProjectName)/_apis/build/builds/$(Build.BuildId)/tags?api-version=5.1
# Base64 the PAT token. Mind the ':' prefix !
PAT=$(echo -n ":$(myvars.pat)" | base64)
# Make the GET request. "-L" is needed to follow redirects.
curl -L -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Basic $PAT" -s -o ./tags.json $URL
# Using default tools to extract the array. No doubt there is a cleaner way.
tags=$(cat …Run Code Online (Sandbox Code Playgroud) azure-devops azure-pipelines azure-pipelines-release-pipeline
我正在使用 Azure 管道(.yml 类型)从 Maven 项目构建和发布工件。
现在我所能做的就是发布具有项目pom.xml文件中定义的确切版本号的工件,即1.0-SNAPSHOT
我希望管道能够-SNAPSHOT在每次构建和发布新工件时自动从中删除并更新补丁版本,从而根据最新版本增加补丁版本。所以它会是1.0.1,然后1.0.2在那之后,依此类推。
我应该改变什么pom.xml才能azure-pipelines.yml实现这一点?
azure maven azure-pipelines azure-pipelines-release-pipeline azure-pipelines-yaml
我有一个非常基本的“Hello World”NestJS 应用程序,我正在尝试将其部署到 Azure DevOps 中的 Azure Web App 实例。
我已经使用 YAML 文件设置了一个构建管道,该文件输出带有dist和node_modules目录的构建工件。
然后,在我的发布管道中,我设置了持续部署来下载该工件并部署它。发布管道包含部署 Azure 应用服务的单个步骤。此外,在此步骤之后,我输入了一些部署后操作npm install,其中npm update、 和npm run start:prod来启动 NestJS 服务器。
然而,在运行管道时,该步骤花费了过多的时间,最终出现错误:
当我访问已设置的 Web 应用程序实例 ( https://<project-name>.azurewebsites.net/) 时,我看到:
因此,我单击“诊断资源”来尝试找出我的发布失败的原因,并最终发现此错误:
2020-05-29T20:01:30.864090341Z _____
2020-05-29T20:01:30.864143041Z / _ \ __________ _________ ____
2020-05-29T20:01:30.864149941Z / /_\ \___ / | \_ __ \_/ __ \
2020-05-29T20:01:30.864153741Z / | \/ /| | /| | \/\ ___/
2020-05-29T20:01:30.864157341Z \____|__ /_____ \____/ |__| \___ >
2020-05-29T20:01:30.864161141Z …Run Code Online (Sandbox Code Playgroud) node.js azure-devops azure-pipelines azure-pipelines-release-pipeline nestjs
我正在尝试创建一个流程,当来自分支 a -> b 的 PR 完成时,会创建并完成来自分支 c -> d 的自动 PR。
我查看了这个问题,但它没有提到自动完成
CI/CD 管道 Azure DevOps 在部署发布后自动合并
另外,我可以为自动 PR 设置特定策略,以便自动完成吗?
更新
我尝试使用以下调用:
https://learn.microsoft.com/en-us/rest/api/azure/devops/git/pull%20requests/update?view=azure-devops-rest-5.1
Run Code Online (Sandbox Code Playgroud)
但我得到了错误:
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"Invalid argument value.\r\nParameter name: Invalid
pull request auto complete set by id. Valid values are either the current user identity id, or an empty guid (to unset
auto complete)."
Run Code Online (Sandbox Code Playgroud)
我尝试从响应中获取创建者 ID,但它是空的。
我尝试分配项目集合构建服务(msazure),就像我在这里看到的那样: https ://developercommunity.visualstudio.com/content/problem/298596/autocompletesetby-ignored-in-pull-request-rest-api.html
但我收到了错误。
azure-devops azure-pipelines azure-pipelines-release-pipeline azure-devops-extensions azure-devops-rest-api
我正在尝试为 10 个实例上的 140 多个数据库创建一个数据库部署管道。我们的 IT 团队提到,在某些情况下,数据库会从一个实例移动到另一个实例以实现负载平衡。所以我不能相信每个版本的数据库都会保留在同一个实例上。我们还可以在我们的团队没有听到任何消息的情况下加入新客户。这意味着我必须编写一个可以动态部署到给定实例上的数据库的管道。每个实例都有一个单独的代理。
我现在计划的工作流程。
现在,我将数据库列表作为变量从 powershell 传递回 YAML 管道的部分遇到了问题。理想情况下,我可以返回一个列表,然后使用 YAML 循环功能创建具有给定数据库名称的 SQL Server 部署任务。是否可以从 Powershell 返回列表并使用循环功能循环遍历它们?下面是我使用的 YAML 示例,减去了我不想在那里共享的内容。
/*Pipeline Being Called*/
variables:
- name: BuildConfiguration
value: release
- name: BuildPlatform
value: any cpu
- name: system.debug
value: true
- name: datamode
value: 0
- name: APIMode
value: 0
- name: Instance
value: "[ServerInstance]"
- name: var01
trigger:
- FixingDRDeployments
stages:
- stage: Powershell
pool: [Agent Pool Name]
jobs:
- …Run Code Online (Sandbox Code Playgroud) yaml azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-yaml
azure-pipelines-release-pipeline ×10
azure-devops ×9
.net-core ×1
azure ×1
azure-pipelines-release-task ×1
maven ×1
nestjs ×1
node.js ×1
release ×1
web-config ×1
yaml ×1