2.1 KiB
2.1 KiB
Ticket 0004: tag-commit.sh
Vaihe: 4/12
Status: pending
Feature branch: feature/0004-tag-commit-sh
TDD required: Yes
Feature file required: Yes
Required context:
docs/test-plan/tdd-guide.mdtests/features/0004-tag-commit.feature- Skills:
tdd,implementation,clean-code,bash-script
TDD — Red-Green-Refactor
Red
Kirjoita tests/tag-commit.bats mock-Gitea API:a vasten:
tag-commit.sh "1.2.3.42"→ POST/api/v1/repos/{repo}/tagspalauttaa 201- Tagi-muoto sisältää
$GITHUB_RUN_NUMBER - API palauttaa 409 (tag jo olemassa) → exit 1
- Tyhjä versio → exit 1
bats tests/tag-commit.bats
# FAIL
Green
scripts/tag-commit.sh — curl POST + virheenkäsittely.
bats tests/tag-commit.bats
# PASS
Refactor
Varmista tagin oikeellisuus, virheilmoitukset.
DoD
- Cucumber:
@ticket-0004 and @mock→ kaikki skenaariot GREEN tests/tag-commit.bats— kaikki testit läpi- POST
/api/v1/repos/{repo}/tagsonnistuu - Virhetilanteet käsitellään (409, tyhjä versio)
Toiminto
Tagittaa commitin versiolla Gitea REST API:n kautta. Kutsutaan ci-master.yml:n docker-pushin onnistuttua. Tämän jälkeen isContainerBuilt() palauttaa true samalle commitille.
Rajapinta
tag-commit.sh <version>
Gitea API -kutsu
POST /api/v1/repos/{owner}/{repo}/tags
Authorization: token {GITEA_TOKEN}
{
"tag_name": "{version}",
"message": "Build #{GITHUB_RUN_NUMBER}",
"target": "{GITHUB_SHA}"
}
Kutsuesimerkki
tag-commit.sh "1.2.3.$GITHUB_RUN_NUMBER"
Ympäristömuuttujat
GITEA_API_URL— Org variableGITEA_TOKEN— Org secretGITHUB_REPOSITORY— AutomaattinenGITHUB_SHA— AutomaattinenGITHUB_RUN_NUMBER— Automaattinen
Verifiointi
bash scripts/tag-commit.sh "1.2.3.42"
→ git tag näyttää tagin commitilla (tai mock-API palauttaa 201)
Viitteet
docs/shared-scripts.md— Rajapinnan määrittelydocs/config-model.md—isContainerBuild()-mekanismidocs/design-rationale.md— Periaate 1: Statusviestit committiin