Доступ к переменной YAML во встроенном сценарии PowerShell

#powershell #azure-devops #yaml

#powershell #azure-devops #yaml

Вопрос:

Если у меня есть конвейер YAML;

 variables:
- name  : myVariable
  value : 'abcd'
 

и если я хочу запустить какой-нибудь встроенный powershell — как я могу получить доступ к этому значению (abcd) в сценарии powershell;

Я ожидал, что это сработает, но этого не произошло;

 - task: PowerShell@2
    displayName: "Do the thing"
    inputs:
      targetType: 'inline'
      script: 
        write-host $(myVariable)
 

Комментарии:

1. Afaik, в PowerShell нет собственных анализаторов YAML, но есть несколько внешних, например: powershellgallery.com/packages/powershell-yaml

2. Привет, Джеймс Кук, согласно вашему описанию, я протестировал его, и он работает, я поделился определением yaml и результатом ниже, вы можете это проверить. Если я вас неправильно понял, пожалуйста, опишите ваш вопрос более подробно. Полное определение Yaml лучше. Спасибо.

Ответ №1:

мы могли бы обратиться к этому документу, чтобы указать переменные на уровне конвейера, этапа или задания.

Определение сборки YAML:

 pool:
  vmImage: 'vs2017-win2016'

variables:
- name  : myVariable
  value : 'abcd'

steps:

- task: PowerShell@2
  displayName: "Do the thing"
  inputs:
    targetType: 'inline'
    script: 
      write-host $(myVariable)
 

Результат:

введите описание изображения здесь

Ответ №2:

Не уверен, работает ли это в Azure DevOps, но в GitLab это:

 $VAR_NAME
 

или

 $env:VAR_NAME
 

Я использую эти две строки в существующем yaml, и они работают нормально:

 - $PKG_VERSION = (Get-ChildItem -Path . -Filter *.version).basename
- Write-Host $PKG_VERSION
 

Комментарии:

1. Если вы не знаете, правильный ли ваш ответ, не публикуйте его как ответ.