50 lines
2.8 KiB
Markdown
50 lines
2.8 KiB
Markdown
# GitHub Workflows — Nova Platform CI/CD Catalog
|
|
|
|
This directory contains the 7 GitHub Actions workflows for the Nova
|
|
platform. 3 are byte-identical Gitea mirrors (generated from
|
|
`workflows-src/` by `scripts/sync_workflows.py`, P8/REQ-172); 4 are
|
|
GitHub-only (Gitea act_runner feature gaps).
|
|
|
|
## Shared workflows (byte-identical Gitea + GitHub)
|
|
|
|
These 3 are generated from `workflows-src/<name>` by
|
|
`scripts/sync_workflows.py`; the `.gitea/workflows/<name>` mirror is kept
|
|
byte-identical. Run `python3 scripts/sync_workflows.py --check` to verify
|
|
no drift.
|
|
|
|
| Workflow | Trigger | Inputs | Required Secrets | Purpose |
|
|
|----------|---------|--------|------------------|---------|
|
|
| `ci.yml` | `pull_request: [main]` | — | — | Lint + test + check-only (runs on every PR) |
|
|
| `deploy.yml` | `workflow_call` (reusable) + `push: [main]` | `contract` (string, required), `mode` (string, default `deploy`), `changeRequestId` (string), `environment` (string) | `NOVA_AWS_ACCESS_KEY_ID`, `NOVA_AWS_SECRET_ACCESS_KEY`, `NOVA_AWS_DEFAULT_REGION`, `NOVA_KMS_KEY_ID`, `NOVA_LAMBDA_URL` | Reusable deploy workflow (invoked by consumer repos via `uses: acdl/.github/workflows/deploy.yml@v1.15`) |
|
|
| `modules-lifecycle.yml` | `pull_request: [main]` + `workflow_dispatch` | `lifecycle_mode` (string, default `plan` — `plan` or `full`) | `NOVA_AWS_ACCESS_KEY_ID`, `NOVA_AWS_SECRET_ACCESS_KEY`, `NOVA_AWS_DEFAULT_REGION`, `NOVA_AWS_ACCOUNT_ID` | L1 + L2 module lifecycle pipeline (plan-only default; full apply/modify/destroy on override) |
|
|
|
|
## GitHub-only workflows (no Gitea mirror)
|
|
|
|
These 4 have no Gitea counterpart (Gitea act_runner lacks the features
|
|
they require — reusable workflows, matrix `needs`, release API). See
|
|
`.gitea/workflows/README.md` for the limitation rationale.
|
|
|
|
| Workflow | Trigger | Inputs | Required Secrets | Purpose |
|
|
|----------|---------|--------|------------------|---------|
|
|
| `platform-test.yml` | `pull_request: [main]` | — | — | Lint + unit + integration + schema-validation (replaces `ci.yml` for PRs) |
|
|
| `primitives-plan.yml` | `pull_request: [main]` | — | `NOVA_AWS_*` | Plan-only for all L1 primitives (matrix) |
|
|
| `patterns-plan.yml` | `pull_request: [main]` | — | `NOVA_AWS_*` | Plan-only for all L2 modules (matrix) |
|
|
| `release.yml` | `push: [main]` | — | `NOVA_GITEA_TOKEN` (for Gitea release API) | Semver tag + MAJOR.MINOR/MAJOR floating-tag maintenance + release creation on merge to main |
|
|
|
|
## Reusable deploy workflow (`deploy.yml`)
|
|
|
|
Consumer repos invoke the deploy workflow via a versioned tag:
|
|
|
|
```yaml
|
|
jobs:
|
|
deploy:
|
|
uses: acdl/.github/workflows/deploy.yml@v1.15
|
|
with:
|
|
contract: .nova/contract.yml
|
|
environment: dev
|
|
secrets: inherit
|
|
```
|
|
|
|
The workflow checks out the consumer repo + the Nova platform repo, runs
|
|
`scripts/run_platform.sh`, and posts deploy outputs as a PR comment +
|
|
to SSM Parameter Store. |