BusyBox が提供している timeout コマンドの -t オプションが不要になっていた
きっかけ
CI/CDとしてAWS CodeBuildを使っているのだが、突然timeout: unrecognized option: t
で突然失敗するようになった。
失敗したコマンドがドキュメントにある下記のコマンドである
docs.aws.amazon.com
- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
原因
色々調べた結果、どうやらtimeoutコマンドを提供しているBusyBoxがv1.30.1になった際に引数の変更があったようだ
そもそも、BusyBoxって何?
そこまで、詳しくないのですいませんが、Wikiから引用
BusyBox は、Coreutilsなど標準UNIXコマンドで重要な多数のプログラムを単一の実行ファイルに「詰め込んで」提供する、特殊な方式のプログラムである ja.wikipedia.org
実際に確認してみた
確認したところ、該当のコミットはこれであることがわかった
timeout: fix arguments to match coreutils
直訳すると、「timeoutコマンドをcoreutilsと一致するように引数を修正」というのがわかる git.busybox.net
対応策
対応策は簡単で単純で下記のように-tを除けばOK。これで、AWS CodeBuildも動くようになった
- timeout 15 sh -c "until docker info; do echo .; sleep 1; done"