/
Sätta upp CI/CD för en applikation

Sätta upp CI/CD för en applikation

Här beskrivs alla steg som krävs för att sätta upp en Jenkins-pipeline som bygger och installerar alla instanser av en Spring Boot-applikation.

Förutsättningar

  • Dept44 version 0.13 eller senare måste användas.

  • Spring cloud config properties måste vara uppsatt för production, test och sandbox.

  • Lediga portar måste vara identifierade på SAAS728 (test) och SAAS021 (produktion).

  • HAProxy måste vara konfigurerad med dessa portar.

Tillvägagångssätt

  1. Lägg till följande properties i din pom.xml och byt ut värdena till de som stämmer överens med din applikation:

    <properties> <!-- CI/CD properties --> <docker.image.name>ms-businessengagements</docker.image.name> <published.container.port.sandbox>8730</published.container.port.sandbox> <published.container.port.test>8728</published.container.port.test> <published.container.port.production>8727</published.container.port.production> </properties>
  2. Gå in på Jenkins och klicka på

  3. Ange ett namn (samma som ditt applikationsnamn):

  4. Kopiera från “Template” längst nere:

  5. Klicka på OK

  6. Nu är det dags att konfigurera dina byggen. Tre “Branch Sources” ska vara uppsatta för “Production”, “Test” och “Sandbox”.

  7. Använd “ctrl + f” och sök efter texten “fyll i” och fyll i de fält som behöver kompletteras med dina värden.

  8. Gå längst ned och klicka på “Apply” och sedan “Save”

  9. Nu är du klar och byggen kommer ske automatiskt vid nya commits på de brancher du tidigare har angett.

    1. Observera att det kan hända att du måste gå in på SAAS728 och SAAS021 och stoppa samt ta bort dina gamla containrar för att pipelinen ska fungera.

Sandbox

När pipelinen för Sandbox körs så startas även en Wiremock-container och en MariaDB-container.
För att Wiremock ska fungera så måste Wiremock-katalogerna (“__files” & “mappings”) ligga under: src/test/resources/wiremock

Wiremock-containern nås på http://wiremock:8080

MariaDb nås på jdbc:mariadb://db:3306/<docker.image.name>
Användarnamn: dbuser
Lösenord: dbpass

Default så startas Wiremock- och MariaDB-container upp för en tjänst i sandbox-miljön. För tjänster som ej kräver dessa containers kan man inaktivera ena eller båda genom properties i pom-filen enligt nedan (värdet ska vara true eller false):

<properties> <sandbox.db>false</sandbox.db> <sandbox.wiremock>false</sandbox.wiremock> </properties>

Graylog

Loggar skickas automatiskt till Graylog och kan hittas med filtren:

  • source:<docker.image.name>-production*

  • source:<docker.image.name>-test*

Docker images

Docker-images laddas upp till vårt egna Nexus-repository.

Vilka image tags som byggs och laddas upp till Nexus beror på vilken branch du bygger från.

Branch

Image tag

Rensning

Branch

Image tag

Rensning

main

  • latest

  • main-<commit-hash>

Dessa images rensas aldrig bort. Detta för att vi ska ha möjlighet att backa till tidigare versioner av applikationen.

Övriga brancher

  • <commit-hash>

Dessa images rensas bort om de inte har blivit nedladdade de senaste tre dagarna.

Bra att veta

Kommande utveckling

  • Kodanalys https://sundsvall.atlassian.net/browse/UF-2429

  • Säkerhetsanalys https://sundsvall.atlassian.net/browse/UF-571

  • Gå mot olika instanser av spring cloud config server beroende på vilken instans som byggs.

  • Hantera image-tags så vi inte rensar bort images som används i produktion. Prefix på image-tag?

  • Möjlighet att manuellt fylla i vilken image-tag som ska installeras. För att snabbt och enkelt kunna backa till en tidigare version av applikationen.

  • Bygga en fungerade lösning för Wiremock.

  • Health-check i deploy-steget

  • Ej deploy som default för produktion

 

Related pages