Перебор переменных в группе переменных в конвейерах Azure

#azure-devops #yaml #azure-pipelines

#azure-devops #yaml #azure-конвейеры

Вопрос:

azure-pipelines.yml Как мне перечислить в файле все переменные, определенные в «Группе переменных», созданной в пользовательском интерфейсе?

Группа переменных

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

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

1. Привет, как насчет проблемы? Разрешил ли приведенный ниже ответ ваш вопрос? Если нет, не могли бы вы сообщить мне последнюю информацию об этой проблеме?

Ответ №1:

На уровне конвейера нет разницы между переменными, установленными в конвейере, и переменными из группы переменных. Но вы можете использовать Azure DevOps CLI для достижения своей цели.

Пожалуйста, проверьте переменную az pipelines-список переменных группы.

И это способ, которым вы можете вызвать CLI из pipeline — Azure DevOps CLI в Azure Pipeline YAML

Пример для LINUX

 steps:
# Updating the python version available on the linux agent
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'

# Updating pip to latest
- script: python -m pip install --upgrade pip
  displayName: 'Upgrade pip'

# Updating to latest Azure CLI version.
- script: pip install --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge
  displayName: 'upgrade azure cli'

- script: az --version
  displayName: 'Show Azure CLI version'

- script: az extension add -n azure-devops
  displayName: 'Install Azure DevOps Extension'

- script: echo ${AZURE_DEVOPS_CLI_PAT} | az devops login
  env:
    AZURE_DEVOPS_CLI_PAT: $(System.AccessToken)
  displayName: 'Login Azure DevOps Extension'

- script: az devops configure --defaults organization=https://dev.azure.com/{OrganizationName} project="Movie Search Web App" --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

- script: |
    az pipelines variable-group variable list --group-id 45
  displayName: 'Show variable group variables'

 

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

1. В этом последнем сценарии «Показать переменные группы переменных» возможно ли получить группу по имени вместо идентификатора группы?

Ответ №2:

Мы могли бы использовать REST API и скрипт power shell для перебора группы переменных

Создайте токен PAT, сохраните его в переменной конвейера и установите для него значение secret, затем добавьте командную оболочку управления задачами и введите приведенный ниже сценарий

Сценарий командной оболочки:

 $connectionToken="$(pat)"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$URL = "https://dev.azure.com/{Org name}/{Project name}/_apis/distributedtask/variablegroups?groupIds={Variable group ID}amp;api-version=6.0-preview.2"
$Result = Invoke-RestMethod -Uri $URL -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get 
 

$Variable = $Result.value.variables | ConvertTo-Json -Depth 100

Write-Host $Variable
 

Результат:

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

Ответ №3:

Вы можете использовать расширение форматирования группы переменных. В OutputFormat вы можете указать желаемый формат, такой как CLI или JSON

 - task: VariableGroupFormatter@0
  name: variableGroup
  displayName: "Format variables"
  inputs:
    variableGroupID: '6'
    outputFormat: 'JSON'

- script: echo $(variableGroup.formattedVariables)
 

Результат:

Пример