demobro-com/demobro-actionv1

DemoBro GitHub Action

Générez automatiquement une vidéo de démo à chaque pull request. L'action déclenche un rendu via l'API DemoBro, attend la fin du traitement, puis poste le lien de la vidéo en commentaire sur la PR.

Zero-config

Une clé API + une ligne dans votre workflow.

CI-native

Compatible PR, push, cron, workflow_dispatch.

PR comments

Lien vidéo posté automatiquement sur la PR.

Auth scopée

Clés `dmbr_…` révocables, isolées par utilisateur.

Démarrage rapide

Trois étapes, moins d'une minute.

1

Créer une clé API

Dans votre dashboard DemoBro → Settings · API keys, générez une clé.

dmbr_xxxxxxxxxxxxxxxxxxxxxxxx
2

Ajouter le secret GitHub

Repo → Settings · Secrets · Actions · New secret.

DEMOBRO_API_KEY
3

Ajouter le workflow

Créez .github/workflows/demobro.yml avec le contenu ci-dessous.

.github/workflows/demobro.yml
name: DemoBro

on:
  pull_request:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read
  pull-requests: write

jobs:
  generate-demo:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Generate DemoBro video
        uses: demobro-com/demobro-action@v1
        with:
          api-key: ${{ secrets.DEMOBRO_API_KEY }}
          project-id: 11111111-2222-3333-4444-555555555555
          comment-on-pr: true

À la prochaine PR, l'action déclenche un rendu, attend qu'il soit prêt, et poste un commentaire avec le lien MP4.

Paramètres

Tous les inputs supportés par l'action.

NomDéfautDescription
api-keyrequisClé API DemoBro (dmbr_…). À stocker dans un secret GitHub.
project-idUUID d'un projet DemoBro existant à rendre. Obligatoire si yaml-path est absent.
yaml-pathChemin vers un fichier DemoDSL YAML dans le repo. Crée ou met à jour un projet à partir de ce contenu.
api-urlhttps://demobro.com/apiURL de base de l'API. À surcharger uniquement pour une instance self-hosted.
waittrueAttendre la fin du rendu (true) ou fire-and-forget (false).
timeout-seconds1800Temps maximum d'attente avant abandon.
poll-interval-seconds10Fréquence de polling du statut du rendu.
comment-on-prtruePublier le lien de la vidéo en commentaire sur la PR déclenchante.
github-token${{ github.token }}Token utilisé pour poster le commentaire PR. Nécessite la permission pull-requests: write.
fail-on-errortrueFaire échouer le job si le rendu échoue ou expire.

Vous devez fournir project-id ou yaml-path. Si vous fournissez les deux, le YAML local écrase la configuration du projet existant avant le rendu.

Sorties

Valeurs exposées par l'action — chaînables avec d'autres steps.

NomDescription
render-idUUID du rendu créé sur DemoBro.
video-urlURL absolue du MP4 une fois le statut completed atteint. Vide si wait=false.
statusStatut final : completed, failed, pending
usage example
- id: demo
  uses: demobro-com/demobro-action@v1
  with:
    api-key: ${{ secrets.DEMOBRO_API_KEY }}
    project-id: 11111111-2222-3333-4444-555555555555

- name: Use video URL
  run: echo "🎬 ${{ steps.demo.outputs.video-url }}"

Exemples

Patterns courants — copy / paste / adapt.

DemoDSL versionné dans le repo

Committez votre .demobro/demo.ymlet laissez l'action le synchroniser à chaque PR.

.github/workflows/demobro.yml
name: DemoBro (inline DSL)

on:
  pull_request:

permissions:
  contents: read
  pull-requests: write

jobs:
  demo:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: demobro-com/demobro-action@v1
        with:
          api-key: ${{ secrets.DEMOBRO_API_KEY }}
          yaml-path: .demobro/demo.yml

Plusieurs démos en parallèle (matrix)

Idéal pour rendre une démo « landing » et une démo « admin » sur la même PR.

.github/workflows/multi-demo.yml
name: Multi-demo

on: [pull_request]

jobs:
  demo:
    strategy:
      matrix:
        project:
          - aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa  # landing
          - bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb  # admin
    runs-on: ubuntu-latest
    steps:
      - uses: demobro-com/demobro-action@v1
        with:
          api-key: ${{ secrets.DEMOBRO_API_KEY }}
          project-id: ${{ matrix.project }}

Tester l'action en local

Le script entrypoint.sh est autonome — pratique pour déboguer sans pousser une PR.

bash
export DEMOBRO_API_KEY=dmbr_xxxxxxxxxxxxxxxxxxxxxxxx
export DEMOBRO_API_URL=https://demobro.com/api
export DEMOBRO_PROJECT_ID=<uuid>

bash infra/github-action/entrypoint.sh

Permissions & sécurité

Permissions GitHub requises

permissions:
  contents: read
  pull-requests: write  # pour le commentaire

Sans pull-requests: write le commentaire échoue silencieusement (le rendu est tout de même produit).

Auth API

L'action envoie Authorization: Bearer dmbr_… à chaque appel. Les clés sont hashées côté serveur, scopées par utilisateur, et révocables à tout moment depuis le dashboard.

💡 Stockez la clé dans un repository secret, jamais en clair dans le workflow.

Dépannage

401 / 403 « Clé API invalide ou désactivée »
La valeur dans secrets.DEMOBRO_API_KEY ne commence pas par dmbr_, a été régénérée, ou a été désactivée dans le dashboard. Recréez une clé et mettez à jour le secret.
Le commentaire PR n'apparaît pas
Vérifiez permissions: pull-requests: write dans le workflow, et que l'event est bien pull_request (pas push). Sur les PR provenant d'un fork, GITHUB_TOKEN n'a pas les droits d'écrire — utilisez un PAT via github-token: ${{ secrets.MY_PAT }}.
Le job timeout avant la fin du rendu
Augmentez timeout-seconds (par défaut 1800). Pour des démos longues > 30 min, préférez wait: false + un workflow de callback via webhook DemoBro.
yaml-path introuvable
Le step actions/checkout@v4 est-il bien présent avant l'action ? Sans checkout, le repo n'est pas disponible dans le runner.
Render échoue avec « quota dépassé »
Votre plan DemoBro n'a plus de crédits ou a atteint sa limite quotidienne. Mettez à niveau depuis /pricing ou attendez le reset journalier.

Prêt à automatiser ?

Créez votre première clé API et collez le workflow quickstart dans votre repo. Première vidéo générée en moins de 5 minutes.