taisablog.com

taisa's engineer blog

GitLabのprivateなPHPライブラリをcomposer installするには

社内ツールでprivateなリポジトリに置いておきたいけど、いろんなプロジェクトでcomposer installしたいというケースは以外とあるんじゃないかと思います。そういう時は、composer.jsonrepositoriesを追加して、GitLab(ここではGitLabとしています)のURLを指定するとインストールが可能になります。しかしそのままだとpublicなリポジトリしかだめですが、privateなリポジトリであれば、GitLabからPersonal AcessTokenを取得して、composer config --global --auth gitlab-token.gitlab.com [ACESS_TOKEN]を実行すればcomposer installが可能になります。

{
    "name": "taisa831/sample-framework-app",
    "license": "MIT",
    "authors": [
        {
            "name": "taisa",
            "email": "g5.taisa831@gmail.com"
        }
    ],
    "require": {
            "taisa831/sample-framework": "dev-master"
    },
    "repositories": [
            {
                    "type": "vcs",
                    "url": "git@gitlab.com:taisa831/sample-framework.git"
            }
    ]
}

では、Webフレームワークをprivateなリポジトリに公開して利用するところまでをやってみます。 (今回は便宜上publicにしています)

事前準備

ここではサンプルのWebフレームワーク(実装なし)をプロジェクトにインストールできるようにすることにします。リポジトリは2つで、フレームワークの実態であるsample-frameworkフレームワークの雛形となるsample-framework-appを用意しておきました。それぞれの構成は以下の通りです。 https://gitlab.com/taisa831/sample-framework.git

# フレームワークの実体
.
├── README.md
├── composer.json
├── src
├── tests
└── vendor

https://gitlab.com/taisa831/sample-framework-app.git

# フレームワークの雛形
.
├── README.md
├── composer.json
├── composer.lock
├── config
├── controllers
├── models
├── public
│   └── index.php
├── routes
├── tests
└── views

このsample-framework-appcomposer.jsonには上記でも記載した内容が書かれています。requiretaisa831/sample-frameworkを指定し、repositoriesにGitLabのURLを指定することで探してくれるようになります。

{
    "name": "taisa831/sample-framework-app",
    "license": "MIT",
    "authors": [
        {
            "name": "taisa",
            "email": "g5.taisa831@gmail.com"
        }
    ],
    "require": {
            "taisa831/sample-framework": "dev-master"
    },
    "repositories": [
            {
                    "type": "vcs",
                    "url": "git@gitlab.com:taisa831/sample-framework.git"
            }
    ]
}

Webフレームワークを利用したプロジェクトを作成する

これでWebフレームワークを利用するプロジェクトを作成することができます。通常ならcomposer create-project --prefer-dist taisa831/sample-framework-app dev-masterこのようなコマンドでいけるのですが、packagistに登録していないので手動やります。(satisを使えばというのもありますがそこまでしたくはないので)

git clone git@gitlab.com:taisa831/sample-framework-app.git web-app
cd web-app
rm -rf .git
# privateなリポジトリの場合はここ(https://gitlab.com/profile/personal_access_tokens)からアクセストークンを取得し設定します。
# 今回はpublicなので不要です
composer config --global --auth gitlab-token.gitlab.com [ACESS_TOKEN]
composer install
git init
git remote add origin [新しいリポジトリ]

これでフレームワークの雛形と実体が合わさり環境構築の完了となります。

.
├── README.md
├── composer.json
├── composer.lock
├── config
├── controllers
├── models
├── public
│   └── index.php
├── routes
├── tests
├── vendor
│   ├── autoload.php
│   ├── composer
│   │   ├── ClassLoader.php
│   │   ├── LICENSE
│   │   ├── autoload_classmap.php
│   │   ├── autoload_namespaces.php
│   │   ├── autoload_psr4.php
│   │   ├── autoload_real.php
│   │   ├── autoload_static.php
│   │   └── installed.json
│   └── taisa831
│       └── sample-framework ← フレームワークの実体
│           ├── README.md
│           ├── composer.json
│           ├── src
│           └── tests
└── views