こんにちは、管理課でありながらエンジニア(?)のtetsuです。
今回はBitbucketというサービスのAPIをCakePHPで利用する方法を紹介します。
Bitbucketとは?
BitbucketとはAtlassianが提供する分散バージョン管理システムサービスです。
公式サイトでは以下のように説明されています。
Bitbucketは Mercurialという分散バージョン管理システム(DVCS)を使っているコードをホストするサイトです。Mercurialを使うことで、あなたのデータは分散されつつも、共有し、開発を継続できます。
LIGでは様々なお客様のお仕事をさせていただいているので、案件毎に複数の開発者(プログラマーやデザイナー)が関わるため、このサービスを利用することで開発者同士の共有が容易になっています。
今回は、CakePHPでBitbucketのAPIを利用する方法をご紹介します。
CakePHPでBitbucketのAPIを利用する方法
アカウントの作成
BitbucketのAPIを利用するにはアカウントが必要になります。あらかじめBitbucketのアカウントを作成してください。5人までは登録無料です(2014/5/7時点)。
実装
アカウントの準備が出来たら実際にCakePHPでAPIを利用してみましょう。
ここでは「BitbucketsController.php」というコントローラー、メソッド「create_bitbucket」でリポジトリの新規登録をする手順を例として説明します。
「HttpSocket」の呼出し
BitbucketのAPIを利用するに当たり、CakePHPの「Utilities」ライブラリの1つ、「HttpSocket」を利用します。
class BitbucketsController extends AppController {
public function create_bitbucket(){
//HttpSocket呼出し
App::uses('HttpSocket', 'Network/Http');
}
}
アカウント情報の変数化
作成したアカウント情報を変数化したコードを以下のように記述します。
//アカウント名
$bitbucketUserName="アカウントの「ユーザ名」を記述";
$bitbucketPassword="アカウントのパスワードを記述";
作成するリポジトリ情報の変数化
作成するリポジトリ情報を変数化し、「HttpSocket」の接続準備をします。
//リポジトリ情報
$repo_slug='test-repo';//リポジトリのスラッグ名
$repo=array(
'scm'=>'git',//作成するリポジトリ種類
'is_private'=>true,//アクセスレベル設定
);
//HttpSocketのURL
$url='https://api.bitbucket.org/2.0/repositories/'.$bitbucketUserName.'/'.$repo_slug;
APIの実行
ここまでが完了したら、次のコードを追加してAPIを実行してみましょう。
//SSL通信で「HttpSocket」を利用する設定にします。
$HttpSocket = new HttpSocket(array('ssl_allow_self_signed' => true));
//「HttpSocket」にログイン情報を設定
$HttpSocket->configAuth('Basic', $bitbucketUserName, $bitbucketPassword);
//APIの実行
$response = $HttpSocket->request(array('uri'=>$url));
最終的なコード例は以下のようになります。
class BitbucketsController extends AppController {
public function create_bitbucket(){
//HttpSocket呼出し
App::uses('HttpSocket', 'Network/Http');
//アカウント名
$bitbucketUserName="アカウントの「ユーザ名」を記述";
$bitbucketPassword="アカウントのパスワードを記述";
//リポジトリ情報
$repo_slug='test-repo';//リポジトリのスラッグ名
$repo=array(
'scm'=>'git',//作成するリポジトリ種類
'is_private'=>true,//アクセスレベル設定
);
//HttpSocketのURL
$url='https://api.bitbucket.org/2.0/repositories/'.$bitbucketUserName.'/'.$repo_slug;
//SSL通信で「HttpSocket」を利用する設定にします。
$HttpSocket = new HttpSocket(array('ssl_allow_self_signed' => true));
//「HttpSocket」にログイン情報を設定
$HttpSocket->configAuth('Basic', $bitbucketUserName, $bitbucketPassword);
//APIの実行
$response = $HttpSocket->request(array('uri'=>$url));
}
}
記述に問題が無ければ、Bitbucketに「test-repo」のリポジトリが追加されているかと思います。
このように、CakePHPで簡単にBitbucketへのAPIを実装が可能です。
上記コードはあくまでも例なので、実運用に合わせて実装してみてください。
リポジトリ作成時に利用可能な設定情報
なお、上記のリポジトリを作成する際に変数化した「$repo」は説明に必要な情報になります。
リポジトリ作成時に利用可能な設定情報は以下のものがあります。
scm
リポジトリのタイプを指定します。
値に「hg」または「git」のどちらかを指定可能です。
- 「hg」…「Mercurial」タイプのリポジトリを指定します。
- 「git」…「Git」タイプのリポジトリを指定します。
$repo['scm']='hg';
name
リポジトリ名を指定します。
指定がない場合は「スラッグ名」がリポジトリ名になりますが、独自に指定したい場合は別に設定します。
$repo['name']='TEST';
※日本語を設定するとリポジトリURLがバグる模様なので、半角英数字で設定することをお勧めします。
is_private
作成するリポジトリの「アクセスレベル」を指定します。
不特定多数の方に公開したい場合は「false」を指定します。
$repo['is_private']=false;
description
作成するリポジトリの説明文を指定します。
$repo['description']='これはテストリポジトリです。';
forking_policy
作成するリポジトリの「フォーク」種類を指定します。
指定する値は次の通りになります。
- 「allow_forks」…フォークを許可
- 「no_public_forks」…プライベートフォークのみ許可
- 「no_forks」…フォーク不可
$repo['forking_policy']='allow_forks';
language
作成するリポジトリの「プログラミング言語」を指定します。
$repo['language']='php';
has_issues
作成するリポジトリで「課題管理 」機能を利用するかどうかを「true」または「false」で指定します。
指定がない場合は「利用しない」となります。
$repo['has_issues']=true;
has_wiki
作成するリポジトリで「Wiki」機能を利用するかどうかを「true」または「false」で指定します。
指定がない場合は「利用しない」となります。
$repo['has_wiki']=true;
最後に
今回はBitbucketの一部のAPIを紹介させていただきました。
その他にも様々なAPIが用意されているようなので、マニュアルをご参考の上、運用に合わせた実装をしてみてはいかがでしょうか。
それでは、また!
参考元:Bitbucket APIマニュアル
https://confluence.atlassian.com/display/BITBUCKET/Use+the+Bitbucket+REST+APIs
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。