CI/CD

Continuous integration and continuous deployment infrastructure

Currently, the way we have set up CI/CD is through GitHub Actions as well as Husky. GitHub Actions serves as a remote/repository-side integration and Husky is for developer-side.

The workflow is like this:

  1. Developer makes code changes

  2. Developer commits code

    1. Pre-commit check: Husky linting workflow

  3. Developer pushes commits to remote branch

  4. Developer opens pull request

    1. Pull request check: Cypress tests

  5. Developer merges pull request

    1. (if automatic deployments) Github Actions performs deployment to production if the target branch is master

Husky

Currently Husky simply lints commit messages to try to ensure that commit messages are descriptive enough.

The rules outline by conventional commits are enforced:

Eventually, Husky should check both code linting using eslint and formatting using prettier once we stabilize both.

Github Actions

We have GitHub actions for integration (CI) and deployment (CD) in the .github/ directory.

Integration

See cypress.yml for Cypress E2E tests.

Deployment

There is frontend.yml , community.yml , and backend.yml for workflows that deploy each part of the platform. The deploy.yml combines all of these workflows to deploy the entire platform.

Last updated