はじめに
- 低レイヤーをあまり知らないが、dockerのマルチステージビルドを雰囲気でしたことはある
問題
- Github Actionsで使えないコマンドがあってwhichで調査するも思った挙動でなかった
解決
- コマンドがない時にジョブ終了せず、明示的に何が起きたか出したかったので以下のように定義した
- name: Debug Firebase Path
run: which firebase || echo 'firebase not found'
終わりに
- 色々調べたことを書く
パッケージ確認
- Github Actions上でwhichコマンド実行してコマンドがなかったら、そこでジョブが止まってしまった
- なのでそのパッケージのwhichの挙動を調べるために以下を実行した
- 結果からdebian系と確認
- name: Debug Which Command
run: |
type -p which
# 1. リンク先の実体パスを確認
readlink -f $(type -p which)
# 2. 実体パスからパッケージを逆引き
dpkg -S $(readlink -f $(type -p which))
ドキュメントを読む
- ドキュメント によるとコマンドない時は1が返ってくるので落ちるようだ
- 対策として以下のようにした。こうすることでジョブが終わらないかつ、明示的に何が起きたかを表示できる
- name: Debug Firebase Path
run: which firebase || echo 'firebase not found'
ローカルのmacのzshについても確認
hoge: command not found
- ではローカルmacのzshではなぜ上記になるのかと調べた
-
command not foundの挙動は終了ステータス127として定義されているようだ
