Skip to content

HBO-ICT.Cloud

In het vorige semester ben je al in aanraking gekomen met de HBO-ICT.Cloud (HIC), in ieder geval om een database aan te kunnen maken.

Voor dit project geeft de HIC jou de mogelijk om je game te hosten. Specifiek is er een plek om zowel de Frontend- als Backend applicatie neer te zetten en op te starten. Hierdoor kan de Product Owner gemakkelijk je game spelen en van feedback voorzien.

Met de LucaStars Game Awards in het achterhoofd, is het belangrijk dat er voor elke Sprint Review een werkende versie op de live-omgeving van je HIC projectpagina staat. Hiernaast heb je ook nog eendev-omgeving waar je testversies kunt neerzetten.

HBO-ICT.Cloud API

In tegenstelling tot het vorige project, werkt de HBO-ICT.Cloud API niet meer. Je moet nu zelf code in de backend applicatie schrijven om dit voor elkaar te krijgen.

@hboictcloud/api

Hoewel je deze package op je backend applicatie kunt installeren, werkt deze niet. Dat is by design!

Wel krijg je van ons al een DatabaseService meegeleverd in je startproject, deze vind je onder /src/api/src/services/DatabaseService.ts. Hiermee kun je tegen een database praten, mocht je dit nodig hebben voor je game. Lees wel even de technische documentatie door en vergeet niet je .env-bestanden aan te passen voordat je deze gaat gebruiken!

Gelimiteerd aantal verbindingen

De HBO-ICT.Cloud geeft elk team slechts tien gelijktijdige verbindingen. Om deze rede maakt de DatabaseService gebruik van connection pooling. Het is daarom belangrijk dat je de release() functie op een verbinding aanroept die niet meer nodig is, ook bij/na het optreden van fouten! Werk dus bij voorkeur met een try/catch/finally constructie.

Daarnaast kun je wel nog e-mails sturen met de HIC, maar ook hier moet je zelf ondersteuning voor toevoegen in je backend applicatie. Je kunt daarvoor haast letterlijk deze code overnemen.

CI/CD

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.

Elke sprint review mag vanaf nu alleen maar plaatsvinden vanaf de HBO-ICT.Cloud, en niet meer vanaf de computer van jou of je teamgenoten.

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