我正在使用Azure DO管道运行测试,最后,我具有“发布测试结果”任务。该任务会生成一个指向测试结果的链接,其外观类似于: private void runTextRecognition() {
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(mSelectedImage);
FirebaseVisionTextRecognizer recognizer = FirebaseVision.getInstance()
.getOnDeviceTextRecognizer();
mTextButton.setEnabled(false);
recognizer.processImage(image)
.addOnSuccessListener(
new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText texts) {
mTextButton.setEnabled(true);
processTextRecognitionResult(texts);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mTextButton.setEnabled(true);
e.printStackTrace();
}
});
}
。是否有任何方法可以获取https://.../.../.../.../Runs?runId=1031864&_a=runCharts
(在示例中为1031864)或整个链接,以将其用作以下任务中的变量?我试图在发布变量中分配runId
并在以下任务中传递它,但未给出结果。有人可以帮忙吗?提前谢谢?
答案 0 :(得分:1)
有没有办法获取runId或整个 链接以在以下任务中将其用作变量?
对于此问题,您可以在powershell任务中使用脚本调用Runs - List api以获取测试运行列表。
GET https://dev.azure.com/{organization}/{project}/_apis/test/runs?api-version=5.1
然后,我们需要获取最新的测试runId,因为返回的结果是底部的最新测试运行,因此我们需要按降序对返回的结果进行排序。
由于最近的测试运行具有最大的ID,因此我们可以检索测试运行的列表,其排序顺序是ID的结果。然后获得结果的第一项。
下面是一个示例powershell脚本,有关详细信息,您可以参考此case。
$testRuns = Invoke-RestMethod -Uri "https://dev.azure.com/{organization}/{project}/_apis/test/runs?api-version=5.1" -Headers $headers -Method Get
$testRunsIdSorted = $testRuns.value | sort-object id -Descending
$mostRecentTestRun = Invoke-RestMethod -Uri "https://dev.azure.com/{organization}/{project}/_apis/test/runs/$($testRunsIdSorted[0].id)?api-version=5.1" -Headers $headers -Method Get
获取mostRecentTestRun
之后,我们可以使用脚本##vso[task.setvariable variable=mostRecentTestRun;isOutput=true]$mostRecentTestRun
“将其输出到以下任务。
更新:
这是我在powershell任务中的完整脚本:
$url = 'https://dev.azure.com/{orgName}/{proName}/_apis/test/runs?api-version=5.1';
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get
$testRunsIdSorted = $response.value | sort-object id -Descending
Write-Host "results = $($testRunsIdSorted | ConvertTo-Json -Depth 100)"
$result = Invoke-RestMethod -Uri https://dev.azure.com/{org}/{pro}/_apis/test/runs/$($testRunsIdSorted[0].id)?api-version=5.1 -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get
Write-Host "results = $($result | ConvertTo-Json -Depth 100)"
Write-Host "result = $($result.id | ConvertTo-Json -Depth 100)"
对于此身份验证,您需要单击代理作业中的Allow scripts to access the OAuth token
选项。
我可以在输出中获取runId:
Update2 :
将变量传递到以下任务时遇到问题
对于此问题,您需要像下面这样设置变量:
Write-Host "##vso[task.setvariable variable=runId]$($result.id | ConvertTo-Json -Depth 100)"
然后在以下任务中,您只需使用此格式$(runId)
即可获取变量。例如:
Write-Host "$(runId)"