composer/satic・Github・Jenkinsを使っておれおれpackagistを作る

  • Pocket
  • このエントリーをはてなブックマークに追加
  • 162 follow us in feedly

まえがき

さて、ついにゴールデンウィークがやってまいりました。私のGWは今日を含めて4日間です。その1日目の午後はcomposer/satisというおれおれなcomposerのpackagistを使って、オリジナルのPHPライブラリ配布リポジトリを作ってみました。

GitHub・Jenkinsを使って自動で配布リポジトリを作れるようにしてみたのでメモしておこうとおもいます。

composer/satisとは

  • パッケージのリポジトリを静的なコンテンツとして作成するツール
  • 依存パッケージもリポジトリに追加される

ようするにオリジナルのpackagistを作ることができるわけです。

オリジナルのpackagistをこしらえるメリット

  • composer install, updateが早くなる!
  • より頑固なパッケージのバージョン固定
  • packagistに登録していないパッケージも拾うようにできる

自分はcomposerのinstall/updateを爆速にしたいためだけに試してみました。結果としてはかなりパフォーマンスが上がった模様。適当なcomposer.jsonで試してみたところ

  • packagist キャッシュあり 25秒ぐらい
  • packagist キャッシュなし 2分41秒ぐらい
  • おれおれpackagist キャッシュあり 18秒ぐらい
  • おれおれpackagist キャッシュなし 20秒ぐらい

上の数字はパッケージのダウンロード時間は含んでいない。ダウンロードが始まるまでの時間と考えてもらえればいい。

キャッシュがない状態でのパフォーマンスが特にえげつないです。

composer/satisのひな形ダウンロード

ひな形といってもgithubのsatisをクローンしてくるだけ。どうせあとでgithubにあげるのでフォークでも良かった。

git clone https://github.com/composer/satis.git

おれおれpackagistを作る

まずは、composer.pharをダウンロード必要なライブラリのインストール

curl -sS https://getcomposer.org/installer | php
php composer.phar install

ほいで、『satic.json』を作成。こいつにおれおれpackagistで管理したいパッケージを書いていく。書き方はcomposer.jsonとあまり変わらない

{
	"name": "ore ore Packagist",
	"homepage": "http://packagist.absolute-keitarou.net",
	"repositories": [
		{"type":"composer", "url":"https://packagist.org"}
	],
	"require": {
		"phpunit/phpunit"             : "3.7.32",
		"sebastian/phpcpd"            : "2.0.0"
	},
    "require-dependencies": true
}

ほいじゃあビルドして静的コンテンツを生成します。

bin/satis build ./satis.json web/

これであとは、web/index.htmlをのぞけばpackagist風のサイトでできあがっています

composer-satis-jenkins-github-1

Githubにプッシュ

この辺はあまり説明する気はないけれど、『.gitignore』にcomposer.pharがはいっていると面倒なのでちょろっと書き換えます

/.settings
/.project
/.buildpath
/satis.phar
/vendor
/web

あとは適当にGithubにリポジトリつくってプッシュしておく。

Jenkinsのジョブの登録

続いてGithubからソースを持ってきてsaticのビルドをしてくれるジョブを登録します。

ソースコードの管理をgitにしてGithubを見に行かせて、ビルドの実行で以下のようなスクリプトを叩けば終わり。

php composer.phar update
bin/satis build ./satis.json web/

Nginxでpackagistを公開

次にJenkinsで作った静的コンテンツをnginxで公開できるようにします。今回はpackagist.のサブドメインでバーチャルホストを立てて公開するようにしました。

server {
    listen 80;
    server_name packagist.absolute-keitarou.net;
    index index.html;

    location / {
        root /var/lib/jenkins/jobs/satis-build-and-deploy/workspace/web;
        index index.html;
    }
}

『/var/lib/jenkins/jobs/satis-build-and-deploy/workspace/web』ってのがjenkinsがビルドして生成されたpackagistのコンテンツの場所。

おれおれpackagistからパッケージをインストール

composer install/updateの際にsaticで作ったおれおれpackagistを見に行くには以下のようなパラメタを追加してあげれば良い。

	"repositories": [
		{ "packagist": false },
		{ "type": "composer", "url": "http://packagist.absolute-keitarou.net" }
	]

あとはいつもどおりcomposer updateとかでパッケージのインストールができますおすし

おすすめ書籍

基礎からのPHP (基礎からシリーズ)
西沢 夢路
ソフトバンククリエイティブ
売り上げランキング: 241,260

関連記事

uiactivity-hatena-1uiactivity-hatena-1.png

【iOS開発】『はてなブックマークに追加する』UIActivityライブラリを作ってみた

まえがき 『はてなブックマークに追加する!!』の機能を実装したくて探し...

記事を読む

PP_tenkey500-thumb-186xauto-299

【個人的】WEBエンジニアになる前に取っておきたい資格10選

まえがき こんな感じの記事を書くのは初めてになると思います。が書いて...

記事を読む

no image

RedisとMYSQLでランキングベンチマーク作ってみたよ

      まえがき Redisを使って簡易なランキン...

記事を読む

the-open-source-report-cardthe-open-source-report-card.png

『The Open Source Report Card』というGithubアカウントレポートサイトが面白い

まえがき 今回はたまたま面白いWEBサイトを見つけたのでご紹介。 とあ...

記事を読む

octopress-on-githubpages-2octopress-on-githubpages-2.png

GithubPagesでOctopressを使ってブログを作ってみた。

まえがき 最近ちょっと新しいブログを作りたいなーと思いつついくつかブ...

記事を読む

新着記事

no image

PHPでRubyのirbっぽいインタラクティブなスクリプトが実行できる「boris」

まえがき PHPでもRubyのirbみたいなことがしたくて探してみたと...

記事を読む

2015年の抱負と去年の振り返り〜よちよちWEB業界1年経験して〜

まえがき あけましておめでとうございます。今年もどうぞよろしくお願いし...

記事を読む

Java SE 7 Bronze試験(1Z0-802)を受けてきました

まえがき 以前から少し受けてみたかった試験『Java SE 7 Bro...

記事を読む

HubotでJenkinsのジョブを実行する

まえがき HubotをつかってJenkinsのジョブをじっこうしてみた...

記事を読む

no image

Hubotをforeverでデーモン化する

まえがき 今回はHubotをforeverを使ってデーモン化してみた時...

記事を読む

スポンサーリンク

  • Sorry. No data so far.

PAGE TOP ↑