Documentation

.github/workflows/README.md

📦 GitHub Actions Workflows

This folder contains CI/CD pipelines for the Devex project. Each workflow automates deployment and image publishing for various components.

🔐 Required Repository Secrets

Before using these workflows, make sure the following secrets are added under: GitHub Repo → Settings → Secrets → Actions
Secret NameDescription
DEPLOY_SSH_PRIVATE_KEYSSH private key for remote deploy user
DO_SPACES_KEYAccess key for DigitalOcean Spaces
DO_SPACES_SECRETSecret key for DigitalOcean Spaces
DO_SPACES_BUCKETBucket name where templates will be synced
DO_SPACES_ENDPOINTEndpoint URL for DigitalOcean Spaces

🧱 Workflows Summary

core-pipeline.yaml

  • Triggers: On changes in apps/core/ or the workflow file itself.
  • What it does:
    • Builds the Docker image for the Core service.
    • Pushes it to GHCR.
    • Deploys the updated Core service via Docker Stack to a remote VPS using SSH.

runner-pipeline.yaml

  • Triggers: On changes in apps/runner/ or the workflow file.
  • What it does:
    • Dynamically finds all Dockerfiles in apps/runner/.
    • Builds and pushes one Docker image per template runner to GHCR.
    • Tags each image with both :latest and the current git sha.

templates-pipeline.yaml

  • Triggers: On changes in any folder inside templates/ (excluding README files).
  • What it does:
    • Checks if any individual template folder exceeds 8MB.
    • If all are within limits, syncs the templates/ directory to DigitalOcean Spaces (S3-compatible).

cluster-availability-check.yaml

  • Triggers:
    • Scheduled every 12 hours (00:00 UTC, 12:00 UTC)
    • Manual trigger via workflow_dispatch
  • What it does:
    • Resolves DNS for repl.parthkapoor.me
    • Validates TLS certificate SAN contains repl.parthkapoor.me
    • Verifies HTTP root reachability (http://repl.parthkapoor.me/) to catch port 80 issues
    • Probes:
      • https://repl.parthkapoor.me/test-repl
      • https://repl.parthkapoor.me/test-repl/anything
    • Fails if status is not 200 or expected whoami markers are missing
    • Prints detailed diagnostics (DNS, TLS, headers, response tails) on failure
No additional repository secrets are required for this workflow.