Skip to content

CI/CD met de HBO-ICT.Cloud

CI/CD is een afkorting voor Continuous Integration en Continuous Deployment:

  • Integration gaat dan om het (automatisch) bouwen (lees: compileren) en testen van de software. Dit resulteert in een artifact.
  • Deployment gaat dan om het (automatisch) uitrollen van bovenstaande artifact naar een externe omgeving (bijvoorbeeld de HBO-ICT.Cloud).

Deze stappen kun je uiteraard met de hand doen, maar dat wordt in de softwarewereld wel als bad practice beschouwd, omdat dit zeer foutgevoelig is (we blijven mensen). Daarnaast: waarom ergens tijd aan besteden als het ook automatisch kan?

Je hebt aan het begin van dit project een repository gekregen, waar ook een HBO-ICT.Cloud pagina achter zit. Op deze omgeving kun je zowel de frontend als je backend uitrollen om je spel op een andere omgeving dan je eigen computer te kunnen spelen.

.env bestanden

Indien je backend applicatie afhankelijk is van gegevens in je .env, moet je deze éénmalig handmatig bij je backend application uploaden met de juiste gegevens. Dit is ongeacht welke hieronder beschreven methode van uitrollen je kiest. Anders kan je bijvoorbeeld niet verbinden met je database!

Handmatig uitrollen naar de HBO-ICT.Cloud

  1. Zorg ervoor dat je met je lokale repository op de juiste branch zit die je wilt uitrollen, bijvoorbeeld main.
  2. Voer npm install uit om er zeker van te zijn dat alles up-to-date is.
  3. Voer npm run build uit. Het kan zijn dat je nu “compile errors” krijgt. Deze zul je eerst moeten oplossen voor je nog een keer dit commando probeert. Als bovenstaande stap succesvol is, heb je nu een dist-map in de root van je repository, met daarin een web- en api-map.
  4. Gebruik een programma om verbinding te maken met de SFTP omgeving van je HBO-ICT.Cloud project.
  5. Nadat je verbonden bent, zul je twee mappen zien: dev en live. Deze mappen staan respectievelijk voor de Development en Live omgeving waar je je applicatie kunt uitrollen, kies er één.

    • De vuistregel is dat live altijd moet werken, dev mag ten alle tijden kapot gaan.
    • Aan het eind van een sprint staat er altijd een werkende versie op live.
  6. In de map van de gekozen omgeving vind je weer twee mappen: wwwroot en app.

    • In de wwwroot-map zet je alle bestanden die je in de dist/web-map hebt staan. Dus niet de web-map zelf, maar de inhoud!
    • In de app-map zet je alle bestanden die je in de dist/api-map hebt staan. Dus niet de api-map zelf, maar de inhoud!
  7. Ga naar je HBO-ICT.Cloud omgeving en herstart de omgeving die je net hebt geüpload via het Control Panel.

    • Start de applicatie niet op, dan heb je vast iets verkeerds gedaan. Kun je geen log bekijken, gebruik dan de Debug-modus en download de log.txt via SFTP uit de /dev/api- of /live/api-map.
    • Start de applicatie wel op, maar doet deze niet wat je verwacht, dan kun je als het goed is wel de volledige log in de browser bekijken.

Automatisch uitrollen naar de HBO-ICT.Cloud

Je kunt ook bij elke commit geautomatiseerd een release doen.

Stel de de volgende CI/CD variable in op je GitLab-project:

  • DEPLOY_HIC (Visibility: Visible, Flags: Geen) op true

Je kunt eventueel deze variabele ook in de .gitlab-ci.yml van je startproject aanpassen, maar bovenstaande methode is mooier.

Daarnaast moet ook nog de volgende CI/CD variables op je GitLab-project instellen:

  • HIC_API_KEY (Visibility: Masked, Flags: Geen)

    De API key van je HBO-ICT.Cloud project.

  • HIC_API_URL (Visibility: Visible, Flags: Geen)

    De URL naar de Docker API: https://hbo-ict.cloud/api/Docker/[ProjectId]

    Hierbij moet je [ProjectId] vervangen met de ID die je in de URL van je HBO-ICT.Cloud project ziet: https://hbo-ict.cloud/Project/[ProjectId]

  • HIC_SFTP_HOST (Visibility: Visible, Flags: Geen)

    De URL van de SFTP server, deze is altijd sftp://sftp.hbo-ict.cloud:3322.

  • HIC_SFTP_USERNAME (Visibility: Visible, Flags: Geen)

    De SFTP Username van je HBO-ICT.Cloud project.

  • HIC_SFTP_PASSWORD (Visibility: Masked, Flags: Geen)

    De SFTP Password van je HBO-ICT.Cloud project.

Handmatig de automatische release starten

Zelfs zonder DEPLOY_HIC op true te zetten kun je altijd nog handmatig de automatische release via Gitlab starten. Je kunt dan ook HIC_ENVIRONMENT op live zetten als je wilt dat je release naar de live-omgeving gaat, in plaats van de standaard dev-omgeving.

Hoe dan ook is bovenstaande CI/CD variables instellen handig, gezien het aanzienlijk tijd bespaard in vergelijking met de volledig handmatige methode!