|
| 1 | +# GitHub Workflows for eligibility-signposting-api-specification |
| 2 | + |
| 3 | +This directory contains GitHub Actions workflows that automate CI/CD processes for the eligibility-signposting-api-specification project. These workflows manage deployment, tagging, and notifications for different environments (dev, sandbox, preprod, prod) and integrate with external tools like proxygen and Postman. |
| 4 | + |
| 5 | +## Workflows Overview |
| 6 | + |
| 7 | +### 1. dev_sandbox_publish_deploy.yaml |
| 8 | + |
| 9 | +- **Triggers:** On push to `main` branch. |
| 10 | +- **Environments:** dev, sandbox. |
| 11 | +- **Steps:** |
| 12 | + - Sets a version tag based on the current timestamp. |
| 13 | + - Installs dependencies (Python, Node.js, Poetry, proxygen-cli). |
| 14 | + - Generates and publishes OpenAPI specs to proxygen for dev and sandbox. |
| 15 | + - Publishes the Postman collection to Postman. |
| 16 | + - Tags the deployment in Git (Example tag: spec-20260122155331). |
| 17 | + - Notifies a Slack channel on completion. |
| 18 | + |
| 19 | +### 2. preprod_publish_deploy.yaml |
| 20 | + |
| 21 | +- **Triggers:** Manually via GitHub UI (`workflow_dispatch`). |
| 22 | +- **Inputs:** Tag to promote (defaults to latest). |
| 23 | +- **Environment:** preprod. |
| 24 | +- **Steps:** |
| 25 | + - Checks out the specified tag. |
| 26 | + - Installs dependencies. |
| 27 | + - Generates and publishes the OpenAPI spec to proxygen for preprod. |
| 28 | + - Deploys the spec to the preprod proxygen instance. |
| 29 | + |
| 30 | +### 3. prod_publish_deploy.yaml |
| 31 | + |
| 32 | +- **Triggers:** Manually via GitHub UI (`workflow_dispatch`). |
| 33 | +- **Inputs:** Tag to promote (required). |
| 34 | +- **Environment:** Prod. |
| 35 | +- **Steps:** |
| 36 | + - Checks out the specified tag. |
| 37 | + - Installs dependencies. |
| 38 | + - Generates and publishes the OpenAPI spec to proxygen for Prod. |
| 39 | + - Deploys the spec to the Prod proxygen instance. |
| 40 | + - Creates a GitHub Release for the deployed tag. |
| 41 | + |
| 42 | +## How to Use |
| 43 | + |
| 44 | +### dev & sandbox deployment |
| 45 | + |
| 46 | +- Push changes to the `main` branch. |
| 47 | +- The workflow will automatically: |
| 48 | + - Deploy to dev and sandbox. |
| 49 | + - Publish the Postman collection. |
| 50 | + - Tag the deployment. |
| 51 | + - Notify Slack. |
| 52 | + |
| 53 | +### preprod deployment |
| 54 | + |
| 55 | +- Go to the **Actions** tab in GitHub. |
| 56 | +- Select **Deploy to preprod** workflow. |
| 57 | +- Click **Run workflow**. |
| 58 | +- Enter the tag to promote (or use the default `latest`). |
| 59 | +- The workflow will deploy the specified tag to preprod. |
| 60 | + |
| 61 | +### prod deployment |
| 62 | + |
| 63 | +- Go to the **Actions** tab in GitHub. |
| 64 | +- Select **Deploy to Prod** workflow. |
| 65 | +- Click **Run workflow**. |
| 66 | +- Enter the tag to promote (must match a tag from previous deployments). |
| 67 | +- The workflow will deploy the specified tag to Prod and create a GitHub Release. |
| 68 | + |
| 69 | +## Notes |
| 70 | + |
| 71 | +- All workflows require secrets to be set in the repository (e.g., `PROXYGEN_PRIVATE_KEY`, `POSTMAN_API_KEY`, `SLACK_WORKFLOW_WEBHOOK_URL`, `GITHUB_TOKEN`). |
| 72 | +- The tags created follow the format `spec-YYYYMMDDHHMMSS` indicative of the deployment time. This is NOT related to the [specification/eligibility-signposting-api](../specification/eligibility-signposting-api.yaml) version. |
| 73 | +- For more details, see the steps in each workflow YAML file. |
0 commit comments