🤯
GitHub Actionsで改行コードにハマった
ローカルにある改行を含むファイルをGitHub Actionsで利用しようとしていました。
ところが、スクリプト側で渡された変数を \n
で分割したりして処理を進めていたのですが、思うような挙動になりませんでした。
ということで一旦検証してみます。
検証
GitHub ActionsのVariablesに以下のような値を設定してみます。
Hello
World
なんの変哲もない改行入りのテキストです。
これを以下のスクリプトで文字コードで出力してみます。
echo $VALUE1 > temp.txt
xxd -p temp.txt
GitHub Actions上で実行してみると
48656c6c6f0d20576f726c640a
という結果になりました。
同じことをローカルでやってみます。
すると
48656c6c6f0a576f726c640a
という値になりました。
分かりづらいですが中央部分が 0d20
と 0a
という違いがあります。
0d
はCR( \r
)、 20
はスペースですね。
0a
はLF( \n
)で改行です。欲しいのはこちら。
僕の設定の仕方が悪いのか分かりませんが、改行コードが変わり、スペースまで埋め込まれていたことが分かりました。
対処方法
いくつか対処方法はあると思います。
\r
を \n
に置換しちゃうというのも手かもしれません。
僕はGitHub Actionsに設定する文字列をBase64でエンコードして、利用する時にデコードするようにして対処しました。
GitHub ActionsのVariablesに改行を含む文字列を設定しようとしている方はお気をつけて ✋
興味があるか分かりませんが検証はこちらで行いました。
Discussion
原因としては
あたりでしょうか。
echo "$VALUE1"
とすることでCRLFとして出力させることはできると思いますが元のファイルの改行コードがLFだとすれば厳密には中身が別物になってしまいますね。結局はbase64に変換するのが最善手ですね!
ブラウザがPOSTする値もあるかも?と思ったので調べる必要あるかもしれないですね(今回はArcを利用しました)