Octopush

View the Project on GitHub /olx-inc/octopush

Application Architecture

High level design

From a conceptual point of view Octopush consists of 2 components:

The whole business flow can be described as:

From a functional standview, the application provides an API to manipulate/query jobs and a dashboard page that shows each job status and that allows authorized users to perform some additional actions like moving a job to live environment.

Implementation details

The whole system is implemented as one web application in Php using Silex Framework and MySql database.

The backend is implemented inside the web application under the /run endpoint. The idea is to have a cron doing a get request to /run every 1 minute.

At the module level the application is structured according to the MVC patterns.

Models includes the Job class, its mapper class to encapsulate database access and a JobStatus class that defines the constants that represents the valid status of a Job.

There are 2 controllers, the QueueController that allows to manage the application itself (pause/resume) and the JobController that provides the operations to manipulates jobs (enqueue/getStatus/reportTestResults).

The interaction with the RM Jenkins in encapsulated in a service class called Jenkins.

GitHub interaction (required for authorization) is encapsulated within the GitHub service class.