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死ぬほど便利!みんな使おう!!