ffc0734b65
CI Main / Check existing artifact (push) Successful in 12s
unit-tests Link to Bats reports
CI Main / Bats tests (push) Successful in 1m44s
acc-tests Link to Cucumber reports
CI Main / Cucumber tests (push) Successful in 1m31s
CI Main / Build & Push Docker (push) Successful in 54s
CI Main / Report Summary (push) Successful in 13s
CI Main / Move provider version tag (push) Successful in 13s
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 19s
ci-docker-build-push Docker build & push 0.2.2 OK
Co-authored-by: moilanik <niko.moilanen@tietoevry.com> Reviewed-on: #13
54 lines
2.0 KiB
Markdown
54 lines
2.0 KiB
Markdown
# 9. Breaking changes kielletty
|
|
|
|
## Päätös
|
|
|
|
Providerin `v1`-tagin osoittamaa rajapintaa ei koskaan rikota.
|
|
Consumerin `uses:`-kutsut säilyvät yhteensopivina — uusi versiotagi
|
|
(`v2`, `v3`) luodaan VAIN jos taaksepäin yhteensopimaton muutos on
|
|
pakottava. Käytännössä: `v1` on pysyvä, ja sitä ylläpidetään
|
|
eteenpäin.
|
|
|
|
## Rajapinnan määritelmä
|
|
|
|
Providerin rajapinta = `config-provider.yml` ja `check-version.yml`
|
|
workflow_call-inputit ja -outputit:
|
|
|
|
- Inputtien nimet, tyypit ja required-arvot eivät muutu
|
|
- Outputtien nimet eivät katoa
|
|
- Secret-nimet eivät muutu
|
|
- Workflow-tiedoston nimi ja polku eivät muutu
|
|
|
|
Sisäinen toteutus (scriptit, checkout-logiikka, build-vaiheet) voi
|
|
muuttua vapaasti — consumer ei ole niistä riippuvainen.
|
|
|
|
## Versiotagin siirto
|
|
|
|
Tagi `v1` siirretään automaattisesti uusimpaan onnistuneeseen
|
|
main-commitin CI-ajoon (`tag-maintenance.yml`). Tagin nimi luetaan
|
|
tiedostosta `CURRENT_PROVIDER_VERSION`.
|
|
|
|
Jos breaking change joskus tulee pakottavaksi:
|
|
1. Päivitä `CURRENT_PROVIDER_VERSION` → `v2`
|
|
2. Luo uusi `v2`-tagi manuaalisesti (osoittaa uuteen rajapintaan)
|
|
3. `tag-maintenance.yml` alkaa ylläpitää `v2`:ta eteenpäin
|
|
4. `v1`-tagia **ei poisteta** — se jää osoittamaan viimeistä
|
|
v1-yhteensopivaa committia. `v1`:tä käyttävät consumerit
|
|
jatkavat toimintaansa ilman muutoksia.
|
|
5. Uudet consumerit ottavat käyttöön `@v2`:n.
|
|
|
|
Aktiivisesti ylläpidetään vain yhtä tagia (`CURRENT_PROVIDER_VERSION`).
|
|
Vanhat tagit säilyvät paikoillaan taaksepäin yhteensopivuutta varten.
|
|
|
|
## Perustelu
|
|
|
|
Yhden aktiivisen tagin ylläpito on yksinkertaisempaa kuin usean
|
|
rinnakkaisen version aktiivinen hallinta. Homelab-ympäristössä
|
|
consumerit ovat saman ylläpitäjän hallinnassa — eri tiimien
|
|
rinnakkaisia aktiiviversioita ei tarvita.
|
|
|
|
Breaking changen sattuessa vanha tagi säilyy — vanhat consumerit
|
|
eivät hajoa. Uusi tagi otetaan käyttöön uusissa consumereissa.
|
|
|
|
Breaking changen kielto pakottaa suunnittelemaan rajapinnat
|
|
huolellisesti etukäteen.
|