name: 🚀 Release on: workflow_dispatch: inputs: package: description: Package to release default: wxt type: choice options: - analytics - auto-icons - i18n - is-background - module-react - module-solid - module-svelte - module-vue - runner - storage - unocss - webextension-polyfill - wxt bump: description: Blank (auto), a version (1.4.1), or major/minor/patch type: string dryRun: description: Do a dry-run and don't publish anything type: boolean default: false permissions: contents: read jobs: validate: name: Validate uses: './.github/workflows/validate.yml' secrets: inherit if: ${{ inputs.dryRun != true }} publish: name: Publish ${{ case(inputs.dryRun, ' (dry-run)', '') }} runs-on: ubuntu-24.04 permissions: contents: write # Push version changes id-token: write # OIDC for NPM publishing needs: - validate # Allow dry runs to skip validation but still run this job if: | always() && (needs.validate.result == 'success' || needs.validate.result == 'skipped') steps: - name: Checkout uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 0 ssh-key: ${{ secrets.DEPLOY_KEY }} # https://github.com/sbellone/release-workflow-example - name: Setup uses: ./.github/actions/setup - name: Configure Git run: | git config user.name 'github-actions[bot]' git config user.email 'github-actions[bot]@users.noreply.github.com' - name: Upgrade NPM for Provence run: sudo npm i -g npm@latest - name: Bump and Release uses: aklinker1/zero-changelog/actions/release@b6fcca17cebfc45f996b80fe5926da924d8441f8 # 0.2.1 with: bump: ${{ inputs.bump }} path: packages/${{ inputs.package }} # Include documentation updates in WXT's releases additionalDirs: |- ${{ case( inputs.package == 'wxt', 'docs', '' ) }} # Use package name in commit message commitTemplate: |- ${{ case( inputs.package == 'wxt', 'chore(release): wxt v{{version}}', 'chore(release): @wxt-dev/{{dirname}} v{{version}}' ) }} # Use package name in release name releaseNameTemplate: |- ${{ case( inputs.package == 'wxt', 'wxt v{{version}}', '@wxt-dev/{{dirname}} v{{version}}' ) }} # Update lockfile with new versions since it includes the package versions preCommitCommands: |- bun i publishCommands: |- bun pm pack npm publish *.tgz dryRun: ${{ inputs.dryRun }} dryRunPublishCommands: |- bun pm pack npm publish *.tgz --dry-run githubToken: ${{ secrets.GITHUB_TOKEN }} latestRelease: ${{ inputs.package == 'wxt' }}