TL; DR; Gitlab-CI tarafından bir komut olarak verilebilen tek satırlı bir dize olarak yüklenen çok satırlı bir YAML skaler (okunabilirlik için) kullanmak istiyorsunuz. Bunu yapmak için, YAML'de birden çok satıra yayılmış düz (tırnaksız) bir skaler kullanın:
script:
- echo -e
"echo 'hi';
echo 'bye';"
Lütfen YAML tarafından bu tür skalerlere uygulanan bazı kısıtlamalar olduğunu unutmayın. Kesinlikle bilmeniz gereken şey, takip eden her satırın en az bir konumdan daha fazla echo -e
girintili olduğu (bu, toplama düğümüne göre iki konum girintili, hiç girintili olmayan) ve her yeni satırın bir boşlukla değiştirildiği. yüklendiğinde (bu nedenle yeni satırları nereye koyacağınıza biraz dikkat etmeniz gerekir).
Gönderinizde yanlış soruyu sormanıza neden olan çok sayıda yanlış anlama var.
Çok satırlı YAML dizesi diye bir şey yoktur . YAML'nin skalerleri vardır ve bu skalerlerin bazıları bir program tarafından dizeler olarak yüklenebilirken, diğerleri tamsayı, kayan nokta vb. Olarak yüklenir.
Açıkça, bir dize olarak yüklenen skaler düğümlerle ilgileniyorsunuz, çünkü bu dize daha sonra bir komut satırı olarak yorumlanabilir. Ancak çok satırlı komut satırına sahip olmak istemezsiniz (yani gömülü satırsonları ile), çünkü çok satırlı komut dosyaları Gitlab CI'da desteklenmez (@Jordan'ın belirttiği gibi).
Okunabilirlik için çok satırlı skalerleri tek satırlı dizge olarak yüklemek için YAML'nin standart yeteneğini kullanmak istiyorsunuz.
Okunabilirliği önemsemiyorsanız, şunları kullanabilirsiniz:
- echo -e "\n echo 'hi';\n echo 'bye';\n"
ve skalanız alıntılanmadığından (yani ile başladığından echo
), ters eğik çizgi veya tırnak işaretleri için YAML'de özel bir şey yapmanız gerekmez.
Komut dosyasının sonucu aynıdır (boş bir satır yazdırın echo 'hi';
, dört boşluk girintili bir satıra yazdırın echo 'bye';
, dört boşluk girintili bir satıra yazdırın .)
Okunabilirlik için tek satır olarak yüklenen çok satırlı girişi kullanmak istiyorsanız, esasen iki seçenek vardır: YAML'nizde çok satırlı bir düzlem skaler kullanın veya katlanmış bir skaler kullanın.
çok satırlı düz skaler
Düz, skalerin alıntı yapılmadığı anlamına gelir ve YAML'deki çok satırlı herhangi bir şeyde olduğu gibi, aşağıdaki satırların uygun şekilde girintilenmesi gerektiği anlamına gelir, bu durumda ilk satırdan daha ileride
script:
- echo -e
"echo 'hi';
echo 'bye';"
yeni satırlar boşluklarla değiştirilir, bu yüzden şunu yapmayın:
script:
- echo -e
"echo 'hi';
echo '
bye';"
daha önce görünür bir alan elde edeceğiniz gibi bye
.
Böyle bir skaler içinde iki nokta üst üste işareti ve ardından boşluk bırakamayacağınız gibi bazı kısıtlamalar vardır (bu, anahtar-değer çifti gibi görünmesini sağlar).
Düz skalardaki herhangi bir karakterden kaçamayacağınız için düz skalerlerde ters eğik çizgiden kaçışa gerek yoktur, ancak elbette YAML'den yüklenen dizede sona erecek ve yürütülen komut için anlamı olabilecek bir ters eğik çizgi ekleyebilirsiniz. o dizeden.
katlanmış skaler
Katlanmış bir skaler, yükleme sırasında tüm (tek) satırsonları bir boşlukla değiştirildiği için düz skalere benzer:
script:
- >
echo -e
"echo 'hi';
echo 'bye';"
Gerçek komut bilgisini en az katlanmış skaler gösterge ( >
) kadar girintilendirmeniz gerekir .
Düz skalerlerin aksine, böyle şeylerin :
özel bir anlamı yoktur. Dolayısıyla, düz skaler bir YAML hatası atarak başarısız olursa, benzer katlanmış skalarlar büyük olasılıkla olmayacaktır.
\
Çizgilerinize eklemeyi deneyebilirsiniz , ancak bunun işe yarayıp yaramayacağını söyleyemem.