From 8b0e7ca14028e4936eb8d201cd1e42aeed797d87 Mon Sep 17 00:00:00 2001 From: Stephen Ball Date: Thu, 28 May 2015 13:10:13 +0100 Subject: [PATCH 1/6] Toying around with adding a CCTray XML file --- app/Http/Controllers/DashboardController.php | 13 +++++++++++++ app/Http/routes.php | 3 +++ app/Presenters/DeploymentPresenter.php | 17 +++++++++++++++++ app/Presenters/ProjectPresenter.php | 19 +++++++++++++++++++ app/Project.php | 2 +- 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index dc4d71113..827564945 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -1,6 +1,7 @@ $projects_by_group ]); } + + public function cctray(ProjectRepositoryInterface $projectRepository) { + $projects = $projectRepository->getAll(); + + foreach ($projects as $project) { + $project->latest_deployment = $project->deployments->first(); + } + + return Response::view('cctray', [ + 'projects' => $projects + ])->header('Content-Type', 'application/xml'); + } } diff --git a/app/Http/routes.php b/app/Http/routes.php index c9148d65f..924e08424 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -14,6 +14,7 @@ Route::group(['middleware' => 'auth'], function () { Route::get('/', 'DashboardController@index'); + Route::get('webhook/{projects}/refresh', 'WebhookController@refresh'); Route::get('projects/{projects}', 'DeploymentController@project'); @@ -85,6 +86,8 @@ 'uses' => 'WebhookController@webhook' ]); +Route::get('cctray.xml', 'DashboardController@cctray'); + Route::get('heartbeat/{hash}', [ 'as' => 'heartbeat', 'uses' => 'HeartbeatController@ping' diff --git a/app/Presenters/DeploymentPresenter.php b/app/Presenters/DeploymentPresenter.php index 60b3c2dd3..da6d61945 100644 --- a/app/Presenters/DeploymentPresenter.php +++ b/app/Presenters/DeploymentPresenter.php @@ -9,6 +9,23 @@ */ class DeploymentPresenter extends Presenter { + /** + * Returns the build status needed by CCTray + * These strings can not be translated + * + * @return string + */ + public function presentCcTrayStatus() + { + if ($this->status === Deployment::COMPLETED) { + return 'Success'; + } elseif ($this->status === Deployment::FAILED) { + return 'Failure'; + } + + return 'Unknown'; + } + /** * Gets the translated deployment status string * diff --git a/app/Presenters/ProjectPresenter.php b/app/Presenters/ProjectPresenter.php index 0efd737fe..9ed731993 100644 --- a/app/Presenters/ProjectPresenter.php +++ b/app/Presenters/ProjectPresenter.php @@ -10,6 +10,25 @@ */ class ProjectPresenter extends Presenter { + /** + * Returns the build status needed by CCTray + * These strings can not be translated + * + * @return string + */ + public function presentCcTrayStatus() + { + if ($this->status === Project::FINISHED || $this->status === Project::FAILED) { + return 'Sleeping'; + } elseif ($this->status === Project::DEPLOYING) { + return 'Building'; + } elseif ($this->status === Project::PENDING) { + return 'Pending'; + } + + return 'Unknown'; + } + /** * Gets the translated project status string * diff --git a/app/Project.php b/app/Project.php index aee99a56c..4d7797a8e 100644 --- a/app/Project.php +++ b/app/Project.php @@ -137,7 +137,7 @@ public function notifications() */ public function deployments() { - return $this->hasMany('App\Deployment'); + return $this->hasMany('App\Deployment')->orderBy('started_at', 'DESC'); } /** From 1db983c1978eb702a03e3a473ee27f0ce815a6da Mon Sep 17 00:00:00 2001 From: Stephen Ball Date: Thu, 28 May 2015 13:10:34 +0100 Subject: [PATCH 2/6] Adding missing view --- resources/views/cctray.blade.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 resources/views/cctray.blade.php diff --git a/resources/views/cctray.blade.php b/resources/views/cctray.blade.php new file mode 100644 index 000000000..04afeaeb3 --- /dev/null +++ b/resources/views/cctray.blade.php @@ -0,0 +1,13 @@ + + + @foreach ($projects as $project) + + @if (!is_null($project->latest_deployment)) + + @else + + @endif + + @endforeach + + \ No newline at end of file From 993439e16071c57fc0e6786855c67487d4089580 Mon Sep 17 00:00:00 2001 From: Stephen Ball Date: Thu, 28 May 2015 13:27:20 +0100 Subject: [PATCH 3/6] Adding group name --- resources/views/cctray.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/cctray.blade.php b/resources/views/cctray.blade.php index 04afeaeb3..64568eb18 100644 --- a/resources/views/cctray.blade.php +++ b/resources/views/cctray.blade.php @@ -3,9 +3,9 @@ @foreach ($projects as $project) @if (!is_null($project->latest_deployment)) - + @else - + @endif @endforeach From eb8ed84c482e36e0259e8cfd65ee5739998036e8 Mon Sep 17 00:00:00 2001 From: Stephen Ball Date: Thu, 28 May 2015 13:44:03 +0100 Subject: [PATCH 4/6] Small tweak to date when there is not deployment yet --- resources/views/cctray.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/cctray.blade.php b/resources/views/cctray.blade.php index 64568eb18..b65082095 100644 --- a/resources/views/cctray.blade.php +++ b/resources/views/cctray.blade.php @@ -3,9 +3,9 @@ @foreach ($projects as $project) @if (!is_null($project->latest_deployment)) - + @else - + @endif @endforeach From 0aca3188b7a118dc872b3ab722657259efe48215 Mon Sep 17 00:00:00 2001 From: Stephen Ball Date: Thu, 28 May 2015 22:33:50 +0100 Subject: [PATCH 5/6] Adding missing comment --- app/Http/Controllers/DashboardController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 827564945..62fc9ba97 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -55,6 +55,12 @@ public function index( ]); } + /** + * Generates an XML file for CCTray + * + * @param ProjectRepositoryInterface $projectRepository + * @return Response + */ public function cctray(ProjectRepositoryInterface $projectRepository) { $projects = $projectRepository->getAll(); From e543d459a782dd185cba53283885fbee3b9c9ed3 Mon Sep 17 00:00:00 2001 From: Stephen Ball Date: Thu, 28 May 2015 22:39:35 +0100 Subject: [PATCH 6/6] Cleaning up PHPCS complaints --- app/Http/Controllers/DashboardController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 62fc9ba97..7b6359dbe 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -57,11 +57,12 @@ public function index( /** * Generates an XML file for CCTray - * + * * @param ProjectRepositoryInterface $projectRepository * @return Response */ - public function cctray(ProjectRepositoryInterface $projectRepository) { + public function cctray(ProjectRepositoryInterface $projectRepository) + { $projects = $projectRepository->getAll(); foreach ($projects as $project) {