Azure Pipelines - 需要等效的 Az DevOps 命令

Azure Pipelines - Equivalent Az DevOps Commands Required

我已成功使用以下命令在 Powershell ISE 中更新我们的 Azure DevOps 项目维基。

$etagVar = (az devops wiki page show --org https://dev.azure.com/[MyOrg] --project [MyProjectName] --path '/MyWiki/HelloWorld' --wiki [MyWiki_wiki] --query eTag -o tsv)

az devops wiki page update --path 'MyWikiPath/HelloWorld' --wiki [MyWiki_wiki --content "Yessssss, it worked !!!" --version $etagVar

我现在需要将这两个命令合并到 YAML Azure Pipeline 中。无论是使用 Bash、PowerShell、Windows 批处理脚本还是与此相关的任何 Azure 管道任务,我都不会特别在意。只要能用,我一点都不嫌弃

到目前为止,我已经尝试了一项 Bash 任务,但非常失败。因此,我们将不胜感激任何建议或想法。

你只需 运行 使用 PowerShell 就像你的 运行 它在你的 PC 中一样,你只需要进行身份验证(使用 env):

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $etagVar = (az devops wiki page show --org https://dev.azure.com/shaykia --project GitSample --path '/README' --wiki 1 --query eTag -o tsv)
      az devops wiki page update --path 'MyWikiPath/HelloWorld' --wiki [MyWiki_wiki --content "Yessssss, it worked !!!" --version $etagVar
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

我可以使用 Bash task 让我的管道更新 Wiki。这是我的工作 YAML 定义:

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- bash: az devops configure --defaults organization=$(System.TeamFoundationCollectionUri) project=$(System.TeamProject) --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

- bash: |
    eTag=$(az devops wiki page show --wiki project.wiki --path '/MyWiki' --query eTag -o tsv)
    az devops wiki page update --wiki project.wiki --path '/MyWiki' --content "Hello World!" --version $eTag
  displayName: 'Update Wiki'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

关于身份验证,您可以使用 System.AccessToken security token used by the running pipeline, by assigning it to an environment variable named AZURE_DEVOPS_EXT_PAT, as shown in the snippet above. For other examples, check this article: Azure DevOps CLI in Azure Pipeline YAML

进行身份验证

注意:您可能需要稍微调整一下 以让它更新 Wiki。

太棒了@Bhargavi Annadevara。在我昨天 post 的最后一个 post 之后,我简短地思考了一下,意识到我什至可能通过陈述 来回答我自己的问题“......我并不特别在意这是否是使用 Bash、Powershell、Windows 批处理脚本完成

那是因为我很快设法修改了我现有的命令并使用 Pipeline Powershell 任务(如下)实现了它,这实现了我的 objective。

- task: PowerShell@2
 inputs:
   targetType: 'inline'
   script: |
     # Write your PowerShell commands here.
           
     $etagVar = (az devops wiki page show --org https://dev.azure.com/[OrgName] --project [TeamProjectName] --path '/[TeamProjectWiki_Path]' --wiki [WikiName] --query eTag -o tsv)
     az devops wiki page update --path '[TeamProjectWiki_Path]' --wiki [WikiName] --content "Hello World....!!" --version $etagVar --verbose
 displayName: 'Preparing to update the wiki page'
 env:
   AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

很高兴我们至少有两个可行的选择。顺便也试试你的 Bash 实现。谢谢