我正在尝试以编程方式创建新的构建管道。我正在为此操作寻找 Azure DevOps REST API。我没有得到使用 REST API 创建管道的正确示例。
请指教。
我想创建一个 azure 管道,这样当我推送到分支(开发)和标记(测试*)时,管道将被触发。但是,当我推送到没有标签的分支(开发)时,管道会被触发,这表明在推送到(开发)分支或(测试*)标签时触发器正在执行。
trigger:
branches:
include:
- develop
- refs/tags/{test*}
Run Code Online (Sandbox Code Playgroud)
仅当推送到(开发)分支也有对(测试*)标签的引用时,如何才能触发触发器?
我正在尝试向 azure Devops 管道中的环境选项卡添加资源,但 Powershell 卡在“连接到服务器”中。我错过了什么吗?
当我单击“添加资源”并且资源是 Windows 虚拟机时,AzureDevOps 会生成 powershell。
我正在尝试根据管道中存在的一个变量设置变量组。yaml 看起来像这样:
但是当我运行管道时出现以下错误:
如果我删除“- group : QA”或“- group : PROD”,管道运行没有任何问题。我究竟做错了什么?
您能否建议让 .env 文件可用于我的 azure devops 管道的最佳方法。(注意我们忽略了要推送到 Git 存储库的 .env 文件)
我的 Node.js 实用程序代码库位于 azure-devops Git 中。
我有一个 azure 构建管道(YML 版本),它是一个 CI 管道(只进行编译和测试)。
单元测试使用需要 API 秘密令牌才能运行的 API 调用。
这些令牌存储在 .env 文件中(我使用了 Node.js 的 dotenv 包)但我们不会将 .env 文件推送到 Git。
那么我应该如何使 .env 文件可用于我的 CI 管道。
我在 Azure Devops Build 管道 YAML 文件中创建了一个 docker build 和 push 任务,我想用两个变量的组合来标记图像,项目名称和内部版本号,所以标记将是 service_22 ( service 是项目,22 是内部版本号)。
如何将两个变量连接在一起,例如 $(variable)_$(variable2)
- task: Docker@2
inputs:
containerRegistry: 'Azure'
repository: 'jdmcontainers'
command: 'buildAndPush'
Dockerfile: 'Dockerfile'
tags: |
$(Build.BuildId)
$(imageName)
Run Code Online (Sandbox Code Playgroud)
这是当前文件,标签作为单独的单独标签添加。
由于 terraform azurerm 提供程序缺少对 azure webapp 访问限制的支持(请参阅 github 问题)。我们使用null_resourcewithlocal-exec来应用访问限制:
provisioner "local-exec" {
command = <<COMMAND
az webapp config access-restriction add --subscription ${self.triggers.subscription_id} --resource-group ${self.triggers.resource_group} \
--name ${self.triggers.web_app_name} --rule-name 'allow application gateway' --action Allow --vnet-name ${self.triggers.vnet_name} \
--subnet ${self.triggers.subnet_name} --priority 100
COMMAND
}
Run Code Online (Sandbox Code Playgroud)
我们的 terraform 代码稍后由 Azure DevOps 管道运行,该管道使用服务连接(使用服务主体)向 Azure 进行身份验证。以下任务正在尝试应用 terraform 资源:
provisioner "local-exec" {
command = <<COMMAND
az webapp config access-restriction add --subscription ${self.triggers.subscription_id} --resource-group ${self.triggers.resource_group} \
--name ${self.triggers.web_app_name} --rule-name 'allow application gateway' …Run Code Online (Sandbox Code Playgroud) NuGet 还原从同一组织中的另一个项目的提要失败 404。
nuget restore从管道中使用时,找不到不同项目中的提要。
我使用 Azure DevOps 有一段时间了,并且在制作 Build Pipeline 时我总是使用经典编辑器 GUI。现在我正在尝试使用 YAML 创建新管道。一切顺利,构建成功。但是,与使用经典编辑器的管道相比,我注意到结帐任务中的不同行为。在两个管道中,“获取源”选项卡中使用的设置是相同的(请参见下面的屏幕截图)
在经典编辑器管道的情况下,签出任务删除并重新创建$(Agent.BuildDirectory).这将导致为每个构建初始化一个新的本地 Git 存储库。但是,对于 YAML 管道,结帐任务仅执行 agit clean -ffdx并仅删除源目录。如何解决 YAML 管道的这个问题?
YAML 管道日志:
经典编辑器管道日志:
git devops azure-devops azure-pipelines azure-yaml-pipelines
azure-devops ×10
azure-pipelines ×10
.net-core ×1
azure ×1
azure-cli ×1
devops ×1
environment ×1
git ×1
node.js ×1
nuget ×1
rest ×1
terraform ×1
yaml ×1