Как передать массив из одного файла в файл yaml

Допустим, у меня есть этот массив:

[ 'value1','value2','value3' ]

Я хочу передать в свой файл yaml этот массив из другого файла.

мой yaml должен принимать массив в этом поле:

parameters: 
  arrayExpected: arrayValueFromAnotherFile

Я мог бы просто это:

parameters:  
  arrayExpected: [ 'value1','value2','value3' ]

Но по определенным причинам это не лучший подход в моей ситуации. Поскольку файл yaml не может быть сильно перенаселен значениями массива.

На данный момент я знаю, что в yaml нет доступных операторов импорта, возможно, у кого-нибудь была подобная проблема и он ее решил?

Что именно вы планируете делать с этим массивом? Может быть, вместо массива вы можете использовать параметр filePath и использовать задачу сценария для анализа файла в формате json (или другом)?

Rui Jarimba 07.06.2024 15:30

И что именно вы подразумеваете под another file? Шаблон конвейера или...?

Rui Jarimba 07.06.2024 15:31

Массив будет обработан с помощью foreach на стороне yaml, а затем каждое значение массива будет использоваться в дальнейшем скрипте js. И да, это может быть другой файл yaml или что-то еще, если я могу импортировать значения из другого файла в текущий yaml.

Danielius Polujanskis 09.06.2024 10:36

@DanieliusPolujanskis, параметры расширяются перед запуском конвейера. Если вы хотите передать значение из yaml, вам нужно использовать другой конвейер, чтобы получить значение и передать значение в целевой конвейер. Пожалуйста, проверьте ответ ниже, дайте мне знать, если у вас есть какие-либо вопросы.

wade zhou - MSFT 12.06.2024 11:58
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
4
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я хочу передать в свой файл yaml этот массив из другого файла.

Вы можете использовать another pipeline, чтобы получить массив из файла, а затем передать значение параметра в целевой конвейер через rest API Запускает — Запустить конвейер с помощью templateParameters, чтобы установить параметры.

Например, массив в array.txt:

Образец 1st pipeline, измените целевой конвейер definition id на свой.

trigger: none

pool:
  vmImage: Windows-latest

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $array = Get-Content array.txt
      $array = $array.TrimStart("[").TrimEnd("]") 
      Write-Output $array        # check the string content
      $body = @"
      { 
              "definition": {
                  "id": 565              # your target pipeline definition id
              },
              "templateParameters": {
                "arrayExpected": "$array"
             }
      }
      "@
      $Uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/builds?api-version=7.1-preview.7"
      Write-Host $Uri
      $buildresponse = Invoke-RestMethod -Method Post -ContentType "application/json" -Uri $Uri -Body $body -Headers @{Authorization = "Bearer $(System.AccessToken)"}
      write-host $buildresponse

The target pipeline sample:

trigger: none

parameters:  
- name: arrayExpected
  type: string
  default: ""

pool:
  vmImage: ubuntu-latest

steps:
- script: echo ${{ parameters.arrayExpected }}

- ${{ each value in split(parameters.arrayExpected, ',')}}:
  - script: echo ${{ value }}
    displayName: 'check value'

Я использовал $(system.accesstoken) для запуска целевого конвейера. Убедитесь, что у учетной записи build service есть разрешение на целевой конвейер.

Другие вопросы по теме