長いコマンドオプションを分割するときは、バックスラッシュではなくYAMLのfolded styleを使いましょう。
ダメなパターン
シェルスクリプトでやるように、バックスラッシュ\
で区切るとうまくいきません。
steps:
- name: Deploy
run: rsync -avzr \
-e "ssh -i ssh_id -p $SSH_PORT -o UserKnownHostsFile=known_hosts" \
--delete \
./public/ \
${SSH_USER}@${SSH_HOST}:${PUBLIC_DIR}
ちなみに、この場合だと
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]
Error: Process completed with exit code 255.
のエラーが出ます。
動くパターン
>
を利用したfolded styleで記述します。末尾以外の改行がスペースと解釈されます。
steps:
- name: Deploy
run: >
rsync -avzr
-e "ssh -i ssh_id -p $SSH_PORT -o UserKnownHostsFile=known_hosts"
--delete
./public/
${SSH_USER}@${SSH_HOST}:${PUBLIC_DIR}
GitHub Actions関連の記事ではバックスラッシュで区切っているものがあり、かつてはバックスラッシュの区切りでも動作していたようです。しかし、現在は有効な記法ではありません。