Skip to main content

CI/CD

Pipeline Overview

We are using GitHub Actions for our CI/CD pipelines. The main workflows include:

  • [*] Build and Test: Runs on every pull request and push to main branches. It builds the application and runs unit tests.
  • [*] Docker Image Build and Push: Builds Docker images and pushes them to GitHub Container
  • [*] Registry (GHCR) on successful builds.
  • Deployment: Uses Portainer for GitOps-based deployments.
  • Notifications: Sends notifications to Slack on build and deployment status.
  • Scheduled Jobs: Regular maintenance tasks like dependency updates and security scans.
  • Manual Triggers: Allows manual triggering of deployments and other workflows.
  • Rollback Procedures: Steps to rollback deployments in case of failures.
  • Monitoring and Alerts: Integrates with monitoring tools to track application health post-deployment.
  • Secrets Management: Uses GitHub Secrets for managing sensitive information.
  • Multi-Environment Support: Separate workflows and configurations for dev, staging, and production environments.
  • Code Quality Checks: Integrates linters and static code analysis tools.
  • Documentation Generation: Automatically generates and publishes documentation on code changes.
  • [*] Versioning: Tags releases and manages versioning automatically.
  • Artifact Management: Stores build artifacts for future reference and deployments.
  • Compliance and Security Checks: Ensures code meets security and compliance standards before deployment.
  • Performance Testing: Runs performance tests on staging before production deployments.
  • Backup Procedures: Regular backups of critical data before deployments.
  • Audit Logs: Maintains logs of all CI/CD activities for auditing purposes.

Build Process

we use docker to build our application. The Dockerfile is located in the root of the repository.

Deployment Environments

We have three main environments:

  • Development: For active development and testing of new features.
  • Staging: A pre-production environment that mirrors production for final testing.
  • Production: The live environment where the application is accessible to users.