新しいプラグインを作成した場合は、リリース時にモノレポの分割対象のパッケージとして登録します。
パッケージの分割は、 master ブランチ、または、タグをプッシュした際には、GitHub Actions にて実行されますので、
/.github/workflow/split_monorepo.yml
を編集して登録します。
jobs:
packages_split:
strategy:
matrix:
package:
-
local_path: 'new-plugin-name'
split_repository: 'new-plugin-name'
また、新しいプラグインのリポジトリを Packagist に登録します。
まず、ローカル環境のワークスペースを最新の状態にします。
# 開発ブランチが 5.1.x の場合
git checkout 5.1.x
git pull origin 5.1.x
Dockerコンテナにログインし、マージコマンドを使って、パッケージの設定をルートの composer.json にマージします。
# PHPの実行環境が必要
cd docker
docker exec -it bc-php /bin/bash
vendor/bin/monorepo-builder merge
plugins/baser-core/VERSION.txt
の先頭行をリリースするバージョン番号に変更し、変更内容をまとめます。
現在(2023年1月時点)では月に一度行われるマイルストーンミーティングにて、記載内容を決定します。
VERSION.txt に記載するログは、次の形式でまとめます。
-改修タイプ: [パッケージの省略文字] 改修内容
(例)
-BUG [BC] fixes #7385 RSSフィードの読込時に本文中の<img>タグが読み取れていない 問題を改善
改修タイプ
パッケージの省略文字
その後、コミットしてプッシュします。
git commit -a -m "basercms-5.x.x をリリース"
アップデートテスト を参考に、開発ブランチにて、アップデートテストを実行します。
問題なければ、次の手順に進みます。
5.1.x
ブランチを master
ブランチにマージします。
git checkout master
git merge 5.1.x
mater ブランチにて、require の baserproject 内のパッケージのバージョンを新しいバージョンに更新します。
# /plugins/baser-core/composer.json
# 新しいバージョンが 5.1.0 の場合
"require": {
"baserproject/bc-admin-third": "5.1.0",
"baserproject/bc-blog": "5.1.0",
"baserproject/bc-content-link": "5.1.0",
"baserproject/bc-custom-content": "5.1.0",
"baserproject/bc-editor-template": "5.1.0",
"baserproject/bc-favorite": "5.1.0",
"baserproject/bc-front": "5.1.0",
"baserproject/bc-installer": "5.1.0",
"baserproject/bc-mail": "5.1.0",
"baserproject/bc-search-index": "5.1.0",
"baserproject/bc-theme-config": "5.1.0",
"baserproject/bc-theme-file": "5.1.0",
"baserproject/bc-uploader": "5.1.0",
"baserproject/bc-widget-area": "5.1.0",
}
モノレポを使うことで、GitHub 上のパッケージごとのレポジトリへ、一括でリリースすることができます。
リリースの際は、モノレポのリリースコマンドを実行します。
自動的にタグを作成しプッシュします。
GitHubへのプッシュ権限が必要となり、Dockerのコンテナ内で実行する場合、Gitのセットアップができているかを確認してください。
Git のセットアップについては、事前に 5.1.x ブランチをプルすることでテストを行ってもよいかもしれません。
# PHPの実行環境が必要
# パッチの場合
vendor/bin/monorepo-builder release patch
# メジャー、マイナーの場合
vendor/bin/monorepo-builder release 5.x.x
親パッケージより一括リリースするため、子パッケージのレポジトリは、読み取り専用の扱いとします。
GitHubActions より、次の2つのCIが成功していることを確認します。
baser-core の Packagist に新しいバージョンが反映されているか確認します。
master ブランチにおける更新内容を、 dev ブランチにマージした上でプッシュします。
git checkout 5.1.x
git merge master
git push origin 5.1.x
Dockerコンテナにログインし、次のコマンドを実行しパッケージを作成します。
# PHPの実行環境が必要
bin/cake create release 5.1.1
実行後、tmp ディレクトリにパッケージが作成されます。
なお、master ブランチより作成しますので、必ずリリースコマンド実行後 に行う必要がありますが、開発ブランチでパッケージを作成し、インストール等の動作を確認したい場合は、branch
オプションとして引数にブランチ名を追加します。
bin/cake create release 5.1.1 5.1.x
baserCMSのオフィシャルサイトの /files/basercms/ ディレクトリにアップロードします。
baserCMSのオフィシャルサイトのダウンロードページを更新します。過去バージョンダウンロードについても忘れないように更新します。
GitHubにて 新しいリリース記事 を作成します。
※ コミット履歴から参加者を抽出するコマンド git log --after="YYYY-MM-DD" --pretty=format:"%an" |sort| uniq
こちらの記事に先ほど作成した、basercms-5.x.x.zip を添付します。
必要があれば、baserCMS公式ガイドの機能一覧を更新します。
最後にbaserCMSのオフィシャルサイトでリリース記事を作成します。
その際、カテゴリについて「リリースノート」を選択します。
baserCMSプロジェクトメンバー名簿より、新しくメンバーとなった方で、スペシャルサンクスへの登録希望の方をピックアップし、baserCMS公式サイトのスペシャルサンクスリストに追加します。
バージョンアップした事を広く認知してもらえるよう、告知を行います。
これでリリース作業は完了です。お疲れさまでした。
バージョンファイルの先頭行を次のバージョンに変更し、プッシュします。
# 次のバージョンが 5.1.1 の場合
# 以前は、5.1.1-dev というようにサフィックスを付けていましたが
# 5.1.0 以降からは付けなくなりました。
# plugins/baser-core/VERSION.txt
5.1.1
git commit -a -m "バージョンを5.1.1に変更"
開発版のバージョンに更新します。
// 5.1 系の開発の場合
// /plugins/baser-core/composer.json
"require": {
"baserproject/bc-admin-third": "5.1.x-dev",
"baserproject/bc-blog": "5.1.x-dev",
"baserproject/bc-content-link": "5.1.x-dev",
"baserproject/bc-custom-content": "5.1.x-dev",
"baserproject/bc-editor-template": "5.1.x-dev",
"baserproject/bc-favorite": "5.1.x-dev",
"baserproject/bc-front": "5.1.x-dev",
"baserproject/bc-installer": "5.1.x-dev",
"baserproject/bc-mail": "5.1.x-dev",
"baserproject/bc-search-index": "5.1.x-dev",
"baserproject/bc-theme-config": "5.1.x-dev",
"baserproject/bc-theme-file": "5.1.x-dev",
"baserproject/bc-uploader": "5.1.x-dev",
"baserproject/bc-widget-area": "5.1.x-dev",
}
バージョンアップに合わせて次の2サイトのアップデートを行います。
リリースについてコミット漏れがあるなど、同じバージョンで再度リリース作業を行いたい場合があります。
その際、次の手順に従います。
リリースコマンドを実行すると、composer.json の replace
の箇所について、各パッケージごとのバージョン番号が、最新バージョン番号で更新されます。
こちらを手動で元のバージョンに戻します。
// /composer.json
"replace": {
"baserproject/baser-core": "5.0.2",
"baserproject/bc-admin-third": "5.0.2",
"baserproject/bc-blog": "5.0.2",
"baserproject/bc-column": "5.0.2",
"baserproject/bc-content-link": "5.0.2",
"baserproject/bc-custom-content": "5.0.2",
"baserproject/bc-editor-template": "5.0.2",
"baserproject/bc-favorite": "5.0.2",
"baserproject/bc-front": "5.0.2",
"baserproject/bc-installer": "5.0.2",
"baserproject/bc-mail": "5.0.2",
"baserproject/bc-search-index": "5.0.2",
"baserproject/bc-theme-config": "5.0.2",
"baserproject/bc-theme-file": "5.0.2",
"baserproject/bc-uploader": "5.0.2",
"baserproject/bc-widget-area": "5.0.2"
},
リリースコマンドで作成されたローカルタグを削除します。
git tag -d 5.0.2
リリースコマンドで作成されたリモートタグを削除します。
git push origin :5.0.2
その後、修正コミットなどを追加して、準備ができたら、リリースコマンドを実行します。
vendor/bin/monorepo-builder release 5.0.2