Livrer depuis la CI
Chaque build de recette envoyé depuis la CI sous un code, et la réponse du client qui revient en statut : validé ou à corriger.
Le problème
Chaque build de recette part par un canal différent : un lien de stockage qui n’expire jamais, un fichier trop lourd pour l’e-mail, une capture dans une messagerie. Le retour du testeur arrive ailleurs, et on ne sait jamais quel build a été testé.
La démarche
La machine de CI n’a besoin d’aucune clé S3 : elle parle à votre page de livraison avec son
DROP_PASSWORD, rangé dans les secrets du dépôt sous COLIS_TOKEN. La CLI se construit depuis le
dépôt colis (voir Installation).
- uses: oven-sh/setup-bun@v2
- name: Construire colis
run: |
git clone --depth 1 https://github.com/mamadouwhile/colis.git "$RUNNER_TEMP/colis"
cd "$RUNNER_TEMP/colis" && bun install --frozen-lockfile
bunx turbo run build --filter=@mdemb/colis
- name: Livrer le build
env:
COLIS_REMOTE: https://votre-livraison.vercel.app/api/transfers
COLIS_TOKEN: ${{ secrets.COLIS_TOKEN }}
run: |
CODE=$(node "$RUNNER_TEMP/colis/packages/cli/dist/index.js" envoyer ./dist/app-recette.zip)
echo "Build de recette : https://votre-livraison.vercel.app/$CODE" >> "$GITHUB_STEP_SUMMARY"Le code est la seule chose écrite sur stdout, donc il se glisse dans un message, un résumé de job ou un commentaire de pull request. Le client ouvre le lien, télécharge, teste, puis valide ou décrit ce qui ne va pas.
Plus tard, un script lit la réponse :
colis statut "$CODE" | head -1 # envoyé, ouvert, validé ou à corriger
colis statut "$CODE" --json # l’accusé complet, commentaire comprisÀ surveiller
- La limite de la fonction. La CLI envoie en une seule requête, à travers la fonction de la page
de livraison : le fichier doit tenir sous
DROP_MAX_SIZE_MB, 4 Mo par défaut sur Vercel. Au-delà, envoyez-le depuis la page, qui passe directement par le bucket en morceaux, ou relevez la limite sur un hébergement qui ne l’impose pas. - Le jeton est le mot de passe d’envoi.
--token, ouCOLIS_TOKEN, c’est leDROP_PASSWORDde la page. - Les options de la page ne suivent pas. Un colis créé par la CLI prend les valeurs par défaut du
déploiement : pas de mot de passe, pas de message, la durée par défaut. Pour les poser depuis un
terminal, envoyez les en-têtes
x-drop-*avec curl, voir Page de livraison. - Vérifiez le déploiement d’abord.
colis verifier --jsonsort en erreur si l’aller-retour échoue, ce qui en fait une étape de CI.
Faire valider une maquette
Un PDF ou une image envoyé sous un code, prévisualisé par le client dans la page, validé en un clic ou renvoyé avec un commentaire.
Livrer des fichiers lourds
Jusqu’à 2 Go par défaut, envoyés par le navigateur directement dans votre bucket, par morceaux, avec reprise si la connexion coupe.