# Publication du paquet @johanleroy/git-arboretum sur le registre npm du Gitea, # déclenchée UNIQUEMENT par un tag vX.Y.Z (jamais sur un push de branche). name: Release on: push: tags: ['v*'] permissions: contents: read packages: write jobs: publish: name: Publish to Gitea npm registry runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 registry-url: 'https://git.lidge.fr/api/packages/johanleroy/npm/' scope: '@johanleroy' cache: npm - run: npm ci - run: npm run build # Garde-fou : le tag (sans le "v") doit correspondre à la version du paquet. # GITHUB_REF_NAME est une variable d'env du runner (pas d'interpolation ${{ }} dans le shell). - name: Verify tag matches package version run: | pkg=$(node -p "require('./packages/server/package.json').version") tag="${GITHUB_REF_NAME#v}" if [ "$pkg" != "$tag" ]; then echo "ERREUR: tag '$tag' != version paquet '$pkg'" exit 1 fi echo "OK: tag $tag == version $pkg" - run: npm publish -w @johanleroy/git-arboretum env: # Mapper le secret du registre (PAT Gitea write:package, ou le token auto # GITEA_TOKEN s'il a ce scope) sur NODE_AUTH_TOKEN lu par le .npmrc de setup-node. NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # SBOM (transparence supply-chain entreprise) : généré pour le paquet publié et exposé en artefact. - name: Generate SBOM (CycloneDX) run: npx --yes @cyclonedx/cyclonedx-npm --omit dev --output-format JSON --output-file sbom.json -w @johanleroy/git-arboretum || npx --yes @cyclonedx/cyclonedx-npm --omit dev --output-format JSON --output-file sbom.json - uses: actions/upload-artifact@v4 with: name: sbom path: sbom.json