Вместо интерпретации rev|staging
гораздо более естественным способом реализации было бы использование последовательности стилей потока в качестве ключа:
pipelines:
branches:
[rev, staging]:
- step:
script:
- echo 'step'
Это избавит от необходимости заключать в кавычки и следить за тем, чтобы пробелы или лишняя (конечная) запятая не имели семантического значения. В зависимости от библиотеки, которую битбакет использует для обработки, приведенное выше может быть правильно проанализировано, но не загружено (например, PyYAML не может обработать вышеуказанное, но ruamel.yaml
). Мне не удалось проверить, действительно ли этот предпочтительный способ работает в битбакете.
Есть два работающих способа, один из которых использует знакомую функциональность якорей и псевдонимов YAML для предоставления повторяющихся (сложных) структур данных только один раз:
pipelines:
branches:
rev: &sharedsteps
- step:
script:
- echo 'step'
staging: *sharedsteps
Другая возможность, как указывали другие, заключается в использовании некоторой нестандартной, специфичной для битбакета интерпретации скалярных ключей со встроенными запятыми. Я не нашел четкой документации по этому вопросу, но шаблоны подстановки кажутся применимыми, поэтому вы можете использовать {rev,staging}
в качестве ключа.
Уродливое в этом то, что {
— это индикатор последовательности в стиле потока в YAML, поэтому скаляр нужно заключать в кавычки:
pipelines:
branches:
"{rev,staging}":
- step:
script:
- echo 'step'
Приведенное выше было обновлено с использованием исправленного синтаксиса шага, предоставленного BlueM
person
Anthon
schedule
17.02.2017