gpt4 book ai didi

azure - 如何在Azure DevOps Pipeline中设置和读取用户环境变量?

转载 作者:行者123 更新时间:2023-12-04 18:56:16 41 4
gpt4 key购买 nike

我有一些测试自动化代码,可以从本地计算机上存储的环境变量中读取一些值,如下所示:

Environment.GetEnvironmentVariable("SAUCE_USERNAME", EnvironmentVariableTarget.User);

我尝试使用 Azure Pipelines 在管道执行期间创建此变量,然后在我的测试自动化代码中读取它。使用 YAML 文件。

我正在 Azure Pipeline 的 VS Test 步骤中读取此变量。因此,如果我设置该变量,它必须在 Azure Pipeline 的生命周期内有效。

我尝试使用文档 here但一直没有成功。

也尝试了下面的代码,但失败并出现以下错误:

azure-pipelines.yml (Line: 39, Col: 1, Idx: 1252) - (Line: 39, Col: 1, Idx: 1252): While scanning a simple key, could not find expected ':'.

# 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) 环境变量值传递到您的 key 中,如下所示:

- 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,但是这种方法比较复杂,比较复杂:

  1. 在 Azure DevOps 管道中创建变量并为这些变量提供值。
  2. 创建一个 Powershell 脚本,您将在开始时运行该脚本来设置环境变量。 This is我的时髦是什么样子。
  3. 从一开始就将这个 Posh 作为 CI 管道中的单独步骤运行,这将为用于运行管道的虚拟机设置环境变量。

这是另一个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 - 如何在Azure DevOps Pipeline中设置和读取用户环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52432799/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com