Luego de indagar en diferentes repositorios y foros al concluir hemos hallado la respuesta que te compartiremos ahora.
Solución:
configure las variables de canalización y luego intente esta asignación en su archivo yaml:
# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
pool:
vmImage: 'VS2017-Win2016'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
yourEnvVar: '$(yourPipelineVariable)'
yourOtherEnvVar: '$(yourOtherPipelineVariable)'
Puede haber otras formas de hacer esto, pero así es como pude lograr esto:
- Cree sus variables en su canalización de Azure DevOps y proporcione los valores a esas variables.
- Cree un script de Powershell que ejecutará al principio para configurar sus variables Env. Así es como se ve mi Posh.
- Ejecute este Posh al principio como un paso separado en su canalización de CI y esto establecerá las variables de entorno para la máquina virtual que se utiliza para ejecutar su canalización.
Este es otro artículo detallado que podría ayudarte con esto.
Según la solicitud, también adjunto el código de PowerShell que lo hace posible.
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")
Intenté usar las dos sintaxis siguientes como se sugiere en las respuestas anteriores, pero la variable de entorno siempre estaba en blanco cuando intentaba usarla en tareas más adelante en la tubería (como durante la compilación o mientras se ejecutaban las pruebas).
[Environment]::SetEnvironmentVariable("SAUCE_USERNAME", "$(sauceUserName)", "User")
variables:
sauceUserName: '$(sauceUserName)'
Lo que funcionó para mí fue usar la sintaxis para escribir variables de Azure DevOps en una tarea de script de PowerShell en línea:
- task: [email protected]
displayName: Add the username as an environment variable so the tests can find it.
inputs:
targetType: 'inline'
script: |
Write-Host "Making the sauceUsername available as an environment variable."
Write-Host "##vso[task.setvariable variable=SAUCE_USERNAME;]$(sauceUserName)"
Luego, mi tarea de compilación pudo encontrar la variable de entorno, y también pude acceder a ella en las tareas de script de PowerShell más abajo en la canalización con un código como:
- task: [email protected]
displayName: Display the environment variable value for debugging purposes.
inputs:
targetType: 'inline'
script: |
[string] $username= $Env:SAUCE_USERNAME
Write-Host "The SAUCE_USERNAME environment variable value is '$username'."
Si tienes algún atasco y forma de arreglar nuestro post puedes ejecutar una crónica y con gusto lo analizaremos.