本文介绍了如何在Azure DevOps管道中设置和读取用户环境变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些测试自动化代码,可以从存储在本地计算机上的环境变量中读取一些值,如下所示:
Environment.GetEnvironmentVariable("SAUCE_USERNAME", EnvironmentVariableTarget.User);
我正在尝试使用Azure管道在管道执行期间创建此变量,然后在我的测试自动化代码中读取它。使用YAML文件。
我正在Azure管道的VS测试步骤中读取此变量。因此,如果我设置该变量,它必须是Azure管道的生命周期。我已尝试使用文档here,但未成功。
也尝试了下面的代码,但失败,错误如下:
# Create a secret variable
- powershell: |
Write-Host '##vso[task.setvariable variable=sauce.userName;issecret=true]abc'
# Attempt to output the value in various ways
- powershell: |
# Using an input-macro:
Write-Host "This works: $(sauce.userName)"
# Using the env var directly:
Write-Host "This does not work: $env:SAUCE_USERNAME"
# Using the mapped env var:
Write-Host "This works: $env:SAUCE_USERNAME"
env:
SAUCE_USERNAME: $(sauce.userName)
推荐答案
最简单的方法是将Azure DevOps(ADO)环境变量值传递到密钥中,如下所示:
- task: DotNetCoreCLI@2
displayName: 'Run tests'
env:
SAUCE_USERNAME: $(sauceUsername) #this will store the value from 'sauceUsername' into SAUCE_USERNAME
SAUCE_ACCESS_KEY: $(sauceKey)
如果您尝试
,则显示或使用值将起作用- bash: echo $(SAUCE_USERNAME) # will output our username stored in SAUCE_USERNAME env variable
如果您在代码中引用SAUCE_USERNAME
,则代码将从Azure服务器获取该值。
This article has a good explanation
之前我也用过Powershell,但是这个方法比较复杂:
- 在Azure DevOps管道中创建变量,并为这些变量提供值。
- 创建一个Powershell脚本,您将在开始时运行该脚本来设置您的环境变量。This is我的POSH的外观。
- 开始时将此POSH作为CI管道中的单独步骤运行,这将设置用于运行管道的VM的环境变量。
这是另一个detailed article可能对您有帮助的
。根据请求,我还附加了使此成为可能的PowerShell代码。
Param(
[string]$sauceUserName,
[string]$sauceAccessKey,
[string]$sauceHeadlessUserName,
[string]$sauceHeadlessAccessKey
)
Write-Output "sauce.userName that was passed in from Azure DevOps=>$sauceUserName"
Write-Output "sauce.accessKey that was passed in from Azure DevOps=>$sauceAccessKey"
Write-Output "sauce.headless.userName that was passed in from Azure DevOps=>$sauceHeadlessUserName"
Write-Output "sauce.headless.access.key that was passed in from Azure DevOps=>$sauceHeadlessAccessKey"
[Environment]::SetEnvironmentVariable("SAUCE_USERNAME", "$sauceUserName", "User")
[Environment]::SetEnvironmentVariable("SAUCE_ACCESS_KEY", "$sauceAccessKey", "User")
[Environment]::SetEnvironmentVariable("SAUCE_HEADLESS_USERNAME", "$sauceUserName", "User")
[Environment]::SetEnvironmentVariable("SAUCE_HEADLESS_ACCESS_KEY", "$sauceAccessKey", "User")
这篇关于如何在Azure DevOps管道中设置和读取用户环境变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!