CI/CD Pipeline

Our project uses GitHub Actions for Continuous Integration and Continuous Deployment (CI/CD). We have three main workflows:

  1. Docker Build and Test Pipeline

  2. Documentation Deployment Pipeline

  3. Container Registry Deployment Pipeline

Docker Build and Test Pipeline

This pipeline handles testing and building of our Docker containers to ensure code quality and build integrity.

Workflow Triggers

  • Push events to any branch

  • Tag pushes with ‘v*’ prefix

  • Excludes documentation and markdown files

Key Steps

  1. Test Client Web

    • Runs on Node.js 20

    • Executes npm tests

    • Skips if commit message contains ‘WIP’/’wip’

  2. Docker Build

    • Builds all service containers

    • Sets up environment variables

    • Verifies build integrity

    • Does not deploy containers

Documentation Deployment

Automatically builds and deploys documentation to GitHub Pages.

Workflow Triggers

  • Push events to master branch

  • Ignores changes in client and server directories

Key Steps

  1. Build Documentation

    • Uses Sphinx with Read the Docs theme

    • Includes support for Mermaid diagrams

    • Generates HTML documentation

  2. Deploy to GitHub Pages

    • Publishes to gh-Pages branch

    • Uses GitHub token for authentication

    • Forces clean deployment

Container Registry Deployment

This pipeline handles the deployment of Docker images to our container registry.

Workflow Triggers

  • Push events to main branch

  • Manual workflow dispatch

Key Steps

  1. Login to Container Registry

    • Authenticates with container registry credentials

    • Sets up Docker buildx

  2. Build and Push Images

    • Builds optimized production images

    • Tags images with appropriate versions

    • Pushes images to container registry

Access Points

  • Documentation: https://asm-studios.github.io/AREA/

  • Container Registry: registry.digitalocean.com/area