Some checks failed
Build & Deploy docs / build-deploy (push) Failing after 14m29s
107 lines
4.4 KiB
YAML
107 lines
4.4 KiB
YAML
name: Build & Deploy docs
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
schedule:
|
|
- cron: '0 3 * * *' # mise à jour nocturne (meta.json des repos plugins)
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
mkdir -p /root/_work/powersync-docs
|
|
cd /root/_work/powersync-docs
|
|
git init
|
|
git remote remove origin 2>/dev/null || true
|
|
git remote add origin \
|
|
"https://pakutz79:${{ secrets.MKDOCS_TOKEN }}@git.etm-powersync.fr/pakutz79/powersync-docs.git"
|
|
git fetch --depth 1 origin HEAD
|
|
git checkout FETCH_HEAD
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
cd /root/_work/powersync-docs
|
|
apt-get update -qq && apt-get install -y -qq python3-pip
|
|
python3 -m pip install --break-system-packages -q -r requirements.txt
|
|
|
|
# ── Récupération des JSON depuis les 5 repos drivers ─────────────────
|
|
- name: Fetch plugin JSON files
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.MKDOCS_TOKEN }}
|
|
run: |
|
|
cd /root/_work/powersync-docs
|
|
GITEA_BASE="https://git.etm-powersync.fr"
|
|
AUTH_BASE="https://pakutz79:${GITEA_TOKEN}@git.etm-powersync.fr"
|
|
mkdir -p .plugins-src
|
|
|
|
for repo in etm-powersync-plugins etm-powersync-plugins-modbus \
|
|
nymea-plugins nymea-plugins-modbus nymea-plugins-genericthings; do
|
|
|
|
# Branche par défaut via API Gitea (pas de hardcoding main/master)
|
|
BRANCH=$(curl -sf \
|
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
|
"${GITEA_BASE}/api/v1/repos/ETM-Schurig/${repo}" \
|
|
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('default_branch','main'))" \
|
|
2>/dev/null) || BRANCH="main"
|
|
|
|
echo "→ ${repo} (branche: ${BRANCH})"
|
|
git clone --depth 1 --branch "${BRANCH}" \
|
|
"${AUTH_BASE}/ETM-Schurig/${repo}.git" \
|
|
".plugins-src/${repo}" \
|
|
|| echo "WARNING: ${repo} introuvable ou inaccessible — ignoré"
|
|
done
|
|
|
|
# ── Génération de la doc ──────────────────────────────────────────────
|
|
- name: Generate device reference + SUMMARY.md
|
|
run: |
|
|
cd /root/_work/powersync-docs
|
|
python3 scripts/gen_device_reference.py \
|
|
--src .plugins-src \
|
|
--docs docs \
|
|
--lang fr
|
|
|
|
# ── Build MkDocs ──────────────────────────────────────────────────────
|
|
- name: MkDocs build --strict
|
|
run: |
|
|
cd /root/_work/powersync-docs
|
|
mkdocs build --strict
|
|
|
|
# ── Vérification idempotence ──────────────────────────────────────────
|
|
- name: Check generated content is up-to-date
|
|
run: |
|
|
cd /root/_work/powersync-docs
|
|
python3 scripts/gen_device_reference.py \
|
|
--src .plugins-src \
|
|
--docs docs \
|
|
--lang fr \
|
|
--check
|
|
|
|
# ── SSH ───────────────────────────────────────────────────────────────
|
|
- name: Setup SSH deploy key
|
|
env:
|
|
SSH_KEY: ${{ secrets.DOCS_DEPLOY_SSH_KEY }}
|
|
DEPLOY_HOST: ${{ secrets.DOCS_DEPLOY_HOST }}
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
printf '%s\n' "${SSH_KEY}" > ~/.ssh/deploy_key
|
|
chmod 600 ~/.ssh/deploy_key
|
|
ssh-keyscan -H "${DEPLOY_HOST}" >> ~/.ssh/known_hosts
|
|
|
|
# ── Déploiement ───────────────────────────────────────────────────────
|
|
- name: Deploy via rsync
|
|
env:
|
|
DEPLOY_USER: ${{ secrets.DOCS_DEPLOY_USER }}
|
|
DEPLOY_HOST: ${{ secrets.DOCS_DEPLOY_HOST }}
|
|
DEPLOY_PATH: ${{ secrets.DOCS_DEPLOY_PATH }}
|
|
run: |
|
|
cd /root/_work/powersync-docs
|
|
rsync -az --delete \
|
|
-e "ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=yes" \
|
|
site/ \
|
|
"${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}"
|