Files
gitea-ci-library/docs/adr/0009-breaking-changes-forbidden.md
T
moilanik 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
tägitys käyttöön consumer viittauksessa provider tiedostoihin
2026-06-16 06:01:29 +03:00

2.0 KiB

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_VERSIONv2
  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.