Azure Devops 使用存储库名称获取repositoryId

Dev*_*ner 7 bash azure-devops azure-pipelines azure-devops-rest-api azure-devops-pipelines

我正在编写一个 BASH 脚本,其中创建一个天蓝色存储库,然后推送代码。执行此步骤后,它将继续并通过azure-pipeline.yamlAzure 存储库中存在的文件创建一个 Azure 管道。

在此步骤中,我们需要传递存储库 ID 才能创建管道,但这里的问题是我无法将其保留为用户输入,因为它将在脚本本身内创建,现在我对此感到震惊。

有什么方法可以直接在脚本中从新创建的存储库中获取存储库 ID 吗?

https://dev.azure.com/{{organization}}/{{project}}/_apis/pipelines?api-version=6.0-preview.1
Run Code Online (Sandbox Code Playgroud)
{
    "folder": "Folder-Name",
    "name": "Pipeline-Name",
    "configuration": {
        "type": "yaml",
        "path": "azure-pipelines.yml",
        "repository": {
            "id": "Repo-ID",
            "name": "Repo-Name",
            "type": "azureReposGit"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

bin*_*ate 6

您可以使用JMESPathaz repos list查询来查找 ID。例如:

az repos list \
  --organization "{{organization}}" \
  --project "{{project}}" \
  --query "[?name == '{{respository_name}}'].id" \
  --output tsv
Run Code Online (Sandbox Code Playgroud)

只需在 bash 子 shell 中使用它即可。例如result=$(cli_command)


Dev*_*ner 1

这可以通过将输出作为变量保存到另一个文件中来完成(正如 @Shayki Abramczyk 所建议的),然后借助以下命令,我们可以调用脚本文件中的 ID 变量

$ jq -r '.id' Repooutput.txt
dad04f6d-4e06-4420-b0bc-cb2dcfee2dcf

Run Code Online (Sandbox Code Playgroud)