4

我想在我的剧本中使用 Azure DevOps 预定义变量“ $(Build.SourcesDirectory) ”:

这是我的剧本:

---
- hosts: KBR_MTL361
  tasks:
   - name: copy file
     win_copy:
      src: D:\Web.config
      dest: $(Build.SourcesDirectory)

我正在使用 Azure DevOps Pipeline 运行这个 ansible-playbook:

TFS 管道任务

但它不工作

有谁知道如何在管道中使用变量?

4

2 回答 2

2

只需将变量添加为azure-pipelines.yml中的附加参数,如下所示:

    - task: Ansible@0
      inputs:
        ansibleInterface: 'agentMachine'
        playbookPathOnAgentMachine: 'ansible/tfs_playbooks/install_agent.yml'
        inventoriesAgentMachine: 'file'
        inventoryFileOnAgentMachine: 'hosts.yml'
        args: '--extra-vars "build_source_dir=$(Build.SourcesDirectory) AGENT_URL=$(AGENT_URL)"'

然后您可以访问剧本中的变量:

---
- hosts: localhost
  tasks:
  - name: show debug
    debug:
      msg: "Dir {{ build_source_dir }} agent url {{AGENT_URL}}"
于 2020-03-29T17:04:13.960 回答
1

如果你看这里:https ://daniel-krzyczkowski.github.io/Parameters-In-Azure-DevOps-Pipelines有一种将管道变量传递给 powershell 脚本的方法,例如:

[CmdletBinding()]
param (
    $ApiManagementServiceName,
    $ApiManagementServiceResourceGroup
)

$apimServiceName = $ApiManagementServiceName
$resourceGroupName = $ApiManagementServiceResourceGroup

Write-Host "Api Management Service Name: $($apimServiceName)"
Write-Host "Api Management Resource Group Name: $($resourceGroupName)"

您说的仍在使用 powershell,因此请尝试一下或尝试做类似的事情,以适应您的情况,对我来说,上述方法在标准 powershell 中效果很好。

于 2020-01-16T11:04:21.407 回答