Alpine Linuxの破壊的変更でAsciiDocのGitLab CIがぶっ壊れた話
まとめ
- ある日突然、Dockerのasciidoctor/docker-asciidoctorを使ってAsciiDoc文書の変換と成果物(HTML)のアップロードを行っているGitLab CIのジョブが落ちるようになった
- 原因は、アップロードに使っていた
ftpput
コマンドがAlpine Linuxのバージョン3.7からbusybox-extrasというパッケージに切り出されていたため
(docker-asciidoctorはAlpine Linuxベース) - 特にDockerイメージのバージョンは指定していないので、自動でバージョンが上がって壊れた
- busybox-extrasをインストールすればすぐ直る
無慈悲なエラーの図
/builds/XXXX/XXXX/documents/build.sh: line 43: ftpput: not found
修正方法
以下の手順でbusybox-extrasをインストールすればOK!
# busyboxを更新 $ apk add -u busybox # busybox-extrasをインストール apk add busybox-extras
ちなみに、busyboxを更新しないと以下のようなエラーになる。
ERROR: unsatisfiable constraints: busybox-extras (missing): required by: world[busybox-extras]
ちなみにちなみに、.gitlab-ci.yml
はこんな感じになる。
image: asciidoctor/docker-asciidoctor build: stage: build script: - apk update - apk add -u busybox - apk add busybox-extras - sh ${CI_PROJECT_DIR}/build.sh
busybox-extrasに切り出されたコマンドの一覧
※正確性は保証しません
- /usr/bin/telnet
- /usr/sbin/httpd
- /usr/bin/ftpget
- /usr/bin/ftpput
- /usr/sbin/ftpd
- /usr/bin/tftp
- /usr/sbin/fakeidentd
- /usr/sbin/dnsd
- /usr/sbin/inetd
- /usr/sbin/udhcpd
結論
AsciiDocとGitLab CI死ぬほど便利!みんな使おう!!