TL; DR; Ви хочете використовувати багаторядковий скаляр YAML (для читабельності), який завантажується як однорядковий рядок, який може бути виданий командою Gitlab-CI. Для цього використовуйте простий (без лапок) скаляр у YAML, який розподілений по кількох рядках:
script:
- echo -e
"echo 'hi';
echo 'bye';"
Зверніть увагу, що YAML має деякі обмеження щодо таких скалярів. Що вам неодмінно потрібно знати, так це те, що кожен наступний рядок має відступ принаймні на одну позицію більше, ніж echo -e
(що відступає на дві позиції відносно вузла збору, який взагалі не відступає), і що кожен новий рядок замінюється пробілом при завантаженні (тому вам потрібно трохи подбати про те, де розмістити нові рядки).
У вашому дописі є кілька помилкових уявлень, через які ви ставите неправильне запитання.
Не існує такого поняття, як багаторядковий рядок YAML . YAML має скаляри, і деякі з цих скалярів можуть бути завантажені програмою у вигляді рядків, тоді як деякі інші будуть завантажені як цілі числа, плаваючі тощо.
Вас, очевидно, цікавлять скалярні вузли, які завантажуються як рядок, оскільки цей рядок тоді можна інтерпретувати як командний рядок. Але ви не хочете мати багаторядковий командний рядок (тобто із вбудованими новими рядками), оскільки багаторядкові сценарії не підтримуються в Gitlab CI (як зазначив @Jordan).
Для читабельності ви хочете використовувати стандартну здатність YAML завантажувати багаторядкові скаляри як однорядковий рядок.
Якщо ви не дбаєте про читабельність, можете скористатися:
- echo -e "\n echo 'hi';\n echo 'bye';\n"
а оскільки ваш скаляр не вказаний (тобто він починається з echo
), вам не потрібно робити нічого особливого в YAML для зворотних скісних рисок або лапок.
Результат сценарію однаковий (надрукуйте порожній рядок, надрукуйте echo 'hi';
на рядку з відступом чотири пробіли, надрукуйте echo 'bye';
на рядку з відступом чотири пробіли.)
Якщо ви хочете використовувати багаторядковий вхід для читабельності, який завантажується як один рядок, є, по суті, два варіанти: використовувати багаторядковий площинний скаляр або використовувати складений скаляр у вашому YAML.
багаторядковий звичайний скаляр
Звичайний означає, що скаляр не вказаний у цитатах, і як і будь-яка багаторядкова річ у багаторядковій лінії YAML, означає, що наступні рядки мають бути відступними належним чином, у цьому випадку далі, ніж початковий рядок
script:
- echo -e
"echo 'hi';
echo 'bye';"
нові рядки замінюються пробілами, тому не робіть:
script:
- echo -e
"echo 'hi';
echo '
bye';"
оскільки ви отримаєте видимий простір раніше bye
.
Існують такі обмеження, як те, що ви не можете мати двокрапку, за якою слід пробіл у такому скалярі (що зробить це схожим на пару ключ-значення).
Немає необхідності уникати зворотних скісних рисок у звичайних скалярах, оскільки ви не можете уникнути будь-яких символів у звичайному скалярі, але, звичайно, ви можете включити зворотну скісну риску, яка потрапить у рядок, завантажений з YAML, і може мати значення для виконуваної команди з цього рядка.
складений скаляр
Складений скаляр схожий на звичайний скаляр тим, що всі (одиничні) нові рядки замінюються пробілом під час завантаження:
script:
- >
echo -e
"echo 'hi';
echo 'bye';"
Вам потрібно відступити фактичну інформацію про команду принаймні на стільки, скільки складений скалярний індикатор ( >
).
На відміну від простих скалярів, подібні речі :
не мають особливого значення. Отже, якщо звичайні скаляри виходять з ладу, видаючи помилку YAML, подібні складені скаляри, швидше за все, не будуть.
\
до своїх рядків, але я не можу сказати, спрацює це чи ні.