【问题标题】:Azure Pipelines - Equivalent Az DevOps Commands RequiredAzure Pipelines - 需要等效的 Az DevOps 命令
【发布时间】:2021-11-26 21:25:23
【问题描述】:

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

$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 管道中。无论是使用 Bash、PowerShell、Windows Batch Script 还是任何 Azure 管道任务来完成,我都没有特别在意。只要它有效,我就没有任何疑虑。

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

【问题讨论】:

  • 您在使用 bash 任务时看到的确切错误是什么?请在问题中也包含您的 YAML sn-p。

标签: powershell azure-devops azure-pipelines azure-cli azure-pipelines-yaml


【解决方案1】:

您只需使用 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)

【讨论】:

  • 谢谢@Shayki Abramczyk。看起来我们最终都在沿着同样的思路思考:)
【解决方案2】:

我可以让我的管道使用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 安全令牌进行身份验证,方法是将其分配给名为AZURE_DEVOPS_EXT_PAT 的环境变量,如上面的sn-p 所示。有关其他示例,请查看这篇文章:Azure DevOps CLI in Azure Pipeline YAML

注意:您可能需要稍微调整一下您的 pipeline permissions 以使其更新 Wiki。

【讨论】:

    【解决方案3】:

    这太棒了@Bhargavi Annadevara。在我昨天的最后一篇文章的后面,我简单地思考了一下,意识到我什至可能通过说 回答了我自己的问题......我并不特别在意这是否使用 Bash、Powershell、 Windows 批处理脚本"

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

    - 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 实现。谢谢。

    【讨论】:

    • 当然,很高兴有帮助!两者的实现没有太大区别,请随意选择最适合您要求的。 :)
    猜你喜欢
    • 2021-11-26
    • 2022-10-20
    • 1970-01-01
    • 2022-10-13
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    相关资源
    最近更新 更多