Homework 6

You will get hands on practice with deployment and setting up automated workflows using Github Actions, to get a sense of conituous delivery/deployment (CD) and continuous integration (CI).

DayDate
ReleaseFriOCT 16
DueMonOCT 26 @ 11pm (EST)

Grab a copy of your homework 5 solution (i.e. latest most-complete version of MyBooksApp). Your task is to:

  1. Deploy the MyBooksApp on Heroku. You may deploy on any of your team's members' Heroku account. Note that Heroku's DBMS is Postgres (not SQLite), so you will likely need to make adjustments to your code base (making Postgres Db connections instead of SQLite's, sql queries etc.) so that everything works as expected once deployed.

    info

    Make sure to check out all the steps needed for a sucessful deployment given under "Deployment, Continous Delivery/Integration (CI/CD)" readings.

    tip

    Note that you need to add Postgres to your Heroku app as an add-on by heroku addons:create heroku-postgresql.

    tip

    It might happen to you that you deploy the app, but when you visit the webpage, you get an applicaiton error. If that happens to you, check out the logs to get clues as to why it is not working. You can do so via either Heroku web interface (go to the app from Heroku dashboard, click More->View logs at top-right corner of the page), or Heroku CLI by heroku logs --tail -a APP_NAME where APP_NAME is the heroku app name.

    tip

    Once you have successfully deployed the app, make sure to test all the views/endpoints/functionalities and assert everything is working as expected!

  2. Setup an automated deployment workflow using Github Actions similar to what we did in class on HerokuDemo App. The HerokuDemo app is available here for your reference. Once you do this, whenever a push is made to the master branch on your MyBooksApp repo, it should trigger a cascade of actions which includes creating a fresh build of the app and automated deployment to Heroku.

Submission

Submit a single .zip file to Gradescope. Th zip file should contain a folder named hw6 that contains all your project files includeing a README.md file which includes all the assumptions made, work done, etc. Make sure you include your heroku app name/link at the top of the README.md. Also, make sure your workflow .yml file is included in your submitted .zip file.

caution

Note that you need to work collaboratively to finish the homework, but you will make one submission as a group. All group members must contribute to the homework.