name: Release on: push: tags: - "v*" permissions: contents: write packages: write jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - run: npm ci - run: npm run typecheck - run: npm test docker: runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract version from tag id: version run: echo "version=${GITHUB_REF#refs/tags/v}" >> "$GITHUB_OUTPUT" - uses: docker/build-push-action@v6 with: context: . push: true tags: | ghcr.io/${{ github.repository }}:${{ steps.version.outputs.version }} ghcr.io/${{ github.repository }}:latest cache-from: type=gha cache-to: type=gha,mode=max github-release: runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm cache-dependency-path: extension/package-lock.json - name: Build extensions working-directory: extension run: | npm ci for browser in chrome firefox edge safari; do node esbuild.config.mjs --browser=$browser done - name: Package extensions run: | cd extension/build for browser in chrome firefox edge safari; do zip -r "../../cookiebridge-${browser}-${{ github.ref_name }}.zip" "$browser/" done - uses: softprops/action-gh-release@v2 with: generate_release_notes: true files: cookiebridge-*-${{ github.ref_name }}.zip