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