4.3 KiB
4.3 KiB
Deployment Instructions
Overview
Deployment gebeurt via Gitea Actions, opgesplitst in twee bestanden:
.gitea/workflows/continuous_integration.yaml— build/test/lint-gate, plus dedeploy-testjob..gitea/workflows/deploy.yaml— herbruikbare workflow diedist/via SCP naar een omgeving uploadt.
Sinds deze stap wordt er automatisch gedeployed naar een testomgeving: een Raspberry Pi die de site serveert via nginx, bereikbaar achter een tweede Raspberry Pi met een nginx reverse proxy.
Pipeline Files
continuous_integration.yaml— getriggerd doorpull_request(build/test/lint-gate),pushnaarmaster, en handmatig viaworkflow_dispatch.prepare→build(uploadtdistartifact) →test(lint + unit tests)deploy-test(alleen bijworkflow_dispatchof een push naarmaster) roeptdeploy.yamlaan metenvironment: testendeploy_path: /html/test/slpsoftware
deploy.yaml— download dedist-artifact en upload de inhoud viaappleboy/scp-actionnaar de opgegevendeploy_pathop de host uit de meegegeven secrets.
Eenmalige Setup — Gitea Secrets
Voeg deze secrets toe in Gitea: Repository → Settings → Actions → Secrets:
| Secret | Waarde |
|---|---|
PI_TEST_HOST |
Intern IP-adres van de webserver-Pi (192.168.1.103) |
PI_TEST_PORT |
SSH-poort (2224) |
PI_TEST_USERNAME |
SSH-gebruikersnaam (webadmin) |
PI_TEST_PASSWORD |
Het SSH-wachtwoord van deze gebruiker |
Eenmalige Setup — Domeinnaam & DNS
- Test:
test.slpsoftware.nl→ moet als DNS A-record wijzen naar het publieke IP van de reverse-proxy-Pi. - Productie (nog niet automatisch gedeployed, maar domein al bekend):
slpsoftware.nl(enwww.slpsoftware.nl) → zelfde reverse-proxy-Pi, zodra productie wordt opgezet.
Eenmalige Setup — nginx & SSL op de Raspberry Pi's
- Kopieer
operations/deployment/nginx/webserver-nginx.conf.examplenaar/etc/nginx/sites-available/op de webserver-Pi, maak een symlink insites-enabled/, en herlaad nginx. - Kopieer
operations/deployment/nginx/reverse-proxy-nginx.conf.examplenaar/etc/nginx/sites-available/slpsoftware-test.confop de reverse-proxy-Pi, maak een symlink insites-enabled/, en herlaad nginx. Dit bestand gebruikt altest.slpsoftware.nlalsserver_name. - Vraag op de reverse-proxy-Pi een SSL-certificaat aan met certbot (Let's Encrypt), nadat het DNS-record klopt:
sudo certbot --nginx -d test.slpsoftware.nl. Certbot regelt automatisch de HTTPS-configuratie en de HTTP→HTTPS-redirect (net zoals je gewend bent van certbot). - Zorg dat de map
/html/test/slpsoftwarebestaat op de webserver-Pi en schrijfbaar is voor de gebruikerwebadmin(bijv.sudo mkdir -p /html/test/slpsoftware && sudo chown webadmin:webadmin /html/test/slpsoftware). - Voor later, wanneer productie wordt opgezet: zie
operations/deployment/nginx/reverse-proxy-nginx-production.conf.example(domeinslpsoftware.nl, certbot-commando alvast gedocumenteerd).
How to Deploy to Test
Automatisch
Merge een pull request naar master — de deploy-test job draait dan automatisch na een groene build/test-run.
Handmatig
- In Gitea, open de repository's Actions tab.
- Selecteer de Continuous Integration workflow.
- Klik Run workflow, kies de gewenste branch/ref, en start.
Verifying a Deployment
- Bevestig dat de Gitea Actions run succesvol is (alle jobs groen, inclusief
deploy-test). - Open de testomgeving in de browser (via het adres/IP dat je bij de reverse-proxy hebt ingesteld) en controleer dat de site correct laadt (check de browserconsole op fouten, zoals in de handmatige smoke test in
construction/build-and-test/integration-test-instructions.md).
Future Work
- Van wachtwoord naar SSH-key: vervang
password: ${{ secrets.PI_TEST_PASSWORD }}indeploy.yamldoorkey: ${{ secrets.PI_TEST_SSH_KEY }}(een nieuwe secret met de private key-inhoud), en zet de bijbehorende public key in~/.ssh/authorized_keysvan dewebadmin-gebruiker op de webserver-Pi. Verwijder daarna het wachtwoord-secret. - Productie-omgeving: voeg een
deploy-production-job toe zodra de definitieve productiehosting bekend is (ziedeployment-plan.md's "Open Item"), en pasnginx/reverse-proxy-nginx-production.conf.example(domeinslpsoftware.nl) toe zodra de webserver-locatie voor productie vastligt.