(こちらはLegacy Convenience Image Deprecationの参考訳です)
2020 年より、CircleCI では CircleCI イメージの次世代版の展開を開始しました。 これらのイメージは、CircleCI 2.0 の発表時にリリースされた従来の CircleCI イメージに代わるものです。 次世代版は CI/CD 環境に合わせてゼロから設計されており、 従来よりもスピードと効率、そしてなによりも信頼性が大きく向上しています。 次世代 CircleCI イメージの特徴について詳しくは、こちらのブログ記事をご覧ください。 従来のイメージが今後廃止されることに伴い、ここでは新しいイメージへの移行プロセスについて説明します。
従来のイメージから次世代版に移行するには、名前空間を変更する必要があります。 イメージの Docker 名前空間について、従来のものはすべて circleci
でしたが、次世代イメージでは cimg
に変わります。 たとえば、従来の Ruby および Python のイメージを次世代版に移行するには、それぞれ次のように変更します。
circleci/ruby:2.3.0 → cimg/ruby:2.3.0
circleci/python:3.8.4 → cimg/python:3.8.4
目次
変更点
廃止されるイメージ
既存のイメージについて、今後いくつかの変更が行われる予定です。 以下のイメージは廃止され、次世代イメージへの置き換えは行われません。
buildpack-deps
JRuby
DynamoDB
buildpack-deps
イメージを現在使用している場合は、新しい CircleCI ベース イメージ cimg/base
に移行することをお勧めします。 他の 2 つのイメージについては、ベース イメージにソフトウェアをご自身でインストールするか、サードパーティのイメージを使用してください。
また、以下のイメージの名称が変更されます。
- Go イメージ:
golang
からgo
に変更
従来版と次世代版のイメージの変更点は下表のとおりです。
従来版のイメージ | 次世代版のイメージ |
---|---|
circleci/buildpack-deps | cimg/base |
circleci/jruby | 対応イメージなし |
circleci/dynamodb | 対応イメージなし |
circleci/golang | cimg/go |
ブラウザー テスト
従来のイメージでは、ブラウザー テストを行う場合、利用可能なバリアント タグが 4 種類存在していました。 たとえば、Python v3.7.0 イメージでブラウザー テストを行う場合、circleci/python:3.7.0-browsers という Docker イメージを使用していたかも知れません。 今後、これら 4 つのタグは、CircleCI Browser Tools Orb との併用を前提とした単一のタグに統合されます。
従来のバリアント タグ | 次世代のバリアント タグ |
---|---|
-browsers | -browsers + Browser Tools Orb |
-browsers-legacy | |
-node-browsers | |
-node-browsers-legacy |
ブラウザー テスト用の新しいバリアント タグには、Node.js およびブラウザー テスト用の一般的なユーティリティ (Selenium など) が含まれていますが、実際のブラウザーは含まれていません。 タグの統合に伴い、ブラウザーはプリインストールされなくなります。 代わりに、Google Chrome や Firefox などのブラウザー、および Chromedriver や Gecko などのドライバーは、browsers-tools
Orb でインストールします。 これにより、CircleCI から提供されるツールに縛られることなく、ビルドで必要なブラウザーのバージョンを柔軟に組み合わせることができます。 この Orb の使用例については、こちらを参照してください。
ベース OS の Ubuntu への統一
従来のイメージでは、バリアント タグによってベース オペレーティング システム (OS) が異なっていました。 たとえば、Debian と Ubuntu のバージョンのイメージがある一方、別のイメージでは異なるベース OS が提供されていました。 こうした状態を解消するため、 次世代の CircleCI イメージはすべて、Ubuntu の最新 LTS リリースがベース OS となります。
ベース イメージでは、少なくとも 2 つ以上の LTS リリースと、EOL 前の標準リリースがサポートされます。
イメージ固有の変更点
PHP
2021年11月以降にリリースされるPHPでは、PHPや拡張機能の管理に apt-get
を使用しなくなりました。 PHPはソースからコンパイルされており、拡張機能はPECLのようなツールでインストールする必要があります。 詳しくは、cimg/php のreadme をご覧ください。
Python
Python は pyenvでインストールされます。 これまでとほぼ同じように動作するはずですが、Python、および pip モジュールのインストール場所が異なります。 Python の site-package
ディレクトリがどこに行ったか、気になりますか? pip のインストール先ディレクトリがどこにあるかを知るには、次のコマンドを実行してください: python -m site --user-site
。
廃止までのタイムライン
(Clojure、MariaDB、MySQL、Redis、MongoDBを除く) すべてのイメージ
- 2021年1月1日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから24時間ごとに再構築されます。
- 2021年8月9日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから毎週月曜日に(つまり7日ごとに)再構築されます。 つまり、新しいソフトウェアのリリースなど、アップストリームの変更が利用可能になるまでに、最大で7日間かかる、ということになります。
- 2021年9月20日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから隔週月曜日に(つまり14日ごとに)再構築されます。 つまり、新しいソフトウェアのリリースなど、アップストリームの変更が利用可能になるまでに、最大で14日間かかる、ということになります。
- 2021年8月18日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから毎月18日に(つまり月に一度)再構築されます。 つまり、新しいソフトウェアのリリースなど、アップストリームの変更が利用可能になるまでに、最大で30日間かかる、ということになります。
- 2021年12月31日 - レガシー・コンビニエンス・イメージはこの日以降、サポートされません。 したがって、翌日以降はイメージがリリースされることはありません。 既存のタグはDocker Hub上に残りますが、更新されることはありません。 既存のタグに対しては、バグの修正やセキュリティの修正は行われません。 また、この日以降、新たなタグが発行されることはありません。
Clojure、MariaDB、MySQL、Redis、MongoDBの各イメージ
- 2021年1月1日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから24時間ごとに再構築されます。
- 2021年8月9日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから毎週月曜日に(つまり7日ごとに)再構築されます。 つまり、新しいソフトウェアのリリースなど、アップストリームの変更が利用可能になるまでに、最大で7日間かかる、ということになります。
- 2021年9月20日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから隔週月曜日に(つまり14日ごとに)再構築されます。 つまり、新しいソフトウェアのリリースなど、アップストリームの変更が利用可能になるまでに、最大で14日間かかる、ということになります。
- 2021年12月13日 - レガシー・コンビニエンス・イメージはメンテナンスモードになり、 アップストリームイメージから毎月6日に(つまり月に一度)再構築されます。 つまり、新しいソフトウェアのリリースなど、アップストリームの変更が利用可能になるまでに、最大で30日間かかる、ということになります。
- 2022年2月7日 - レガシー・コンビニエンス・イメージはこの日以降、サポートされません。 したがって、翌日以降はイメージがリリースされることはありません。 既存のタグはDocker Hub上に残りますが、更新されることはありません。 既存のタグに対しては、バグの修正やセキュリティの修正は行われません。 また、この日以降、新たなタグが発行されることはありません。
トラブルシューティング
次世代イメージへの移行では、ソフトウェア関連の問題が発生することがあります。 よくある問題を以下に示します。
- 使用していたライブラリのバージョンが変わる
- apt パッケージがプリインストールされなくなる。 この場合は、次のコマンドでパッケージをインストールしてください。
sudo apt-get update && sudo apt-get install -y <パッケージ名>
各イメージには、構築元となる GitHub リポジトリが用意されており、 こちらから参照可能です。 これらのリポジトリでは、各イメージの詳細や構成内容を確認できるほか、GitHub 上で Issue の報告やプルリクエストの投稿を行えます。 イメージに関して、特に移行に関する問題がある場合は、GitHub 上で Issue をオープンし、問題を報告してください。 サポートリクエストを送信いただいたり、このポストにコメントを付けていただいても構いません。
本記事の内容が自分に関係しそうであれば、ブックマークしておくことをおすすめします。 本記事は今後も追加情報があるたびに、更新を行なっていきます。