はじめに

導入

運用

参加・貢献

リソース

GitHubでこのページを編集

Home / 5 / functions / baser core / オートアップデート

オートアップデート

オートアップデートは、baserCMSのプログラム群の更新とともに、必要であれば、データベースのマイグレーションとアップデートスクリプトを自動実行する機能です。

オートアップデートの方針

baserCMSは、ベースシステムとしてテーマやプラグインにてカスタマイズをする事を前提としたパッケージのため、オートアップデート機能の仕様として、全自動で知らぬうちに更新してしまう事は望ましくありません。

そのため、baserCMSのオートアップデートの仕様としては、アップデート情報の取得ができ、利用者が手動でアップデート実行ボタンをクリックすることで、プログラムデータの取得や、データベースのマイグレーションを自動実行できるという仕様になっています。

アップデートで実行すること

  • アップデート情報の取得
  • プログラムファイルの更新
  • データベースの更新
  • アップデートスクリプト実行

内部的な実装手法

  • プログラムファイルは、Composer で、バージョンを更新しています。
  • データベースは、CakePHPのマイグレーションの仕組みを利用しています。

アップデート情報の取得

サイト基本設定にて、「管理システムのアップデート通知を有効にする」にチェックが入っていることを前提として、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/ フォルダにインストールしなおす必要があります。

アップデートのテスト手順

  1. plugins 内を削除
  2. composer.json の変更
  3. Composer でインストール
  4. データベースのバージョンを変更
  5. アップデート通知の確認とアップデート実行

1. plugins 内を削除

/plugins/ フォルダ内のファイルを全て削除します。

2. composer.json の変更

monorepo-builder の関係で、composer.json 内に、replace の定義があるが、上記構成を前提とした場合にこれがあると、Composer が正常に動作しないため削除します。

3. Composer でインストール

baserCMSのインストーラー、または、Composer コマンドを直接実行して、/vendor/ フォルダ内に baserCMSをインストールします。

4. データベースのバージョンを変更

phpMyAdmin 等で、データベースに直接アクセスし、site_configs テーブルの version の値を古いバージョンに書き換えます。

5. アップデート通知の確認とアップデート実行

管理システム内にて、アップデート通知が表示されていることを確認しアップデートのテストを実行します。