db1342685c
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 24s
unit-tests Link to Bats reports
CI Feature / Bats tests (push) Successful in 1m46s
acc-tests Link to Cucumber reports
CI Feature / Cucumber tests (push) Successful in 1m8s
CI Feature / Report Summary (push) Successful in 5s
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.
|