118 lines
3.2 KiB
Markdown
118 lines
3.2 KiB
Markdown
# Ticket 0008: `test.yml` (reusable workflow)
|
|
|
|
**Vaihe:** 8/12
|
|
**Status:** pending
|
|
**Feature branch:** `feature/0008-test-yml`
|
|
**TDD required:** Yes
|
|
**Feature file required:** Yes
|
|
|
|
**Required context:**
|
|
- `docs/test-plan/tdd-guide.md`
|
|
- `tests/features/0008-test-flow.feature`
|
|
- Skills: `tdd`, `implementation`, `clean-code`
|
|
|
|
---
|
|
|
|
## TDD — Red-Green-Refactor + Dogfood
|
|
|
|
### Red
|
|
Validointitesti (`tests/workflows.bats`):
|
|
- Kaikki `workflow_dispatch`-inputit: `environment`, `version`, `tags`, `root_commit`, `root_repo`, `deploy_commit`, `deploy_repo`
|
|
- `version-check` käyttää `check-version.sh` (Ticket 0011)
|
|
- Cross-repo-raportointi: 3 suuntaa (test → test-repo, test → root, test → deploy)
|
|
|
|
```bash
|
|
bats tests/workflows.bats
|
|
# FAIL
|
|
```
|
|
|
|
### Green
|
|
Toteuta `gitea/workflows/test.yml`.
|
|
|
|
```bash
|
|
bats tests/workflows.bats
|
|
# PASS
|
|
```
|
|
|
|
### Dogfood
|
|
Lisää kutsu `gitea/workflows/ci.yml`:stä.
|
|
|
|
## DoD
|
|
- [ ] Cucumber: `@ticket-0008 and @mock` → kaikki skenaariot GREEN
|
|
- [ ] `tests/workflows.bats` — workflow-validointi läpi
|
|
- [ ] Version check -steppi kytketty (`check-version.sh`)
|
|
- [ ] Cross-repo-statusraportointi 3 suuntaan
|
|
- [ ] Dogfood: kirjaston CI käyttää tätä test flow'ssa
|
|
|
|
---
|
|
|
|
## Toiminto
|
|
|
|
Test flow -steppi. Dispatchataan deploy-workflow'n jälkeen. Ajaa testit, puskaa raportit MinIO:hon ja raportoi statuksen kolmeen committiin.
|
|
|
|
## Trigger
|
|
|
|
`workflow_dispatch` (dispatchataan `ci-master.yml`:stä)
|
|
|
|
## Inputs (dispatch-parametrit)
|
|
|
|
| Parametri | Kuvaus |
|
|
|-----------|--------|
|
|
| `environment` | Testiympäristö |
|
|
| `version` | Testattava konttiversio |
|
|
| `tags` | Cucumber-tagit |
|
|
| `versionApiUrl` | URL version tarkistukseen |
|
|
| `versionCheckScript` | Polku version check -skriptiin |
|
|
| `root_commit` | Mikropalvelun commit |
|
|
| `root_repo` | Mikropalvelun repo |
|
|
| `deploy_commit` | Helm-repon commit |
|
|
| `deploy_repo` | Helm-repo |
|
|
|
|
## Steppit
|
|
|
|
```
|
|
start → version-check → run-tests → push-reports → report-cross-repo → end
|
|
```
|
|
|
|
| Steppi | Toiminto |
|
|
|--------|----------|
|
|
| `version-check` | `check-version.sh` — varmista oikea versio ympäristössä |
|
|
| `run-tests` | Projektin oma testiajo |
|
|
| `push-reports` | `push-reports.sh` — raportit MinIO:hon |
|
|
| `report-cross-repo` | `report-status.sh` — kolmeen committiin |
|
|
|
|
## Cross-repo-raportointi (3 suuntaa)
|
|
|
|
```bash
|
|
# 1. Testi-repon oma commit
|
|
report-status.sh success "Tests OK" "$REPORT_URL" "test-{name}" "$GITHUB_SHA" "$GITHUB_REPOSITORY"
|
|
|
|
# 2. Mikropalvelun commit (root)
|
|
report-status.sh success "Tests OK ({name})" "$REPORT_URL" "test-{name}" "$ROOT_COMMIT" "$ROOT_REPO"
|
|
|
|
# 3. Helm-repon commit
|
|
report-status.sh success "tested v{version}" "$REPORT_URL" "tested-{name}" "$DEPLOY_COMMIT" "$DEPLOY_REPO"
|
|
```
|
|
|
|
## Concurrency
|
|
|
|
```yaml
|
|
concurrency:
|
|
group: test-${{ inputs.environment }}
|
|
cancel-in-progress: false
|
|
```
|
|
|
|
## Verifiointi
|
|
|
|
Dispatchaa mock-inputeilla:
|
|
1. `version-check` epäonnistuu → exit 1, status = "Version mismatch"
|
|
2. Testit ajetaan onnistuneesti
|
|
3. Raportit MinIO:ssa, URL:t oikein
|
|
4. Statusviestit kaikissa kolmessa commitissa
|
|
|
|
## Viitteet
|
|
|
|
- `docs/workflows.md` — `test.yml` — Test flow -steppi
|
|
- `docs/config-model.md` — Test flow -konfiguraatio, version check
|
|
- `docs/requirements.md` — UC6: Testi-insinööri näkee mitä konttia testattiin
|