はじめに

導入

運用

参加・貢献

リソース

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 の実行パス」が自動的に入力されている状態であれば問題ありませんが、入力されていない場合は確認が必要です。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

ロールバック処理

アップデートスクリプトが失敗した場合、プログラムファイルの更新や、データベースの更新をロールバックし、元のバージョンに戻します。ただし、アップデートスクリプトで行った変更は元に戻りませんので注意が必要です。

データベースのバージョン番号更新

site_configs テーブルの nameversion となっているレコードの value の値を更新します。

外部プラグインの取り扱い

将来的には、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. アップデート通知の確認とアップデート実行

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

オートアップデートがうまくいかない場合

SSHでログインし、次の手順を実行してください。

Composer を実行

# PHPのパスを通した上で実行
curl -sS https://getcomposer.org/installer | php
./composer.phar self-update
# 5.0.4 に更新する場合
./composer.phar require baserproject/baser-core:5.0.4

データベースを更新

# 全てのプラグイン分、マイグレーションを実行する必要あり
bin/cake migrations migrate -p BaserCore

スクリプト実行

現在、対応方法がありません。v5.0.4
スクリプトを実行するコマンドを実装予定。

データベースのバージョン番号更新

site_configs テーブルの nameversion となっているレコードの value の値を更新します。