Azure DevOps Build Piplines의 변수 그룹에 저장된 중첩 변수의 값을 압축 해제하거나 가져 오는 방법은 무엇입니까?

웨이퍼

Azure Pipelines 변수를 사용하여 Powershell 스크립트의 변수 내에서 변수를 사용할 수 있나요?

대본

  1. Azure Pipelines 변수 그룹에 두 개의 변수가 설정되어 있습니다. DeploymentCredentials

    ㅏ. DeployUATApiPassword = "123456"

    비. DeployPRODApiPassword = "789654"

  2. 파이프 라인의 변수 섹션에 다른 변수가 다음과 같이 설정됩니다. DeploymentEnvironment

  3. 런타임에 DeploymentEnvironment변수 값은 UAT또는PROD

  4. 환경에 따라 변수 그룹에 정의 된 변수로 저장된 암호를 가져오고 싶습니다. 런타임에 다음과 같이 작동합니다.

    # setting the value of the variable to UAT
    Write-Host "##vso[task.setvariable variable=DeploymentEnvironment]UAT" 
    
  5. 이제 DevelopmentEnvironment변수에 값 UAT이 있습니다. 다른 단계에서는 런타임에만 알려진 UAT 배포 환경의 비밀번호를 가져 오겠습니다.

    # I want to get the Password 
    # The following works! but not useful for me, UAT is hard-coded!!
    $deployPwd = $(DeployUATApiPassword) # works! but not useful for me, UAT is hard-coded!!
    
    # I want to get the Password
    # the following doesn't work, I only know the environment at runtime
    # Replaces the inner variable to `DeployUATApiPassword`
    # Raises an error, DeployUATApiPassword : The term 'DeployUATApiPassword' is not recognized as the name of a cmdlet...
    $deployPwd = $(Deploy$(DeploymentEnvironment)ApiPassword) 
    
    # All the following didn't work either, but no error...
    Write-Host $('Deploy$(DeploymentEnvironment)ApiPassword')     # Output: DeployUATApiPassword
    Write-Host $($("Deploy$(DeploymentEnvironment)ApiPassword"))  # Output: DeployUATApiPassword
    Write-Host { 'Deploy$(DeploymentEnvironment)ApiPassword' }    # Output: 'DeployUATApiPassword'
    Write-Host { Deploy$(DeploymentEnvironment)ApiPassword }      # Output: DeployUATApiPassword
    Write-Host { $(Deploy$(DeploymentEnvironment)ApiPassword) }   # Output: $(DeployUATApiPassword) 
    

마찬가지로 여러 가지 방법으로 pwd를 가져 오려고했지만 아무것도 작동하지 않았습니다. 예를 들어, 한 가지 방법은 다른 변수를 만드는 것이었고 변수 DeployApiPassword의 값을로 설정했습니다 Deploy$(DeploymentEnvironment)ApiPassword. 이것도 운이 없다 ...

$deployPwd = $(DeployApiPassword) # Output: DeployUATApiPassword

원하는 출력

변수 그룹에 설정된 변수 중 하나에서 암호를 가져오고 싶습니다. 비밀번호 변수 이름에는 배치 환경이 포함됩니다. 배포 환경은 런타임에만 설정됩니다.

    # I know something is wrong with the following, but that's how I want to run.
    $deployPwd = $(Deploy$(DeploymentEnvironment)ApiPassword) 

    Write-Host $deployPwd # output: *** (of course, the pwd is hidden, but at least it fetches)
잭 지아

Azure Pipelines 변수 그룹에 설정된 변수는 PowerShell 작업에서 환경 변수로 사용됩니다. 따라서 기본적으로 다음과 같은 값을 가져와야합니다.

$environment = $env:DeploymentEnvironment
$deployPwd = $env:DeployUATApiPassword

동시에 환경에 따라 동적으로 암호를 얻으려면 다음을 시도 할 수 있습니다.

$environment= $env:DeploymentEnvironment

Write-Host "Deployment Environment is " $environment

$realName = $("Deploy${environment}ApiPassword")
$pwd = [Environment]::GetEnvironmentVariable($realName)

#I used UAT password, check it here
Write-Host $pwd.Equals("123456")

산출:

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관