From 292701d3cbf7af8ad9334032ce219269725382b4 Mon Sep 17 00:00:00 2001 From: jimmyGALLAND Date: Sun, 24 May 2026 16:32:45 +0200 Subject: [PATCH] ci: build XPI on every src/ change Produces a versioned .xpi artifact on each push touching src/. On main, also updates the latest-dev pre-release with the new build. --- .github/workflows/build-xpi.yml | 82 +++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 .github/workflows/build-xpi.yml diff --git a/.github/workflows/build-xpi.yml b/.github/workflows/build-xpi.yml new file mode 100644 index 0000000..942711f --- /dev/null +++ b/.github/workflows/build-xpi.yml @@ -0,0 +1,82 @@ +name: Build XPI + +on: + push: + branches: + - main + - "feat/**" + - "fix/**" + paths: + - "src/**" + +jobs: + build: + name: Package extension + runs-on: ubuntu-latest + + permissions: + contents: write # nécessaire pour créer la release et uploader l'artefact + + steps: + # --------------------------------------------------------------- + # 1. Récupérer le code + # --------------------------------------------------------------- + - name: Checkout + uses: actions/checkout@v4 + + # --------------------------------------------------------------- + # 2. Lire la version depuis manifest.json + # --------------------------------------------------------------- + - name: Read version + id: version + run: | + VERSION=$(jq -r '.version' src/manifest.json) + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "xpi_name=ytptube-extension-${VERSION}.xpi" >> "$GITHUB_OUTPUT" + + # --------------------------------------------------------------- + # 3. Construire le XPI (= zip renommé) + # --------------------------------------------------------------- + - name: Build XPI + run: | + cd src + zip -r "../${{ steps.version.outputs.xpi_name }}" . \ + -x "*.git*" "*.DS_Store" "*.idea*" "*.vscode*" \ + "node_modules/*" "dist/*" "build/*" + cd .. + echo "Contenu du XPI :" + unzip -l "${{ steps.version.outputs.xpi_name }}" + + # --------------------------------------------------------------- + # 4. Uploader comme artefact CI (disponible dans l'onglet Actions) + # --------------------------------------------------------------- + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.version.outputs.xpi_name }} + path: ${{ steps.version.outputs.xpi_name }} + retention-days: 30 + + # --------------------------------------------------------------- + # 5. Créer ou mettre à jour la pre-release "latest-dev" + # (uniquement sur la branche main) + # --------------------------------------------------------------- + - name: Create or update dev release + if: github.ref == 'refs/heads/main' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + TAG="latest-dev" + XPI="${{ steps.version.outputs.xpi_name }}" + SHORT_SHA="${GITHUB_SHA::7}" + TITLE="Dev build v${{ steps.version.outputs.version }} (${SHORT_SHA})" + + # Supprimer l'ancienne release/tag si elle existe + gh release delete "$TAG" --yes 2>/dev/null || true + git push --delete origin "$TAG" 2>/dev/null || true + + # Recréer la release pre-release avec le nouveau XPI + gh release create "$TAG" "$XPI" \ + --title "$TITLE" \ + --notes "Build automatique du commit \`${SHORT_SHA}\` sur \`main\`." \ + --prerelease \ No newline at end of file