unirt city

技術の話とか

CircleCI の Pre-Build Docker Images の更新で Job が失敗するようになったので対応した

要約

Job が落ちる原因

circleci/ruby Image が更新され Debian が stretch(v9) -> buster(v10) になったから

対処法

stretch を明示的に指定する


状況

Rails アプリケーションの CircleCI Job が昨日から突然失敗するようになりました。

使用していた Docker Image

# .circleci/config.yml
docker:
  - image: circleci/ruby:2.5.5-node

エラー文

bundle exec rails db:create が失敗し

rails aborted!
LoadError: libmariadbclient.so.18: cannot open shared object file: No such file or directory

というエラーを吐いていました。

原因

先日 Debian 10 buster がリリースされたことに伴い、 circleci/ruby Image のデフォルトイメージ(?)が Debian 10 buster based になりました。
それにより apt install MariaDB-clientなどが失敗し、結果的に libmariadbclient.so.18: cannot open shared object file: No such file or directory というエラーが出るようです。

解決

(やや対症療法的ですが) Debian 9 stretch based なイメージを指定することで解決しました。

# .circleci/config.yml
docker:
  # - image: circleci/ruby:2.5.5-node
  - image: circleci/ruby:2.5.5-stretch-node

参考