Skip to content

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:

bash
cds add mta

Voor andere projecten: maak mta.yaml handmatig aan. Spexso genereert dit bestand niet.

Stappen ​

  1. Voer het commando uit in een spexso-bootstrapped project:

    /spexso-cicd-init

    Of zeg "ja" op de CI/CD-vraag tijdens /spexso-setup.

  2. Wat er gebeurt:

    • Spexso leest de ID: uit mta.yaml (wordt de MTAR-naam in de pipeline)
    • Genereert .gitlab-ci.yml met Flexso-standaarddefaults
    • Installeert commit-and-tag-version als devDependency
    • Kopieert .versionrc.json + scripts/mta-version-updater.js + scripts/manifest-version-updater.js (en detecteert het pad naar je UI5 manifest.json)
    • Schrijft CICD-SETUP.md met je resterende stappen
    • Maakt één commit: chore: add Flexso CI/CD template (spexso)
  3. Eén regel aanpassen in het gegenereerde .gitlab-ci.yml:

    yaml
    CF_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.

  4. Verifieer met je platform admin dat de group-level variabelen CF_DEPLOY_USER, CF_DEPLOY_PWD en CF_ORIGIN zijn ingesteld op group-niveau in GitLab.

  5. Maak de RELEASE_TOKEN aan: project access token (scope write_repository, rol Maintainer) als masked + protected CI/CD-variabele. Zonder dit token faalt de prepare-release-job.

  6. 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 op cf login.

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

  1. Zorg dat main groen staat en dat mta_ext/tst.mtaext / mta_ext/prd.mtaext de juiste feature-flag-config bevatten.
  2. Trigger de manuele prepare-release-job op de laatste main-pipeline. Zelf de versie kiezen? Geef de variabele RELEASE_AS (bv. 1.4.0) mee; anders bepalen de Conventional Commits de bump.
  3. De job bumpt de versie in package.json, mta.yaml en manifest.json, actualiseert CHANGELOG.md, commit en pusht tag vX.Y.Z.
  4. De tag-pipeline maakt de GitLab Release, deployt automatisch naar TST en wacht aan de PRD-gate.
  5. 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-prd is 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.com voor 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.mtaext
  • mta_ext/tst.mtaext
  • mta_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-backup voor 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 eenmalig hotfix/*-branches, branch vanaf de tag, prepare-release op de hotfix-branch, fix cherry-picken naar main).