Skip to main content

SOP: CI/CD & Automation (GitHub Actions)

1. Overview​

We aim to automate the deployment pipeline to reduce human error. Currently, we operate in a hybrid mode (Scripted + Manual), moving towards full CI/CD.

2. The "Git-Update-All" Script​

The git-update-all.sh script in the root is the Fleet Synchronizer.

  • Purpose: Updates the parent pointer for all submodules.
  • When to run: After you have pushed changes to a client submodule (e.g., clients/client-a).
  • Effect: Ensures the "Fleet Controller" knows that client-a has moved to a new commit.

3. Workflow Standard​

3.1. Making Changes​

  1. Enter client directory: cd clients/client-a
  2. Make changes (edit compose.yaml).
  3. Commit and Push inside the submodule:
    git add .
    git commit -m "feat: upgrade nginx"
    git push origin main
  4. Return to root: cd ../..
  5. Sync the Fleet:
    ./git-update-all.sh

4. Future Automation (Roadmap)​

  • Linting: Actions to run ansible-lint and tflint on PRs.
  • Drift Detection: Scheduled jobs to check if live infrastructure matches Terraform state.