Created by
Michael Schramm
| <?php
// check blog post: http://blog.ms07.at/?p=374
define('BITBUCKET_USER', 'XXX');
define('BITBUCKET_API_KEY', 'XXX');
error_reporting(E_ALL);
function result($data) {
header('content-type: text/json');
echo json_encode($data);
die();
}
/** @var array $json */
$json = @json_decode(file_get_contents('php://input'), true);
$build = $json['build'];
// SUCCESSFUL || FAILED || INPROGRESS
switch ($build['status']) {
case 'testing':
$state = 'INPROGRESS';
break;
case 'success':
$state = 'SUCCESSFUL';
break;
case 'error':
case 'stopped':
case 'infrastructure_failure':
$state = 'FAILED';
break;
case 'waiting':
case 'ignored':
case 'blocked':
default:
result([
'error' => $build['status'] ?: 'Failed to get Build Data'
]);
}
if (!empty($_GET['message'])) {
$message = $_GET['message'];
} else {
$message = 'status update';
}
$data = [
'key' => 'codeship',
'state' => $state,
'name' => 'Codeship Tests',
'url' => $build['build_url'],
'description' => $message
];
$url = sprintf(
'https://api.bitbucket.org/2.0/repositories/%s/commit/%s/statuses/build',
$build['project_name'],
$build['commit_id']
);
$opts = [
'http' => [
'method' => 'POST',
'header' => [
'Content-type: application/json',
'Authorization: Basic '.base64_encode(BITBUCKET_USER.':'.BITBUCKET_API_KEY)
],
'content' => json_encode($data)
]
];
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
$data = @json_decode($result, true);
if (!$data) {
result([
'error' => $build['status']
]);
}
result($data);
|