name: Build XPI on: push: branches: - main - "feat/**" - "fix/**" paths: - "src/**" workflow_dispatch: 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