return $this->client->send($request)->json(); } public function uploadAsset($id, $name, $contents, $contentType) { $request = $this->client->createRequest('POST', sprintf("https://api.github.com/repos/%s/%s/releases/%s/assets?name=%s", $this->owner, $this->repo, $id, $name), array('Content-Type' => $contentType), $contents); return $this->client->send($request)->json(); } } $owner = 'aws'; $repo = 'aws-sdk-php'; $returnVal = shell_exec('which chag') or die('chag not found in path'); $token = getenv('OAUTH_TOKEN') or die('OAUTH_TOKEN environment var not found!'); $artifacts = realpath(__DIR__ . '/artifacts') or die('artifacts dir not found'); $stageDir = realpath($artifacts . '/staging') or die('stage dir not found'); $zip = realpath($artifacts . '/aws.zip') or die('zip not found'); $phar = realpath($artifacts . '/aws.phar') or die('phar not found'); // Get the latest changelog entry chdir($stageDir); $tag = Release::exec('chag get'); $contents = Release::exec('chag contents'); echo "Found tag: {$tag}\n\n{$contents}\n\n"; $release = new Release($token, $owner, $repo); $res = $release->createRelease($tag, $contents, 'master', true); echo "Created release: {$res['id']}\n"; // Upload the phar $upload = $release->uploadAsset($res['id'], 'aws.phar', file_get_contents($phar), 'application/octet-stream'); echo "Uploaded asset: {$upload['browser_download_url']}\n"; // Upload the zip $upload = $release->uploadAsset($res['id'], 'aws.zip', file_get_contents($zip), 'application/zip'); echo "Uploaded asset: {$upload['browser_download_url']}\n\n"; echo "Successfully create GitHub release\n";