Ik wil CI/CD aan mijn project toevoegen
Spexso voorziet een Flexso-standaard pipeline voor 3-tier deploy (DEV → TST → PRD) naar SAP BTP Cloud Foundry, met tag-gebaseerde releases: mergen naar main deployt continu naar DEV; een release is een vX.Y.Z-tag die automatisch naar TST gaat en na een manuele gate naar PRD.
Voorwaarde
Je project moet een mta.yaml in de repo-root hebben (met een top-level version:-veld). Voor CAP-projecten:
cds add mtaVoor andere projecten: maak mta.yaml handmatig aan. Spexso genereert dit bestand niet.
Stappen
Voer het commando uit in een spexso-bootstrapped project:
/spexso-cicd-initOf zeg "ja" op de CI/CD-vraag tijdens
/spexso-setup.Wat er gebeurt:
- Spexso leest de
ID:uitmta.yaml(wordt de MTAR-naam in de pipeline) - Genereert
.gitlab-ci.ymlmet Flexso-standaarddefaults - Installeert
commit-and-tag-versionals devDependency - Kopieert
.versionrc.json+scripts/mta-version-updater.js+scripts/manifest-version-updater.js(en detecteert het pad naar je UI5manifest.json) - Schrijft
CICD-SETUP.mdmet je resterende stappen - Maakt één commit:
chore: add Flexso CI/CD template (spexso)
- Spexso leest de
Eén regel aanpassen in het gegenereerde
.gitlab-ci.yml:yamlCF_SPACE_DEV: "TODO-set-your-space" # ← vervang door je echte space CF_SPACE_TST: "TODO-set-your-space" CF_SPACE_PRD: "TODO-set-your-space"Commit die aanpassing zelf.
Verifieer met je platform admin dat de group-level variabelen
CF_DEPLOY_USER,CF_DEPLOY_PWDenCF_ORIGINzijn ingesteld op group-niveau in GitLab.Maak de
RELEASE_TOKENaan: project access token (scopewrite_repository, rol Maintainer) als masked + protected CI/CD-variabele. Zonder dit token faalt deprepare-release-job.Bescherm de release-tags: Settings → Repository → Protected tags → patroon
v*. Dit is een harde vereiste: protected variabelen (CF-credentials,RELEASE_TOKEN) worden enkel geïnjecteerd op protected refs — zonder deze stap faalt de tag-pipeline opcf login.Push → de eerste pipeline draait. Bij een open MR naar
main: test + build (geen deploy — parallelle MR's zouden elkaar in DEV overschrijven). Na merge: test + build + deploy-dev + (manuele) prepare-release.
Een release uitbrengen
- Zorg dat
maingroen staat en datmta_ext/tst.mtaext/mta_ext/prd.mtaextde juiste feature-flag-config bevatten. - Trigger de manuele prepare-release-job op de laatste
main-pipeline. Zelf de versie kiezen? Geef de variabeleRELEASE_AS(bv.1.4.0) mee; anders bepalen de Conventional Commits de bump. - De job bumpt de versie in
package.json,mta.yamlenmanifest.json, actualiseertCHANGELOG.md, commit en pusht tagvX.Y.Z. - De tag-pipeline maakt de GitLab Release, deployt automatisch naar TST en wacht aan de PRD-gate.
- Na QA-sign-off op TST: klik deploy-prd. De Environments-pagina toont nu de nieuwe versie op productie.
Nooit handmatig taggen en nooit zelf de versie in de drie bestanden of CHANGELOG.md aanpassen — dat doet commit-and-tag-version.
Let op:
deploy-prdis non-blocking (allow_failure: true) — een gefaalde PRD-deploy toont de pipeline nog steeds als "passed". Check de job zelf of de Environments-pagina.
Wat al gevuld is
Spexso voorziet defaults die voor 80% van de Flexso BTP-projecten kloppen:
- Image:
$CI_REGISTRY/flexso/flexso/flexso-cf-gitlab:latest - CF API:
https://api.cf.eu10-004.hana.ondemand.comvoor alle envs - CF orgs:
flexso-extensions-ca-{dev,tst,prd} - Auto-cancel: nieuwe MR-pushes annuleren oudere pipelines op dezelfde MR
Wijken jouw waardes af? Edit .gitlab-ci.yml direct na generatie.
Feature flags & per-env config (mtaext)
Config die per omgeving verschilt — inclusief feature flags — zit in MTA extension descriptors:
mta_ext/dev.mtaextmta_ext/tst.mtaextmta_ext/prd.mtaext
De pipeline detecteert ze automatisch en voegt -e mta_ext/<env>.mtaext toe aan cf deploy. Features die een release mogelijk niet halen gaan dark mee naar main (flag uit in prd.mtaext); late selectie is een mtaext-wijziging, geen git-operatie. Ruim flags op zodra de feature een release of twee stabiel live staat.
Tips
- Bestaand
.gitlab-ci.yml? Spexso vraagt of het mag back-uppen naar.gitlab-ci.yml.spexso-backupvoor het overschrijft. - Rollback van een slechte PRD-deploy: open de tag-pipeline van de laatst goede versie en herstart de
deploy-prd-job (artefact-retentie 30 dagen). Ouder? Start een nieuwe pipeline op de tag as ref. - Hotfix nodig op een uitgeleverde versie? Zie de hotfix-procedure in het gegenereerde
CICD-SETUP.md(bescherm eenmalighotfix/*-branches, branch vanaf de tag,prepare-releaseop de hotfix-branch, fix cherry-picken naarmain).