我在运行VSTS构建定义时运行一个批处理脚本。在该批处理脚本中,我有maven路径,它取自托管代理程序功能部分。我不希望在该批处理文件中对该路径进行硬编码。我想在运行构建定义时使用脚本中的环境变量来调用该路径。我从托管代理功能部分获取的路径。以下是批处理脚本。
在VSTS中使用批处理脚本任务我在VSTS构建定义中调用下面的abc.bat文件。
批处理脚本:
abc.bat:
call C:\java\maven\apache-maven-3.2.2\bin\mvn.bat install:install-file -Dfile=DevOps/proj_Dep_libs/application-agent-1.0.3.jar -DgroupId=application-agent -DpomFile=DevOps/Pss_Dep_libs/application-agent-1.0.3.pom -DartifactId=application-agent -Dversion=1.0.3 -Dpackaging=jar
请帮助我了解如何在运行VSTS构建定义时在批处理脚本中将路径作为变量传递。
答案 0 :(得分:0)
您可以从托管代理功能部分检索maven路径,然后使用Logging Commands创建变量。然后,您可以在批处理脚本中使用该变量,而不是调用maven路径。
创建PowerShell脚本以设置可变量(参考下文 示例,您也可以Use the OAuth token to access the REST API),然后将脚本签入VSTS。
在定义中添加PowerShell任务以运行PS脚本
3.在设置变量步骤
后面的步骤中使用变量$collectionurl = "https://xxx.visualstudio.com"
$user = "username"
$token = "password"
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$baseUrl = "$collectionurl/_apis/distributedtask/pools/2/agents/1?includeCapabilities=true"
$response = (Invoke-RestMethod -Uri $baseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
#Retrieve values
$maven = $response.systemCapabilities.maven
#Set variable
Write-Host "##vso[task.setvariable variable=maven]$maven"
#Then you can use the variable in the next step: $(maven) in TFS, $env:maven in PowerShell, %maven% in batch script.
<强>更新强>
好吧,你可以在没有下面脚本的用户名的情况下使用PAT(如果你不想在脚本中对令牌进行硬编码,那么你可以创建一个秘密变量并将令牌设置为值变量,然后在脚本中使用变量):
$PAT = "nvkoa6qrdrtrxweruiodfiamwd3ya2dkt7r6cx3xxxxw5pyxxxxq"
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$PAT)))
$baseUrl = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)_apis/distributedtask/pools/2/agents/1?includeCapabilities=true"
$response = (Invoke-RestMethod -Uri $baseUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
#Retrieve values
$maven = $response.systemCapabilities.maven
Write-Host "##vso[task.setvariable variable=maven]$maven"