AWS setup

Hieronder volgt het stappenplan zodat deployen naar AWS, ook wel Amazon Web Services, mogelijk wordt.

Een meer uitgebreide guide vind je in de README van seed/ops in Gitlab. Deze meer summiere guide zou je moeten in staat stellen om een bestaand project te deployen.

Stappen om alles klaar te zetten

  1. Installeer aws-cli via

    bash brew install awscli

    Het is mogelijk dat hierbij een error wordt teruggegeven wanneer Docker recent is verwijderd en opnieuw werd geïnstalleerd: Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins.

    Volgende stappen lossen dit probleem mogelijks op:

    bash sudo rm -r /usr/local/lib/docker/cli-plugins mkdir -p /Applications/Docker.app/Contents/Resources/cli-plugins brew cleanup

  2. Maak een nieuwe folder .aws op root niveau aan via het commando:

    bash mkdir ~/.aws

  3. Navigeer naar deze folder via

    bash cd ~/.aws

  4. Maak een nieuw bestand aan met de naam credentials via

    bash touch credentials

  5. Voeg volgende twee lijnen toe aan het begin van het bestand.

    bash [default] region = eu-central-1

  6. Installeer de chrome plugin SAML to AWS STS Keys Converter

  7. Voeg een nieuwe lijn commentaar toe aan het credentials bestand met daarin de projectnaam. Op deze manier behoud je het overzicht. Dit kan door # Projectnaam toe te voegen boven de credentials voor dat specifieke project.

  8. Navigeer naar de Codifly AWS apps page. Login met de credentials die je kunt vinden in onePassword. Klik op de klant waar je aan werkt. De plugin zou moeten automatisch een credentials file downloaden. Soms lukt het niet in één keer. Dus dan moet je gewoon de nieuwe tab sluiten en nog eens proberen.

  9. Kopieer de inhoud van het gedownloade credentials bestand en voeg het toe aan het in stap 4 aangemaakte bestand ~/.aws/credentials.

  10. Vervang [default] door de waarde in het deployscript bij AWS_PROFILE, dit zou moeten eindigen met DeploymentAccess. Behoud echter wel de vierkante haakjes errond. Het formaat van de string waar je [default] mee moet vervangen is [__accountId_DeploymentAccess].

Het credentials bestand zou nu volgende structuur moeten hebben:

[default]
region = eu-central-1

[<AWS_PROFILE>]
information from extension without default 

Een concreet voorbeeld: An example of a credentials file

Deployen van een Codifly api of web app

Volgende stappen beschrijven het deployment proces van een api of web app. Onderstaand schema geeft je ook meer informatie over Codifly's Git strategie.

  1. Wanneer er nieuwe features zijn toegevoegd zonder breaking changes, moet de versie verhoogd worden van v0.1.0 naar v0.2.0. Indien er een bug is opgelost spreken we over een patch, hiervoor wijzig je de versie van v0.1.0 naar v0.1.1. Het wijzigen van de versie gebeurt via de version property in de package.json file van web en api. Wijzig de versies en commit deze changes op de development branch, met als message het versienummer (bijvoorbeeld v0.2.0).

  2. Geef de gemaakte commit op de development branch een tag met als naam de nieuwe versie v0.2.0. Zo kunnen we releases makkelijk terugvinden. Het aanmaken van een tag kan via SourceTree met een rechtermuisklik op de gemaakte commit.

  3. Zorg ervoor dat de credentials van de applicatie waaraan je werkt in de ~/.aws/credentials file staan. Hiervoor kan je bovenstaande stappen volgen. Voeg ook volgende lijnen toe zodat de aws-cli weet dat we onze rol gebruiken voor het deployen van de applicatie. Vervang hierbij __accountId door het ID van jouw applicatie.

    [__accountId_DeploymentAccess] source_profile=__accountId_CodiflyAdministratorAccess role_arn=arn:aws:iam::__accountId:role/DeploymentAccess

  4. Je bent nu klaar om te deployen! Navigeer met je terminal naar je project op de development branch en voer vervolgens in de api folder het volgende commando uit om de backend te deployen: yarn run deploy -e stg. Achterliggend voert dit het deploy.sh script uit. De -e flag geeft de omgeving aan waarop je wil deployen.

    De commando's voor elke omgeving zijn:

    • Staging: yarn run deploy -e stg
    • Acceptance: yarn run deploy -e acc
    • Production: yarn run deploy -e prd


  5. Doe vervolgens hetzelfde in de web folder om de frontend te deployen: yarn run deploy -e stg. Let telkens op de output 'deploy script complete' om te bevestigen dat de release is gelukt.

  6. Wanneer je bevestigd dat het releasen is gelukt, door te gaan kijken op jouw omgeving, mag je de development branch inmergen in de staging branch. Dit doe je niet via een MR, maar via SourceTree. De commit van de merge geef je terug een Tag, met als naam release/stg/v0.2.0. Wijzig dit naar jouw omgeving en versienummer. Zo kunnen we terug alle releases makkelijk terugvinden.


Codifly's Git strategy Codifly's Git strategy