Concourse CI - переменная массива

Я пытаюсь выяснить, как создать массив с некоторым IP-адресом CIDR, чтобы иметь такой же массив в моем конвейере. Итак, вот пример файла var:

whitelist-ip-ranges: |-
- 10.0.0.0/24
- 11.0.0.0/24
- 12.0.0.0/24

Мой конвейер похож на:

....
....
....
params:
     variables:
        loadBalancerSourceRanges:
          {{whitelist-ip-ranges}}

И я хочу, чтобы это было:

....
....
....
params:
     variables:
        loadBalancerSourceRanges:
          - 10.0.0.0/24
          - 11.0.0.0/24
          - 12.0.0.0/24

или же

....
....
....
params:
     variables:
        loadBalancerSourceRanges: [10.0.0.0/24,11.0.0.0/24,12.0.0.0/24]

Внутри моего шаблона helm у меня есть файл values.yaml, который у меня есть:

loadBalancerSourceRanges: null

и это будет отменено конвейером. И наконец, в моем сервисном файле я делаю цикл:

{{if .Values.loadBalancerSourceRanges}}
  loadBalancerSourceRanges:
    {{range $rangeList := .Values.loadBalancerSourceRanges}}
    - {{ $rangeList }}
    {{end}}
{{end}}

Кто-нибудь из вас, ребята, смог сделать что-то подобное?

1 ответ

Извините, я не могу говорить ни с чем helm основан. Я могу говорить за трубопровод конкурса, все же.

Конкурс не поддерживает предоставление params для задач, которые являются массивом. params передаются в качестве переменных среды выполняемой задаче, поэтому они преобразуются из YAML в простую пару ключ-значение строки.

Если вы хотите передать более сложную информацию. Есть два варианта:

  • закодируйте параметр как JSON/YAML, чтобы его можно было проанализировать как строку из вашей среды задач
  • предоставить задаче входные данные из ресурса, где может быть предоставлен файл - например, ресурс s3 с содержимым loadBalanceSourceRanges

Эти программные способы - примеры, которые я использовал прежде, чтобы выполнить передачу более сложных данных (например, массивов) в задачу.

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