Some checks are pending
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
deploy hub / deploy (push) Successful in 24s
CI / Build og unit tests (push) Successful in 56s
deploy community / deploy (push) Successful in 1s
CI / MSI-installer (push) Successful in 33s
- deploy-community.yml: bygger og starter webstedet ved push (som hubben), bundet til DMZ-adressen. Springes over, indtil COMMUNITY_PORT er sat. Feedet læses skrivebeskyttet fra hubbens feed-mappe; download-links går til hub.sqlinsight.seosoft.dk/updates/ (ny indstilling DownloadUrl). - deploy-forum.yml (manuel): kører discourse_docker-launcheren i en helper-container med /var/discourse og docker.sock fra værten. app.yml er en skabelon, som render.py udfylder fra secrets. - Discourse uden egen TLS: lytter på DMZ-adressen, tvinger https-links og tager klient-IP fra X-Forwarded-For fra proxyen (ellers rammer rate limiting alle brugere samlet). - Caddy-opsætningen er fjernet; docs/community.md beskriver secrets og proxy-opsætning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
73 lines
3.1 KiB
YAML
73 lines
3.1 KiB
YAML
# =============================================================================
|
|
# Installér eller genopbyg forummet (Discourse, forum.sqlinsight.seosoft.dk) på appserveren.
|
|
#
|
|
# Kun manuelt (Actions → deploy forum → Run workflow): en rebuild tager 10-15 minutter, og forummet er nede imens.
|
|
# Discourse opdateres ellers fra /admin/upgrade.
|
|
#
|
|
# Runneren er host-mode, så launcheren køres i en helper-container med /var/discourse og docker.sock fra værten.
|
|
# app.yml udfyldes fra secrets af render.py; intet hemmeligt ligger i repoet.
|
|
#
|
|
# Påkrævede secrets: HOST_BIND FORUM_PORT KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD
|
|
# Valgfri: FORUM_SMTP_PORT (587) FORUM_NOTIFICATION_EMAIL (= FORUM_SMTP_USER) FORUM_WORKERS (4) FORUM_DB_SHARED_BUFFERS (512MB)
|
|
# =============================================================================
|
|
name: deploy forum
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: deploy-sqlinsight-forum
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: [self-hosted, appserver]
|
|
timeout-minutes: 60
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Build launcher helper
|
|
run: docker build -t sqlinsight-forum-launcher deploy/forum
|
|
|
|
- name: Rebuild Discourse
|
|
env:
|
|
FORUM_BIND: ${{ secrets.HOST_BIND }}
|
|
FORUM_PORT: ${{ secrets.FORUM_PORT }}
|
|
KNOWN_PROXY: ${{ secrets.KNOWN_PROXY }}
|
|
FORUM_ADMIN_EMAIL: ${{ secrets.FORUM_ADMIN_EMAIL }}
|
|
FORUM_SMTP_ADDRESS: ${{ secrets.FORUM_SMTP_ADDRESS }}
|
|
FORUM_SMTP_PORT: ${{ secrets.FORUM_SMTP_PORT }}
|
|
FORUM_SMTP_USER: ${{ secrets.FORUM_SMTP_USER }}
|
|
FORUM_SMTP_PASSWORD: ${{ secrets.FORUM_SMTP_PASSWORD }}
|
|
FORUM_NOTIFICATION_EMAIL: ${{ secrets.FORUM_NOTIFICATION_EMAIL }}
|
|
FORUM_WORKERS: ${{ secrets.FORUM_WORKERS }}
|
|
FORUM_DB_SHARED_BUFFERS: ${{ secrets.FORUM_DB_SHARED_BUFFERS }}
|
|
run: |
|
|
set -eu
|
|
# Samme sti inde og ude, så launcherens bind mounts (/var/discourse/shared/...) peger på værtens mapper.
|
|
docker run --rm \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
-v /var/discourse:/var/discourse \
|
|
-e FORUM_BIND -e FORUM_PORT -e KNOWN_PROXY -e FORUM_ADMIN_EMAIL \
|
|
-e FORUM_SMTP_ADDRESS -e FORUM_SMTP_PORT -e FORUM_SMTP_USER -e FORUM_SMTP_PASSWORD \
|
|
-e FORUM_NOTIFICATION_EMAIL -e FORUM_WORKERS -e FORUM_DB_SHARED_BUFFERS \
|
|
sqlinsight-forum-launcher
|
|
|
|
- name: Wait for the forum
|
|
env:
|
|
HOST_BIND: ${{ secrets.HOST_BIND }}
|
|
FORUM_PORT: ${{ secrets.FORUM_PORT }}
|
|
run: |
|
|
set -eu
|
|
for i in $(seq 1 60); do
|
|
if docker run --rm alpine:3 wget -qO- -T 3 "http://${HOST_BIND}:${FORUM_PORT}/srv/status" 2>/dev/null | grep -q ok; then
|
|
echo "forum is up"
|
|
exit 0
|
|
fi
|
|
echo "attempt $i: not ready"
|
|
sleep 5
|
|
done
|
|
docker logs --tail 100 app || true
|
|
exit 1
|