-
Notifications
You must be signed in to change notification settings - Fork 0
Continuous Integration opzetten #8
Comments
Github Actions fungeert als een buildserver, vergelijkbaar met Jenkins. We kunnen zelf triggers kiezen, bijvoorbeeld een push op master of het ontstaan van een nieuwe tag, waarbij de voorgedefinieerde jobs moeten worden uitgevoerd. Er zijn integraties beschikbaar voor docker en azure. Een combinatie hiervan kan ons een volledige CI/CD-straat leveren. |
Binnen de repo's maken we gebruik van protected master branches om controle te houden over welke code gemerged wordt. Dat leent zich daardoor het beste als trigger om te gaan bouwen. De master branch is daardoor de meest recente release code. Stappen
|
In Jenkins hadden we een filter op de PRs die wel en niet door de build server zelf getriggered werden.
Zouden we dat hier ook kunnen toepassen? |
Niet 1 op 1. Standaard gebruikt Github Actions een aparte GH Actions user, welke updates op de repo kan doen. Het probleem is echter dat deze, net als reguliere gebruikers, niet op protected branches kan pushen. Om toch naar de master branch te kunnen pushen, zodat geen extra handmatig PR nodig is, is een workaround nodig. Enige optie is hier om een Personal Access Token te gebruiken van een administrator, gezien administrators wél naar protected branches kunnen pushen. Dan zijn we echter de 'triggerer', GH Actions user dus, kwijt. Genoemde scenario kunnen we alsnog bereiken aan de hand van commit messages en daar de acties op baseren. De GH Actions workflow kunnen we dan de repo laten updaten met bijv. de message "Release vX.X.X". Deze commit kan dan een deploy triggeren. Nadeel is dat de developers niet dit formaat als commit message kunnen gebruiken. |
De workflow komt er dan ongeveer als volgt uit te zien:
|
Voor de front-end moeten eerst de closed-source afhankelijkheden vervangen worden. Zie daarvoor kadaster-labs/sensrnet-registry-frontend#104 |
Voor de continue deployments heb ik een apart issue aangemaakt (#37) |
Een CI workflow voor linting, testen en builden is nu actief op PRs en de main branch van de Node.js projecten: frontend, viewer, backend en sync. De CI geeft nu een melding als 1 van deze stappen faalt. Een verdere workflow voor de het maken van Releases is actief op alle repo's. Hiermee kan handmatig een release worden gedaan, waarbij gekozen kan worden voor release volgens semver nummering: een patch, minor of major release. |
Momenteel worden de componenten handmatig gereleased, gebouwd, gepushed naar registry en gedeployed. Dit moet geautomatiseerd worden aan de hand van Github Actions. Toevoegen van CI voor linting, testing en releasing.
Edit 2021-05-20:
De private dependencies van registry-frontend en central-viewer zijn inmiddels vervangen met open source alternatieven (kadaster-labs/sensrnet-registry-frontend#156 en kadaster-labs/sensrnet-central-viewer#23).
The text was updated successfully, but these errors were encountered: