Unsere Webapp ist speziell darauf ausgerichtet, Webseiten für Abteilungen und Pfadiregionen zu erstellen. Sie bietet eine flexible und modulare Plattform, mit der Benutzer ihre eigenen Seiten aus verschiedenen Bausteinen zusammenstellen können. Die Webapp hat folgende Funktionen:
- Modulare Webseitenerstellung: Gestalte die Webseite deiner Abteilung mit einer Vielzahl von Modulen, darunter Bilder-Banner, Formulare und spezielle Pfadimodule.
- Gruppenseiten: Einheitsleitende haben Zugang zu ihrer Gruppenseite, welche speziell auf ihre Gruppe zugeschnitten ist.
- Veranstaltungsmanagement: Erfasse Samstagnachmittagsevents, die auf den Gruppenseiten dargestellt werden.
- MiData OAuth Login: Der Zugang zum Editorbereich wird durch die OAuth-Funktion der MiData ermöglicht.
- Klone das GIT-Repository:
git clone https://github.com/gloggi/abteilungs-homepage.git
- Wechsle in das Directory:
cd abteilungs-homepage
- Starte die Docker-Container:
docker-compose up -d
- Das Frontend der Webseite findest du unter
http://localhost:8080
und das Backend unterhttp://localhost:8000
Das Login zum Editorenbereich unter http://localhost:8080/dashboard
funktioniert mithilfe der Testumgebung der MiData gehosted unter https://pbs.puzzle.ch
. Damit das Login zusammen mit den Seeds funktioniert, kannst du dich mit folgenden Accounts einloggen:
Abteilungsleitung | |
---|---|
[email protected] | |
Passwort | Rissi@Lagom1234 |
Einheitsleitung | |
---|---|
[email protected] | |
Passwort | Diff@Lagom1234 |
Webmaster | |
---|---|
[email protected] | |
Passwort | Satoshi@Lagom1234 |
Jede Nacht wird der Stand vom master Branch auf alle deploy-* Branches synchronisiert. Bei einem Push auf einen deploy-* Branch läuft ein CI/CD-Job welcher via ein Skript die Applikation buildet und per SFTP auf den Server hochlädt. Pro deploy-* Branch haben wir daher eigene Secrets und Variables in den GitHub Environments dieses Repositories angelegt. Diese Secrets und Variables bestimmen, wohin und mit welchen Einstellungen der Code deployed wird.
In diesem Beispiel legen wir ein Deployment für die Abteilung Lagom unter der Adresse https://lagom.ch an.
- Auf dem Hosting zwei (Sub-)Domains anlegen:
- lagom.ch -> hierhin wird das Vue.js Frontend deployed, daher z.B. auf einen Ordner ~/www/lagom.ch im Hosting zeigen lassen
- api.lagom.ch -> hierhin wird das Laravel Backend deployed, daher z.B. das Verzeichnis ~/www/lagom.ch-api anlegen, und den Webroot dieser Subdomain auf ~/www/lagom.ch-api/public zeigen lassen
- Auf dem Hosting eine neue Datenbank mit einem neuen User anlegen. Dabei Datenbank-Host, Datenbankname, Username und Passwort notieren
- MiData OAuth Applikation einrichten
- Für Testumgebungen unter https://pbs.puzzle.ch auf Einstellungen -> OAuth Apps gehen
- Für produktive Umgebungen das Antragsformular verwenden welches unter https://pfadi.swiss/media/files/1c/schnittstellen_2021_de.pdf verlinkt ist
- Callback URL: https://lagom.ch/login
- Benötigte Scopes: email, name, with_roles
- Im GitHub Webinterface auf diesem Repository unter Settings -> Environments ein neues Environment namens lagom anlegen
- Im GitHub Environment lagom folgende Environment secrets erfassen:
APP_KEY
: Kann man lokal generieren indem mandocker compose run --rm --entrypoint "php artisan key:generate" backend
ausführt und den generierten APP_KEY aus api/.env holtDB_HOST
: Aus den Datenbank-Credentials vom DB erstellen (siehe oben)DB_DATABASE
: Aus den Datenbank-Credentials vom DB erstellen (siehe oben)DB_USERNAME
: Aus den Datenbank-Credentials vom DB erstellen (siehe oben)DB_PASSWORD
: Aus den Datenbank-Credentials vom DB erstellen (siehe oben)MIDATA_CLIENT_SECRET
: Von der MiData-OAuth-App (siehe oben)SSH_PRIVATE_KEY
: Kann man lokal generieren mitssh-keygen -t rsa
, dann den Inhalt von id_rsa.pub auf dem Hosting als erlaubten SSH-Key eintragen, und den Inhalt von id_rsa ins GitHub Secret eintragenSSH_USERNAME
: Accountname für SSH-Login beim HostingMAIL_USERNAME
: Benutzername eines Mailaccounts auf dem HostingMAIL_PASSWORD
: Passwort desselben Mailaccounts auf dem Hosting
- Im GitHub Environment lagom folgende Environment variables erfassen:
APP_NAME
: Name der Pfadiabteilung, wird aktuell nur für den Namen der Session Cookies verwendetBACKEND_URL
: URL zum Backend https://api.lagom.chFRONTEND_URL
: URL zum Frontend https://lagom.chMIDATA_BASE_URL
: https://pbs.puzzle.ch für Testumgebungen, https://db.scout.ch für produktive UmgebungenMIDATA_CLIENT_UID
: Von der MiData-OAuth-App (siehe oben)MIDATA_ID
: Die ID von der Abteilung auf MiData (https://db.scout.ch/de/groups/{ID})SEED_DB
: Auf den Werttrue
setzen falls die Inhalte dieser Umgebung bei jedem Deployment mit den Seeds überschrieben werden sollen. Ansonsten weglassen.SSH_BACKEND_DIRECTORY
: Pfad auf dem Server wo das Backend hochgeladen werden soll. In unserem Beispiel ~/www/lagom.ch-apiSSH_FRONTEND_DIRECTORY
: Pfad auf dem Server wo das Frontend hochgeladen werden soll. In unserem Beispiel ~/www/lagom.chSSH_HOST
: Hostname des Hostings für den SSH LoginSSH_PORT
: Port für den SSH-Zugriff auf den Server (default 22)SSH_KNOWN_HOSTS
: Kann lokal herausgesucht werden, indem man ~/.ssh/known_hosts temporär umbenennt und dann eine SSH-Verbindung von lokal zum Hosting aufmacht. Der Inhalt des neuen ~/.ssh/known_hosts gehört in diese Variable. Die alte Kopie wiederherstellen nicht vergessen!MAIL_MAILER
: E-Mail-System, das verwendet wird (z.B. smtp, sendmail, mailgun, etc.)MAIL_HOST
: Hostname des Email-ServersMAIL_PORT
: Port für die Email-KommunikationMAIL_ENCRYPTION
: Verschlüsselungsmethode für Emails (z.B. tls, ssl, none)MAIL_FROM_ADDRESS
: Standard-Absenderadresse für ausgehende EmailsMAIL_FROM_NAME
: Standard-Absendername für ausgehende EmailsPHP_PATH
: Pfad zur PHP-Version, die während des Deployments verwendet werden soll (default php)
- In nightly.yml einen Punkt
- uses: repo-sync/github-sync@v2
inkl. Unterpunkten kopieren und destination-branch aufdeploy-lagom
anpassen (muss mitdeploy-
anfangen undlagom
muss ganz genau gleich geschrieben sein wie das GitHub Environment heisst) - Code von master auf den neuen Branch deploy-lagom pushen und in GitHub Actions zuschauen wie das Deployment zum ersten Mal läuft