La configuration
- Dans le tableau de bord, créez un jeton deploy limité à l'équipe du site (comment).
- Dans le dépôt GitHub : Settings, Secrets and variables, Actions, nouveau secret
LIFTPAD_TOKEN. - Ajoutez
.github/workflows/liftpad.yml:
name: Deploy to Liftpad
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
# Si le site a une étape de construction :
# - run: npm ci && npm run build
- run: curl -fsSL https://liftpad.app/cli/liftpad.mjs -o "$RUNNER_TEMP/liftpad.mjs"
- name: Deploy (preview on pull requests, live on main)
if: github.event.pull_request.head.repo.fork != true
env:
LIFTPAD_TOKEN: ${{ secrets.LIFTPAD_TOKEN }}
MESSAGE: ${{ github.event.head_commit.message || github.event.pull_request.title }}
LIVE: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
run: |
node "$RUNNER_TEMP/liftpad.mjs" deploy ./public --site my-site --message "${MESSAGE:0:200}" $([ "$LIVE" = "true" ] && echo --prod)
Remplacez ./public par le dossier produit par votre build, et my-site par le nom du site sur Liftpad. Le journal affiche l'adresse d'aperçu et la note des vérifications de chaque déploiement.
Sécurité
- Le message de commit passe par l'environnement, jamais collé dans la commande : c'est du texte non fiable.
- Les demandes de fusion venant de copies (forks) n'ont pas le secret (règle de GitHub). La ligne if: saute l'étape de déploiement pour elles : elles montrent une étape sautée plutôt qu'une vérification en échec (sans elle, la CLI s'arrête avec Missing token).
- Donnez une expiration au jeton et remplacez-le avant la fin.