【问题标题】:Handling multiple azure devops pipelines处理多个 azure devops 管道
【发布时间】:2020-05-19 00:28:30
【问题描述】:

我在一个项目中有几个 azure devops 管道文件。这些文件都在一个子目录中,名为azure-pipelines.yml

重命名:我可以在 UI 中重命名管道以区分它们……但我想跳过该手动步骤并在 yml 中执行。是否有一个参数 - 我在文档中找不到它。

Workdirs:管道从主目录开始。感谢here的回答,我可以用workingDirectory调整脚本步骤的工作目录。但是我们也可以针对整个管道进行调整吗?

【问题讨论】:

  • 嗨@Roelant。你看下面的答案了吗?如果有任何问题,请随时告诉我。

标签: azure azure-devops


【解决方案1】:

没有用于重命名管道的参数。有两种方法可以重命名管道。一种是从 UI 手动重命名它们。另一种方式是通过build definition update rest api

下面是一个在 powershell 脚本中通过 rest api 重命名管道的示例。 脚本首先通过build definition get api 获取构建定义。然后为构建定义分配一个新名称,并使用新名称更新定义。

$create = "https://dev.azure.com/{ORG}/{PROJ}/_apis/build/definitions/{DefinitionId}?api-version=5.1"

$PAT="{Person access token}"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))

$result = Invoke-RestMethod -Uri $create -Headers @{authorization = "Basic $base64AuthInfo"} -Method get 

$result.name = "YamlPipeline-newName"

$updateBody= $result | ConvertTo-Json -Depth 100

$result7 =  Invoke-RestMethod -Uri $create -Headers @{authorization = "Basic $base64AuthInfo"} -Method put -ContentType application/json -Body $updateBody

您不能更改整个管道的工作目录。您可以更改任务中的工作目录。

还有predefined variables 可以用来指代代理中的位置。 下面的例子:

$(Agent.BuildDirectory) 映射到c:\agent_work\1

%(Build.ArtifactStagingDirectory) 映射到c:\agent_work\1\a

$(Build.BinariesDirectory) 映射到c:\agent_work\1\b

$(Build.SourcesDirectory) 映射到c:\agent_work\1\s

您也可以submit a feature request for above renaming pipeline and adjust workingdirectory for the entire pipeline(单击建议功能并选择 Azure Devops)到 Microsoft 开发团队。希望他们将来会考虑支持这些功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2019-05-14
    • 1970-01-01
    相关资源
    最近更新 更多