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¶
- Zorg ervoor dat je met je lokale repository op de juiste branch zit die je wilt uitrollen, bijvoorbeeld
main
. - Voer
npm install
uit om er zeker van te zijn dat alles up-to-date is. - 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 eendist
-map in de root van je repository, met daarin eenweb
- enapi
-map. - Gebruik een programma om verbinding te maken met de SFTP omgeving van je HBO-ICT.Cloud project.
-
Nadat je verbonden bent, zul je twee mappen zien:
dev
enlive
. 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
.
- De vuistregel is dat
-
In de map van de gekozen omgeving vind je weer twee mappen:
wwwroot
enapp
.- In de
wwwroot
-map zet je alle bestanden die je in dedist/web
-map hebt staan. Dus niet deweb
-map zelf, maar de inhoud! - In de
app
-map zet je alle bestanden die je in dedist/api
-map hebt staan. Dus niet deapi
-map zelf, maar de inhoud!
- In de
-
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.
- 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
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) optrue
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!