Web-Applikation Template Repository
Das Modul verfolgt das Prinzip, make-it-work, then-make-it-yours. Dies heisst es existiert ein funktionsfähiges, minimales Beispielprogramm. In diesem Fall ist es ein einfachen nginx Webserver, welcher über ein GitHub Template Repository von jedem Lernenden geklont und dann individuell angepasst wird.
- Das Ziel vom Modul ist es, dass jeder mindestens diese Beispiel App verstanden hat 🥳
Aufgaben
Das Template bbzbl-modul-324-template
klonen
- In den GitHub Account einloggen
- https://github.com/codingluke/bbzbl-modul-324-template aufrufen
- "Use this Template" -> "Create a new repository" wählen
- Formular ausfüllen
- Der Name dürft Ihr selber wählen.
- Bitte "Private" auswählen, später mir (codingluke) berechtigen
- Mit "Create Repository" bestätigen
AWS Credentials in Repository Environment Variablen übertragen
- Im neu erstellten Repository auf "Settings" -> "Secrets and variables" -> "Actions" navigieren
- Auf "New Repository secret" klicken
- Für alle Einträge unter "AWS Details" ein Secret erstellen, es sollten 5
Secrets existieren
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_SESSION_TOKEN
- AWS_SSH_PRIVATE_KEY
- AWS_ACCOUNT_ID
Berechtigungen setzen
- Im neu erstellten Repository auf "Settings" -> "Actions" -> "General" navigieren
- Ganz nach unten scrollen
- "Allow GitHub Actions to create and approve pull requests" erlauben
- Diese Berechtigung ist wichtig, dass automatisch Pull-Request erstellt werden können, was die Automatisierung von Releases ermöglicht.
- Mehr dazu nächste Woche.
Amazon AWS Infrastruktur aufsetzten
Es existiert eine GitHub Action Setup Infrastructure on Amazon AWS
- Diese kann manuell gestartet werden.
- Da die Action sich mit Amazon verbindet, müssen zuerst die Credentials übertragen sein.
Danach die Action folgendermassen gestartet werden:
- Nach "Actions" navigieren
- "Setup Infrastructure on Amazon AWS" auswählen
- "Run workflow" auswählen
Nun wird ein Workflow mit zwei Steps gestartet:
- der Erste "Create AWS Resourcen" erstellt alle AWS Resourcen, d.H. die Ubuntu VM und co.
- der Zweite "Bootstrap Kamal on AWS EC2 instance" installiert die nötigen tools in der Ubuntu VM
- Wenn alles grün ist (hoffentlich 😅) sollte die Umgebung parat sein, dass Docker-Images deployed werden können.
Nginx Image bauen und ausliefern (deployen)
Ist die AWS Umgebung aufgesetzt, kann die Action "Deploy to Amazon AWS" analog gestartet werden.
- "Deploy to Amazon AWS" auswählen
- "Run workflow" auswählen
- Warten bis das Deployment geklappt hat
- Nun sollte einen Link "Visit me on http://public-ip 🚀" sichtbar sein
Webseite in Browser öffnen
Nun ist die Web-App auf AWS ausgeliefert und öffentlich verfügbar.
- Es handelt sich um http und nicht https!
- Wenn euer Browser motzt, evt. Firefox verwenden.
HTML bearbeiten
Nun ist es möglich Änderungen an der App vorzunehmen, welche automatisch auf AWS deployed werden!
-
Navigiert zu "Code -> nginx -> src -> index.html" und klickt auf "Edit"
-
Fügt folgenden Tag in den Body ein
<img
src="https://media1.tenor.com/images/b5c0aaca498dd84fa218239572165129/tenor.gif?itemid=5025891"
/> -
"Commit changes".
vorsicht- 💥 Verwendet bitte die Commit-Message
feat(nginx): show some magic
! - 💥 Create a new branch for this commit and start a pull request
- 💥 Verwendet bitte die Commit-Message
-
In einem Pull-Request, könnte man nun den Code-Change kommentieren
-
Nach dem mergen wird automatisch die GitHub Action "Deploy to Amazon AWS" gestartet.
-
Warten bis die GitHub Action fertig ist
-
💥 Nun die Webseite refreshen