Composerパッケージをバージョン管理する

  • 2
    Like
  • 0
    Comment

概要

vcs repositoryで管理している社内用パッケージをバージョン管理する為に調べた内容です。
公式ドキュメントによるとブランチ、タグの2通り方法があるようです。

手順

【パッケージのリポジトリ側】 提供するバージョンを定義する
【読み込み側】 バージョンを指定して読み込む

【パッケージのリポジトリ側】 提供するバージョンを定義する

1. ブランチで行う方法

composer.jsonでrequreするバージョンを[ブランチ名]-devと記述すると、指定ブランチの最新コミットが取得されます。

composer.json
    "require": {
        "foo/bar": "mainline-dev"
    }

この場合foo/barリポジトリのmainlineブランチ最新のコミットが取得されます。

dev-masterが指定された場合、特別にMasterブランチ最新コミットの内容が取得されます。

2. タグで行う方法

Github上で付与されているタグに紐付いたコミットが取得されます。

composer.json
    "require": {
        "foo/bar": "3.0.0"
    }

この場合foo/barリポジトリの3.0.0タグが付けられたコミットが取得されます。

実際オープンソースで公開されているcomposerパッケージはほぼ全てこの仕組みでバージョン管理されています。

symfonyの例
composer.json
    "require": {
        "symfony/symfony": "3.2.2"
    }

この設定だとv3.2.2が取得されます。

タグはgit tagコマンドから作成出来ますが、

2.6 Git の基本 - タグ

GithubのGUI上からも簡単に設定、確認出来ます。

GitHubのリリース機能を使う

【読み込み側】 バージョンを指定して読み込む

composer.jsonを次のように設定します。

1. ブランチで指定

mainlineブランチの最新コミットが取得されます。

composer.json
    "require": {
        "foo/bar": "mainline-dev"
    }

2. タグで指定

1.0.0タグが付けられたコミットが取得されます。

composer.json
    "require": {
        "foo/bar": "1.0.0"
    }

バージョンの指定方法はバリエーションがあるので以下も参考にすると良いです。

[初心者向け] composerのバージョン指定方法
Composerのバージョン指定方法でのチルダ(~)とキャレット(^)の違い

バージョンの指定方法

セマンティック バージョニングを使用しましょう。
よくある1.0.0のような3桁の番号は左から次のような意味になります。

呼称 意味
MAJOR version 後方互換性が無い変更
MINOR version 後方互換性がある機能変更
PATCH version 後方互換性があるバグ修正

MAJOR versionが更新されない限り後方互換性が保たれる
という点が最も重要です。
この決まりにより既存システムを破壊するリスク無くパッケージを更新出来ます。

まとめ

  • ブランチは指定ブランチの最新コミットが取得される
  • タグは特定のコミットIDが取得される
  • バージョンの指定にはセマンティック バージョニングを使用する

開発中はブランチでのバージョン指定を、
運用時はタグでのバージョン指定を読み込み側で行うと良いでしょう。