Files
portfolio/.gitea/workflows/prod.yml
Johan LEROY 699353910f
All checks were successful
Deploy production / build-deploy (push) Successful in 1m48s
ci: corrige le déploiement FTPS (CN mismatch → ssl:check-hostname no)
Cert Plesk valide (CA) mais CN != FTP_HOST. On conserve le chiffrement forcé
et la validation de chaîne, on tolère le nom d'hôte (choix validé par l'utilisateur).
2026-06-19 16:09:16 +02:00

50 lines
1.7 KiB
YAML

# Déploiement production — johanleroy.fr
# Push sur `main` → contrôle de types → build statique Astro → mirror FTP vers Plesk.
# Secrets requis dans Gitea (Settings → Actions → Secrets) :
# FTP_HOST, FTP_USER, FTP_PASSWORD, FTP_TARGET_DIR (chemin docroot, ex. /httpdocs/johanleroy/public)
name: Deploy production
on:
push:
branches:
- main
jobs:
build-deploy:
runs-on: ubuntu-latest
container: node:22-bullseye
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: npm install --no-audit --no-fund
- name: Type check
run: npm run check
- name: Build static site
run: npm run build
- name: Verify build output
run: ls -la dist
- name: Deploy via FTPS (Plesk)
run: |
apt-get update && apt-get install -y lftp
# FTPS forcé (jamais de transport en clair) + validation du certificat par la CA.
# ssl:check-hostname no : le cert Plesk est valide (signé CA) mais son CN ne correspond
# pas à FTP_HOST (alias/IP) → on garde la validation de chaîne, on tolère le nom d'hôte.
# Bien plus sûr que `verify-certificate no` (qui accepterait n'importe quel cert).
# Alternative sans compromis : SFTP par clé SSH (sftp://) — à câbler si souhaité.
lftp -e "
set ftp:ssl-force true;
set ftp:ssl-protect-data true;
set ssl:verify-certificate yes;
set ssl:check-hostname no;
open ${{ secrets.FTP_HOST }};
user ${{ secrets.FTP_USER }} ${{ secrets.FTP_PASSWORD }};
mirror --reverse --delete --verbose dist/ ${{ secrets.FTP_TARGET_DIR }};
bye
"