name: Release on: release: types: [published] permissions: contents: read jobs: release: name: Release runs-on: ubuntu-latest permissions: write-all steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Merge main into release branch run: | git checkout release git merge origin/main --no-ff -m "Merge main into release for tag ${{ github.event.release.tag_name }}" git push origin release - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: 'npm' registry-url: https://registry.npmjs.org - name: Get package.json version id: package-json-version run: echo "version=v$(cat package.json | jq '.version' --raw-output)" >> $GITHUB_OUTPUT - name: Check package.json version against tag name if: steps.package-json-version.outputs.version != github.event.release.tag_name uses: actions/github-script@v3 with: script: core.setFailed('Release tag does not match package.json version!') - name: Install dependencies run: npm ci - name: Run build run: npm run build - name: Upload build artifacts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh release upload ${{ github.event.release.tag_name }} dist/bundles/mediabunny.cjs dist/bundles/mediabunny.min.cjs dist/bundles/mediabunny.mjs dist/bundles/mediabunny.min.mjs dist/mediabunny.d.ts - name: Create Publish to npm run: npm publish --provenance env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}