sqlinsight-pro/.forgejo/workflows/deploy-forum.yml
Claude 85d3674d53
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
CI / Build og unit tests (push) Successful in 54s
CI / MSI-installer (push) Successful in 34s
deploy forum: nævn manglende secrets, før noget ændres på serveren
Workflowet stoppede med "FORUM_PORT is not set", fordi forummets secrets ikke
er oprettet endnu. Nu tjekkes alle påkrævede secrets først og listes samlet,
og install.sh validerer værdierne, før discourse_docker klones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
2026-09-29 14:08:31 +00:00

81 lines
3.5 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
missing=""
for v in FORUM_BIND FORUM_PORT KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD; do
[ -n "$(printenv "$v" || true)" ] || missing="$missing $v"
done
if [ -n "$missing" ]; then
echo "ERROR: disse secrets mangler i repo-indstillingerne:$missing (FORUM_BIND er secret HOST_BIND). Se docs/community.md."
exit 1
fi
# 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