无法在Azure Pipelines中的脚本任务中更改PATH

时间:2018-10-03 15:54:37

标签: azure-pipelines

作为Azure Pipelines构建的一部分,我需要安装一些工具并将其添加到PATH中,以供后续使用(通过Ant任务)和脚本任务(在Windows主机上)使用。经过大量研究,我发现应该解决什么问题:##vso[task.prependpath] logging command。但是我无法使其在我的项目中起作用。类似于以下内容的操作无济于事,PATH保持不变:

steps:
- script: |
    ECHO ##vso[task.prependpath]%AGENT_BUILDDIRECTORY%\.tmp\node_modules\.bin
    IF NOT EXIST .tmp MKDIR .tmp
    IF NOT EXIST .tmp\node_modules\.bin\sfdx (
      PUSHD .tmp
      npm install sfdx-cli
      POPD
    )
  displayName: Install SFDX CLI

我在做什么错了?

NB:the complete configuration is on GitHub

3 个答案:

答案 0 :(得分:1)

有关如何在脚本中设置变量的官方文档: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#set-in-script

批次

@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic

PowerShell

Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
Write-Host "##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with
            garlic"

#!/bin/bash
echo "##vso[task.setvariable variable=sauce]crushed tomatoes"
echo "##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic"

答案 1 :(得分:0)

在我这边测试了命令<select name="provinsi_dom" id="provinsi_dom"> <?php //mengambil nama-nama provinsi yang ada di database $sqlProvinsi_dom = mysqli_query($con,"SELECT * FROM provinsi ORDER BY nama_provinsi ASC"); echo "<option value=''>--Pilih Provinsi--</option>"; while($p=mysqli_fetch_array($sqlProvinsi_dom)){ if ($p['id_provinsi']==$provinsi_dom) { $cek="selected"; }else { $cek=""; } echo "<option value='$p[id_provinsi]' $cek>$p[nama_provinsi]</option>" ; } ?> </select> ,它起作用了。 ECHO ##vso[task.prependpath]%AGENT_BUILDDIRECTORY%\.tmp\node_modules\.bin已成功添加到路径。

请确保您正在检查路径是否在下一个构建任务中更改,因为更新的环境变量仅反映在后续任务中。

答案 2 :(得分:0)

如果您在Windows主机上使用bash,则一旦添加路径,就只能从单独的任务中访问它。

例如: 您将路径放在一个脚本中,并在另一个脚本中进行访问。

steps:         
- script: |
    echo "##vso[task.prependpath]$(PROGRAM)/bin"  #prepend path

- script: |
    program.exe    #access program here