CI/CD Pipeline

May 2, 2022 ยท View on GitHub

CSCI 220 2A Final Project

Table of contents

Overview

This project is a representation of how a CI/CD pipeline could be implemented and make a team of indivduals more productive by automating both the testing before production, and deployment there afterwards. The CI/CD Pipeline allowed us to learn github actions, where we would use triggers such as pull requests to both test and lint our code before automating the process of deploying it via our Heroku server.

Technologies

Project is created with:

Setup

The steps that were implemented to make this CI/CD Pipeline possible were as follows:

  1. Creating our Github Actions Workflow
    1. Creating within our repository the .github/workflows area.
    2. Creating different .yml files for our different workflow actions.
  2. Identifying The Triggers
    1. Certain workflows want to be qued at different times, so making sure that actions are called on at the right time is important
    2. This is what allows our pipeline to be automated rather than manually writing a command when we want to test our code (Although we allowed that to be a possibility as well due to our workflow dispatch).
  3. Integration
    1. Rather than using one github workflow for both our testing and our linting we decided to create two seperate workflows that would be triggered simulatenously.
    2. The trigger for our testing and linting phase is upon a pull request.
  4. Deployment
    1. We Decided to deploy into heroku so using a single workflow we take our flask application and deploy it directly to Heroku.
    2. The difference between our integration and deployment is that our deployment is called once the commit is actually pushed to the main branch.

Background

The project was created using a variety of sources, but here are some of the sources that we found the most influential during the development phase of our project.

=======

Dr. Coleman