tiketit ja featuret vaihe 1
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# Ticket 0003: `push-reports.sh`
|
||||
|
||||
**Vaihe:** 3/12
|
||||
**Status:** pending
|
||||
**Feature branch:** `feature/0003-push-reports-sh`
|
||||
**TDD required:** Yes
|
||||
**Feature file required:** Yes
|
||||
|
||||
**Required context:**
|
||||
- `docs/test-plan/tdd-guide.md`
|
||||
- `tests/features/0003-push-reports.feature`
|
||||
- Skills: `tdd`, `implementation`, `clean-code`, `bash-script`
|
||||
|
||||
---
|
||||
|
||||
## TDD — Red-Green-Refactor
|
||||
|
||||
### Red
|
||||
Kirjoita `tests/push-reports.bats` mock-MinIO:a vasten:
|
||||
- `mc cp --recursive` kopioi oikeaan polkuun
|
||||
- URL-tulostus: `{MINIO_BASE}/{repo}/{commit_short}/{report_type}/index.html`
|
||||
- Raporttityypit: `cucumber`, `jacoco`, `junit`, `site`
|
||||
- `index_title`-parametri välittyy oikein
|
||||
- Lähdehakemistoa ei ole → exit 1
|
||||
|
||||
```bash
|
||||
bats tests/push-reports.bats
|
||||
# FAIL
|
||||
```
|
||||
|
||||
### Green
|
||||
`scripts/push-reports.sh` — mc cp + URL-tulostus + indeksipäivitys (`report-service/generate-index.sh`).
|
||||
|
||||
```bash
|
||||
bats tests/push-reports.bats
|
||||
# PASS
|
||||
```
|
||||
|
||||
### Refactor
|
||||
Poista duplikaatio, varmista mc-alias-konfigurointi.
|
||||
|
||||
## DoD
|
||||
- [ ] Cucumber: `@ticket-0003 and @mock` → kaikki skenaariot GREEN
|
||||
- [ ] `tests/push-reports.bats` — kaikki testit läpi
|
||||
- [ ] Raportit kopioituvat oikeaan MinIO-polkuun
|
||||
- [ ] URL-tulostus deterministinen
|
||||
- [ ] Indeksisivut päivittyvät (`report-service/generate-index.sh`)
|
||||
|
||||
---
|
||||
|
||||
## Toiminto
|
||||
|
||||
Puskaa testiraporttihakemiston MinIO:hon ja päivittää indeksisivut. Palauttaa URL:n, joka syötetään `report-status.sh`:lle commit-statusviestin `url`-kenttään.
|
||||
|
||||
## Rajapinta
|
||||
|
||||
```bash
|
||||
push-reports.sh <report_type> <source_dir> [index_title]
|
||||
```
|
||||
|
||||
| Parametri | Pakollinen | Kuvaus |
|
||||
|-----------|------------|--------|
|
||||
| `report_type` | Kyllä | `cucumber`, `jacoco`, `junit`, `site` |
|
||||
| `source_dir` | Kyllä | Paikallinen hakemisto |
|
||||
| `index_title` | Ei | Näkyvä nimi indeksisivulla |
|
||||
|
||||
## Toiminta
|
||||
|
||||
1. `mc cp --recursive {source_dir} minio/reports/{repo}/{commit_short}/{report_type}/`
|
||||
2. Päivitä `/reports/{repo}/{commit_short}/index.html` — lisää linkki tähän raporttiin
|
||||
3. Päivitä `/reports/{repo}/index.html` — varmista että build on listalla
|
||||
4. Tulosta URL: `{MINIO_BASE_URL}/{repo}/{commit_short}/{report_type}/index.html`
|
||||
|
||||
## URL-rakenne
|
||||
|
||||
```
|
||||
{MINIO_BASE}/{repo_slug}/{commit_short}/{report_type}/index.html
|
||||
```
|
||||
|
||||
## Ympäristömuuttujat
|
||||
|
||||
- `MINIO_BASE_URL` — Org variable
|
||||
- `MINIO_ACCESS_KEY` — Org secret (alias: `mc`)
|
||||
- `MINIO_SECRET_KEY` — Org secret (alias: `mc`)
|
||||
- `GITHUB_REPOSITORY` — Automaattinen
|
||||
- `GITHUB_SHA` — Automaattinen (8 merkkiä)
|
||||
|
||||
## Verifiointi
|
||||
|
||||
```bash
|
||||
bash scripts/push-reports.sh cucumber target/cucumber-report "Cucumber Reports"
|
||||
# → https://reports.example.com/temperature-store/abc12345/cucumber/overview-features.html
|
||||
```
|
||||
|
||||
Tarkista:
|
||||
- MinIO-bucketissa raportit oikeassa polussa
|
||||
- `/reports/temperature-store/abc12345/index.html` sisältää linkin
|
||||
- `/reports/temperature-store/index.html` sisältää buildin
|
||||
|
||||
## Viitteet
|
||||
|
||||
- `docs/shared-scripts.md` — Rajapinnan määrittely
|
||||
- `docs/report-hosting.md` — MinIO-konfiguraatio ja URL-rakenne
|
||||
- `docs/design-rationale.md` — Periaate 5: Raportit ovat selailtavia URL:n takana
|
||||
Reference in New Issue
Block a user