Web無料相談会2018冬
Web無料相談会2018冬
2014.05.14

CakePHPでBitbucketのAPIを利用する方法

tetsu

こんにちは、管理課でありながらエンジニア(?)の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マニュアル