Skip to content
Mahesh Kasbe edited this page Aug 19, 2023 · 3 revisions

Setting up the CI/CD Pipeline using Github Actions on GraphSpace

Background

Currently the Graphspace code repository has a lot of mismatched dependency issues & consist no automating techniques in their repository to release or test graphspace image while deploying to production. The Project aims to stabilise & setup the CI/CD pipeline for Graphspace project. The project involves creating a Production ready Dokcerfile setup to install graphspace locally. The project also focuses on automating the release workflow of Docker image to Docker-registry services like AWS ECR or Dockerhub, automating the releasing, testing PR , labelling (PR's & Issues), performing necessary security checks & image vulnerability scans by creating multiple workflows with Github Actions

Goal

This project aims to stabilize the project and its code repository as there are multiple dependencies so, this will also help in reducing problems and blockers while setting up this project locally and also setting up the pipeline and checks for the PR to be merged into the master.

  1. Graphspace dependency issues

Resolve blockers and issues while setting up GraphSpace locally and running this project for eg. upgrading versions of some libraries, resolving requirements.txt file by adding all remaining libraries, installation issues, etc.

  1. Create a Dockerfile

Creating a docker file for this project which provides a suitable environment for running this project with all required dependencies. Create a docker-compose file that helps us to run this project in Github action workflows and create this image and also helps us to run this locally with minimal setup.

  1. Setup GitHub Actions

Set up the workflow for the GitHub actions which will provide a suitable environment for running this project and no PR can be merged without the jobs and checks being successful in the workflow. On every pull request and for every commit in the PR, the GitHub actions should trigger all the workflows and jobs written for this project.

Overview of Work Done

Community Bonding (May 5, 2023 - May 28, 2023)

  • Understood the Graphspace codebase.
  • Discussed detailed workflow with mentors along with implementation ideas.
  • Refined the strategic plan for project completion.

Phase One (May 29, 2023 - June 30, 2023)

  • Major Bug fixes done: (efa207)
    • Fixed file extension typo for base.html inside templates folder for bootstrap-table static component
    • Bumped psycopg2 version from 2.6.2 to 2.7.4, added lxml inside requirements.txt
    • Removed bootstrap and bootstrap-table from bower.json to install.sh for smooth installation of Graphspace
  • Created a locally deployable Docker-Compose file with Dockerfile (efee21f) (Demo)
    • Added elasticsearch and postgres support for docker-compose
  • Created a image deploy workflow to ECR using Github Actions (d292024) (Demo)

Phase Two (July 1, 2023 - July 31, 2023)

  • Added some extra github actions workflow for quality & labeling (f8ce6e9)
    • branch label to a PR (Demo)
    • Label an issue name to a opened issue (Demo)
    • assign people to a PR (Demo)
  • Fixed issue installing graphspace on mac (acf602b)
  • Added documentation for installing graphspace locally on wiki page on graphspace repository (link)
  • Added a Dockerhub workflow to push Graphspace image to dockerhub (c815599) (Demo)

Phase Three (August 1, 2023 - August 28, 2023)

  • Added Trivy Vulnerability Scannner to scan docker Images (Demo)
  • Created Project Report (Work Product) on github using a Gist File. (Gist File)
    • Added Documented work report
    • Added gif/Video assets in the report
  • Completed the buffer task of the previous weeks

Skills

List skills/technologies that the student should be familiar with.

Python, Django, Docker, YAML, GithubActions(essential) AWS (nice to have)

Clone this wiki locally