Skip to content

CI/CD der Wippidu App

Basics

  • Jeder Build erzeugt die komplette App und Dokumentation das zugehoerige Dockerimage und fuehrt alle Tests aus
  • Bei einem Pull Request Build, werden die Dokumentation und die App auf eine Subdomain von wippidu.net deployed
  • Die Subdomain ist nach dem PR benannt, bspw. pr3.wippidu.net
  • Die App befindet sich direkt unter pr3.wippidu.net
  • Die Dokumentation befindet sich unter pr3.wippidu.net/docs, bspw. pr3.wippidu.net/docs/tech_doc/ für die technische Dokumentation
  • Das Docker Image läuft auf einem internen Port 50000 + PR Nummer, pr3.wippidu.net --> 50003
    • Dies ermoeglicht maximal 9999 Pull Requests, vor erreichen dieser Grenze sollte eine neue Strategie entworfen werden
    • Eine Idee hierzu wäre, wieder bei Null und damit 50000 anzufangen, usw. Dank der kurzlebigkeit von PRs sollte es hierbei hoffentlich keine Überschneidungen geben.
  • Bei einem Branch Build auf main wird die App auf app.wippidu.net deployed
  • interner Port ist hierbei 49999
  • Dokumentation ist genauso wieder unter app.wippidu.net/docs zu finden
  • Bei einem Branch Build auf develop wird die App auf develop.wippidu.net deployed
  • interner Port ist hierbei 48888
  • Dokumentation nach dem selben Schema

Automatisierung der Branches und PRs

@startuml
partition daily {
start
:get branches;
:get PRs;
:check existing deployments;
:stop running apps;
:delete non existing branches/PRs;
:update list endpoint;
stop
}
partition "on-build" {
start
:build app;
:build docs;
if (is main branch build) then (yes)
  :deploy main branch (with port 30001);
elseif (is PR build) then yes
  :get PR id for port;
  if (older build is running) then (yes)
    :kill old build;
  endif
  :deploy and start app;
  :deploy docs;

:reload nginx;
stop
}
@enduml