/UberAppProject

Primary LanguagePythonOtherNOASSERTION

UberAppProject

The Task 💼

Uber have released an example application that uses their external API. It is built in Python using flask. Your job is to create working development, testing and production environments and to build a pipeline to move the code through them using Jenkins.

Our Progress ⏳

  • Create Nginx cookbook - ✅
  • Create Python cookbook - ✅
  • Create Cookbook tests that pass - ✅
  • Create app project directory - ✅
  • Configure the Berks Vendor - ✅
  • Add the chef content to the app and arrange the file structure - ✅
  • Add the vagrant file and configure it - ✅
  • Confirm the environment is fully provisioned for the app to run - ✅
  • Run the machine and make sure the Uber app is reachable - ✅
  • Create a link between Github & Jenkins - ✅
  • Create the first Jenkins job that merges to master - ✅
  • Create working unit tests for the merging job - ✅
  • Create working integration tests for the merging job - 🔴
  • Create a second Jenkins job that makes a AMI (Amazon Machine Image) - ✅
  • Confirm AMI has been made on AWS(Amazon Web Services) - ✅
  • (Optional Task) Create a AWS instance manually and run the app within the cloud ✅
  • (Optional Task) Have Jenkins use the new AMI to make a instance - 🔴

How to Install 💻

  • To begin, clone the GitHub repository HERE
  • Navigate into the UberAppProject file and run berks vendor cookbooks
  • Now run vagrant up to start the application.
  • Open your internet browser and type http://development.local
  • If successful you will see this page.

UberAppPage

Further Development 🚧

If you wish to perform updates on the repository follow the below steps.

  • Change to the 'dev' branch using git checkout dev
  • Make the changes
  • Then Push to the 'dev' branch using git push origin dev
  • From here the process is automatic, see below for more information.

The Pipeline 🔀

The UberAppProject has a development pipeline. This is what happens when you make changes and push to the 'dev' branch.

  • Push to development branch.
  • Jenkins webhook is activated automatically.
  • Jenkins then runs the code against the written tests.
  • If the code passes then it is automatically merged to master.
  • A second Jenkins job is activated on completion of the last.
  • Jenkins then interacts with Amazon Web Services and creates a Amazon Machine Image.