Opleverdocument
- 1. Lokale ontwikkelomgeving opzetten
- 2. Productieomgeving opzetten
- 3. Afhankelijkheden product
- 4. Belangrijke keuzes
Inleiding
Dit document is bedoeld om de applicatie lokaal of op een productieomgeving te configureren. Het document bevat de stappen die nodig zijn om de applicatie te laten draaien op een lokale omgeving, en de stappen die nodig zijn om de applicatie te laten draaien op een productieomgeving. Verder zijn ook de afhankelijkheden van het product en de belangrijke keuzes die gemaakt zijn in dit document opgenomen.
1. Lokale ontwikkelomgeving opzetten
1.1 Pre-requisites
- Docker
- 1Password CLI
- Ngrok
- Database manager (bijv. MySQL Workbench, Azure Data Studio, DataGrip, etc.)
Zorg dat je de 1Password CLI hebt geïnstalleerd en dat je bent ingelogd. Dit is nodig om de geheime waarden uit de 1Password vault te halen.
Zorg ook dat je in Docker een container van MariaDB hebt draaien.
Optioneel, ngrok tunnel
Voor het resetten van de branch in de applicatie wordt er een webhook verstuurd, om deze lokaal ook te ontvangen is het handig om Ngrok te gebruiken. Hiermee kun je een tunnel maken naar je localhost. Dit is niet verplicht, je kan ook de branch handmatig naar null zetten in het bijbehorende project in de database wanneer je de branch van de vertalingen verwijdert hebt.
Installatie
- Clone de repository
- Voer het volgende commando uit in de root van de repository
- appsettings.json secrets genereren
Let op
Zorg dat je de 1Password CLI hebt geïnstalleerd en dat je bent ingelogd.
- local appsettings.json aanmaken
Kopieer appsettings.Local.Example.json naar appsettings.Local.json en vul de gegevens in.
Ngrok main application url
Als je Ngrok gebruikt, zorg dan dat je de URL van Ngrok in de appsettings.Local.json zet.
Anders kun je deze configuratie weghalen.
- Voorbereiding end-to-end tests
- Google Cloud credentials instellen
De cloud credentials kunnen via de command line aangemaakt worden, deze staan ook in de 1Password production vault. klik hier om credentials aan te maken
In de appsettings.Local.json kun je vervolgens het pad naar de credentials instellen.
- Opstarten server
Zorg dat de database in docker aan het draaien is, en dat je de juiste connection strings in de appsettings.Local.json hebt gezet.
- Opstarten client
Success
De sever en de client zouden nu succesvol op moeten starten.
Aanmaken admin account & project
Om een admin account aan te maken, kun je de volgende stappen volgen:
Account aanmaken
- Open de API in je editor naar keuze, en open
Api.Pmp.Nl/Controllers/AdminController.cs - Zet of comment de regel
[ApiExplorerSettings(IgnoreApi = true)]bij deAddFullAsyncmethode uit - Ga naar
https://localhost:3000/swagger - Open de
Admincontroller en deAddFullAsyncmethode - Voer de gegevens in en druk op
Execute - Het account is nu aangemaakt
Project aanmaken
- Open je database manager en maak een connectie met de database
- Voer de volgende query uit:
- Het project is nu aangemaakt, en je kan inloggen met de gebruikte gegevens van de vorige stap op https://localhost:3000/account/login
2. Productieomgeving opzetten
- Ga naar de GitLab omgeving
- Selecteer het project
Project Management Portal - Ga naar
Operate>Environments - Maak de "environment" aan, geef deze een logisch naam (bijvoorbeeld,
production,staging,test,accept, etc.`). Je hoeft alleen de naam in te vullen. - Ga naar
Settings>CI/CD>Variables - Zorg dat de 1Password service account token (
OP_SERVICE_ACCOUNT_TOKEN) bij de nieuwe environment kan, mogelijk dat hiervoor nog een nieuwe vault voor aan gemaakt moet worden. - Zorg dat de variabele
Protected,MaskedenExpandedis. - Zorg dat je in RootNet een project hebt aangemaakt en houdt de juiste variabelen bij de hand.
- Open je code editor en open
gitlab-ci.yml - Maak de variabelen aan voor de omgeving die je bij de hand hebt gehouden van RootNet.
- Maak voor de omgeving een nieuwe
buildendeployjob aan, zorg dat de job alleen uitgevoerd wordt als de branch de bijbehorendebranchvan de omgeving is, en deenvironmentgelijk is aan de naam die je eerder gekozen hebt. - Pas de variabelen in beide jobs aan naar de variabelen die je net hebt aangemaakt.
Success
Wanneer er naar de gekoppelde branch gemerged wordt, zal er een nieuwe build en deploy job aangemaakt worden. De applicatie zal nu draaien in de omgeving die je hebt aangemaakt.
3. Afhankelijkheden product
Het product is afhankelijk van de volgende tools:
- Azure DevOps API
- GitLab API
- 1Password CLI (alleen voor de app settings configuratie)
- Google Cloud Translation API
- Bunny CDN API
4. Belangrijke keuzes
Zie alle technische en functionele keuzes in de use cases onder het technisch en functioneel ontwerp, met toevoeging van de technisch keuzes die in het technisch ontwerp staan.
4.1 Bestandsstructuur vertalingen
De applicatie gebruikt regex om de vertalingsbestanden te identificeren, dit betekent dat de tool afhankelijk is van de bestandsstructuur. De paden van het volgende voorbeeld zijn correct:
De foldernamen maken niet uit, het gaat slechts om de bestandsstructuur.
Voorbeeld van incorrect paden:
Info
De volgende paden zouden altijd toegevoegd kunnen worden als ondersteuning door de regex aan te passen. Een andere optie is om per project een configuratie bestand te maken waarin de paden van de vertalingsbestanden worden opgeslagen, die mogelijk ook via de front-end te configureren is. Een ander alternatief is om het project dat beheert wordt aan te passen zodat deze bestandsstructuur ondersteund wordt.