gitを使ってのEC-CUBE3のアップグレード方法を備忘録のため残しておきます。
構成
- さくらレンタルサーバ(本番)
- ローカルPC(開発環境)mac
- EC-CUBE3.0.10
目標
EC-CUBE3.0.13までアップグレード
##3.0.10->3.0.11
####まずローカル開発環境にEC-CUBEのgithubとの連携を作ります。
-
以下masterブランチにて実行
git remote add ec-cube https://github.com/EC-CUBE/ec-cube.git
git fetch
git pull
-
remotes/ec-cubeが見えているか確認
git branch --all
-
リモートのec-cubeからeccube_masterブランチを作成
git checkout -b eccube_master remotes/ec-cube/master
-
ここで次のバージョンのタグをもとにブランチ作成
git checkout -b 3.0.11 refs/tags/3.0.11
(これの前にgit fetch --tags ec-cubeを実行したけどなくても良さそうな気がした)
####マージして差分をチェック
-
masterへチェックアウト
git checkout master
-
3.0.11をマージ
git merge 3.0.11
コンフリクトが大量に発生。
src/、html/、autoload.php、gitignoreなど。 -
コンフリクトしたファイルの洗い出し
ここはどれだけソースに手を加えているかで実際に修正するファイル量が違ってきます。
私はまずコンフリクトのファイルをすべてgit log <ファイル名>でコミットログをみて自分が手を加えているファイルを洗い出しました。
####コンフリクトしたファイルを修正してコミット
-
git log <ファイル名>で修正しているログがあったファイルは手動でコンフリクトを解消。
-
その他のファイルに関してはすべて
git checkout --theirs <ファイル名>
で対応
コンフリクト対応が完了したら、addしてcommit
ここまできたらあと少しでひと段落!
####パーミッション変更
アップグレードの際にファイルのパーミッションが変わるようで
chmod 755 <ルートディレクトリ>/
####マイグレーション
http://<ドメイン>/html/install.php/migration
こちらへアクセスするとマイグレーション画面が表示されるのでマイグレーションを実行。
####本番環境へ
さくらレンタルサーバへ
git push
本番環境側でgit pullした後、ローカルと同じようにマイグレーションを実行して完了。
これで一通り完了で、あとは正常にアクセス出来ていれば問題ないはずです。
あとシステム情報からバージョンが3.0.11となっていることを確認。
色々と試行錯誤しながらやっていたので、間違っている部分があるかもしれませんが
何かあればご指摘ください。
とりあえずひと段落しました!
以下は3.0.13へアップグレードするまでに気になったことを書いています。
##3.0.11->3.0.12
既にgithubとの連携は出来ているので、
eccube_masterへチェックアウト
git checkout eccube_master
3.0.12ブランチ作成
git checkout -b 3.0.12 refs/tags/3.0.12
masterへマージ
git checkout master
git merge 3.0.12
ここではコンフリクトは発生せず。Auto-Mergeが走っていました。
以下2つは3.0.12では削除されたみたいなのでコンフリクト(modify/delete)していましたので、git rmする。
git rm src/Eccube/Resource/config/cache.yml.dist
git rm src/Eccube/ServiceProvider/EccubeMonologServiceProvider.php
####composer.lock、composer.jsonが変更された場合
上記完了後、ページへアクセスした際にlog_debug()関数が見つからないみたいなエラーが出る。
色々しらべて、アップグレードの際にcomposer.json,composer.lockが更新されていた場合は
以下実行する必要があるとのこと。
curl -sS https://getcomposer.org/installer | php php ./composer.phar install --dev --no-interaction
上記を実行するもエラーは変わらず。
そこで
composer update
なんだか色々アップデートされてる感じのログがずらずらと...
composer update完了後、ページへアクセスすると問題なくアクセスができるようになりました。
最後にマイグレーションをして問題なければ、本番環境へpushしてマイグレーション実行。
##3.0.12->3.0.12-p1
なんだか3.0.12から3.0.12-p1へは差分がほとんどないですね...
$git merge 3.0.12-p1
warning: refname '3.0.12-p1' is ambiguous.
warning: refname '3.0.12-p1' is ambiguous.
Auto-merging src/Eccube/Repository/ProductRepository.php
Auto-merging src/Eccube/Common/Constant.php
Auto-merging .travis.yml
Merge made by the 'recursive' strategy.
.travis.yml | 9 ++++-----
src/Eccube/Common/Constant.php | 2 +-
src/Eccube/Repository/ProductRepository.php | 6 +++++-
3 files changed, 10 insertions(+), 7 deletions(-)
てことで、すんなり上がりました。
もちろんマイグレーションは忘れずに実行。
問題なければ、本番環境へpushしてこちらもマイグレーション。
##3.0.12-p1->3.0.13
ここまでくるとだいぶ慣れてきた感がありますね。
eccube_masterにて3.0.13タグをチェックアウトして3.0.13ブランチを作成。
mergeをすると、大量の差分がでます。コンフリクトを解消していきます。
CONFLICT (modify/delete): tests/Eccube/Tests/Web/Admin/Product/ProductClassContorllerTest.php deleted in 3.0.13 and modified in HEAD. Version HEAD of tests/Eccube/Tests/Web/Admin/Product/ProductClassContorllerTest.php left in tree.
3.0.13では削除されているファイルなのでgit rm
git rm tests/Eccube/Tests/Web/Admin/Product/ProductClassContorllerTest.php
CONFLICT (content): Merge conflict in composer.lock
普通にコンフリクトしているっぽいので中身をチェック。
<<<<<<< HEAD
"version": "v5.4.5",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "cd142238a339459b10da3d8234220963f392540c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/cd142238a339459b10da3d8234220963f392540c",
"reference": "cd142238a339459b10da3d8234220963f392540c",
=======
"version": "v5.4.4",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/545ce9136690cea74f98f86fbb9c92dd9ab1a756",
"reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756",
>>>>>>> 3.0.13
どうやらswfitmailerの部分で差分があるようですが、どっちが正しいのかわかりませんので
「eccube swiftmailer」でググると以下issueを発見。
https://github.com/EC-CUBE/ec-cube/issues/2012
issueの内容をみてv5.4.5を使ったほうがいいのかなと思い、3.0.13の部分は削除してHEAD部分を採用しました。
このあと以下を実行。
composer update
php ./composer.phar install --dev --no-interaction
忘れずにマイグレーションして完了!