Releases β
Een nieuwe versie van dcr-components en cds-tokens publiceren
Een release loopt volledig via Azure DevOps: je start de release, reviewt de release-PR en merget die. Je versioneert of publiceert nooit lokaal. Deze pagina is de enige bron voor het releaseproces; andere documentatie verwijst hiernaar.
1. Dagelijks werk: de PR-titel telt β
- Werk op een branch en commit zoals je wil. WIP-commits zijn prima.
- PR's naar
developworden gesquasht: de PR-titel wordt de commit op develop (Azure zet erMerged PR 123:voor). Die commit bepaalt de volgende versie en de regel in de changelog. De link naar de PR komt automatisch in de changelog. - De PR-titel moet daarom een conventional commit zijn:
type(scope): beschrijving, bv.fix(dcr-components): {dcr-button} herstel de focus-ring. Een check in de PR-build (commitlint:tools/release/check-pr-title.mjs, config incommitlint.config.mjs) weigert andere titels en legt uit waarom.
De afspraken voor scope, entiteit en beschrijving staan in Conventional Commits.
Type en versie β
| Type | Versie | Changelog |
|---|---|---|
feat | minor | ja |
fix, perf | patch | ja |
style (visuele wijzigingen) | patch | ja |
docs, refactor | geen release | ja |
test, build, ci | geen release | nee |
chore | geen release | nee |
! na de scope, bv. feat(dcr-components)!: β¦ | major (breaking change) | ja |
docs en refactor starten zelf geen release, maar verschijnen wel in de changelog van de volgende release.
2. Een release maken β
Een release maak je wanneer het team dat wil, bv. als een consumer een wijziging nodig heeft of op het einde van de sprint. Start ze op een van deze manieren:
- Terminal:
npm run releasevanuit de root van de repo. Nodig: de Azure CLI met deazure-devops-extensie, eenmalig aangemeld metaz login. - Azure DevOps: Pipelines β
die-core-releaseβ Run pipeline, branchdevelop, Versieauto. - die-launcher: Release of Release (dry-run) in het β―-menu van DIE CORE Β· COMPONENTS.
Opties voor npm run release -- <optie>:
| Optie | Effect |
|---|---|
--dry-run | toont de versies en de changelog, maakt geen PR |
--version=major, minor, patch, premajor, β¦, 1.2.3 | forceert een versie |
--preid=beta | prerelease, bv. 1.3.0-beta.0 onder npm dist-tag beta |
--no-open | opent de release-PR niet in de browser |
--work-item=12345 | koppelt een work item aan de release-PR (policy op develop) |
3. Wat er gebeurt β
- Release-PR voorbereiden (
azure-pipelines/release.yml,tools/release/prepare.mjs)- nx release bepaalt per lib de nieuwe versie uit de conventional commits sinds de laatste git-tag van die lib (
{project}/v{version}). - Alleen
dcr-componentsencds-tokensworden gereleased, elk met een eigen versie. Een lib zonder relevante wijzigingen krijgt geen release. - De pipeline schrijft
package.json,package-lock.jsonenCHANGELOG.mden opent een release-PR met als titelchore(release): publish β¦.
- nx release bepaalt per lib de nieuwe versie uit de conventional commits sinds de laatste git-tag van die lib (
- Reviewen en mergen: kijk de changelog na in de release-PR, pas hem daar aan indien nodig en klik Complete.
- Publiceren (
tools/release/publish.mjs): de merge start de publish. Elke versie die nog niet op de feed staat, wordt gepubliceerd: een stabiele versie onderlatest, een prerelease onder zijn preid als dist-tag. Pas na een geslaagde publish wordt getagd, zodat tags en feed altijd overeenkomen. - Deployen: op develop bouwt een stabiele
dcr-components-release ook Storybook en de docs-site. Classic Release 47 deployt ze naar docs.kabas.be/storybook en docs.kabas.be/design. De docs deployen ook wanneerlibs/cds-docswijzigt op develop.
4. Meldingen in Slack β
De pipeline post twee berichten:
- Release-PR klaar: de versies, de belangrijkste changelog-regels en een link naar de PR om te reviewen.
- Gepubliceerd: per pakket de versie, de dist-tag en de changelog-regels zoals ze gemerged zijn (met de aanpassingen uit de release-PR), en een link naar de volledige changelog. Bij een stabiele
dcr-components-release ook de links naar Storybook en docs.
Elk bericht gaat naar een Slack Incoming Webhook in een geheime pipeline-variabele van die-core-release, elk naar zijn eigen kanaal:
| Bericht | Variabele | Niet gezet |
|---|---|---|
| Release-PR klaar | SLACK_RELEASE_PR_WEBHOOK_URL | naar SLACK_WEBHOOK_URL |
| Gepubliceerd | SLACK_RELEASED_WEBHOOK_URL | naar SLACK_WEBHOOK_URL |
Zonder webhook wordt er niets gepost; een mislukt bericht laat de release nooit falen.
5. Regels β
- Stabiele versies komen enkel van
develop. Elke andere branch kan alleen prereleases maken. - Een nieuwe release wordt geweigerd zolang de vorige gemergde release-PR nog niet gepubliceerd en getagd is.
cds-tokensis een peerDependency vandcr-components. Krijgtcds-tokenseen nieuwe versie, dan volgt de peer-range indcr-componentsautomatisch en krijgtdcr-componentseen patch.- Pas een
CHANGELOG.mdnooit aan buiten de release-PR.CHANGELOG.md-bestanden worden niet door prettier geformatteerd. - Niet meer gebruiken:
release/*-branches, lokaal versioneren of publiceren (nx release,nx release publish) entools/src/release-branch.sh.