オートアップデートは、baserCMSのプログラム群の更新とともに、必要であれば、データベースのマイグレーションとアップデートスクリプトを自動実行する機能です。
baserCMSは、ベースシステムとしてテーマやプラグインにてカスタマイズをする事を前提としたパッケージのため、オートアップデート機能の仕様として、全自動で知らぬうちに更新してしまう事は望ましくありません。
そのため、baserCMSのオートアップデートの仕様としては、アップデート情報の取得ができ、利用者が手動でアップデート実行ボタンをクリックすることで、プログラムデータの取得や、データベースのマイグレーションを自動実行できるという仕様になっています。
サイト基本設定にて、「管理システムのアップデート通知を有効にする」にチェックが入っていることを前提として、Composer の packagist より RSS で取得します。
https://packagist.org/feeds/package.baserproject/baser-core.rss
アップデート実行の際は、Composer を利用するため、PHPのパス情報を必要とします。
アップデート画面において、「PHP CLI の実行パス」が自動的に入力されている状態であれば問題ありませんが、入力されていない場合は、ホスティングサービス側に確認が必要です。
CakePHPのシェルを利用して、別プロセスとして、Composer を実行するプログラムを実行します。
その際、baserCMSのプログラムが /vendor
に配置されていることを前提としますが、開発版では、baserCMSのプログラムが /plugins
に配置されているため動作しません。
そのため、リリースの際には、 リリースパッケージ作成コマンド を実行し、/plugins
配下を削除して配布します。
CakePHPのシェルを利用して 別プロセスとして、Migration を実行します。
バージョンに応じて設置したアップデートスクリプトを実行します。
アップデートスクリプト実装する場合は、次の場所に配置します。
# version-number は、1.0.1 のようにアップデート対象のバージョンとします。
/plugins/{plugin-name}/config/update/{version-number}/updater.php
アップデートスクリプトが失敗した場合、プログラムファイルの更新や、データベースの更新をロールバックし、元のバージョンに戻します。ただし、アップデートスクリプトで行った変更は元に戻りませんので注意が必要です。
将来的には、baserマーケットと連携し、直接プログラムのインストールとアップデートができるようにすることを検討していますが、当面は、/plugins/
フォルダに手動で配置することでインストールとアップデートを行います。(2023/3/29 現在)
開発環境でアップデートのテストを行うには、baserCMSを /vendors/
フォルダにインストールしなおす必要があります。
/plugins/
フォルダ内のファイルを全て削除します。
monorepo-builder の関係で、composer.json
内に、replace
の定義があるが、上記構成を前提とした場合にこれがあると、Composer が正常に動作しないため削除します。
baserCMSのインストーラー、または、Composer コマンドを直接実行して、/vendor/
フォルダ内に baserCMSをインストールします。
phpMyAdmin 等で、データベースに直接アクセスし、site_configs
テーブルの version
の値を古いバージョンに書き換えます。
管理システム内にて、アップデート通知が表示されていることを確認しアップデートのテストを実行します。