name: Publish on: push: branches: - main - next - "maintenance/v*" # branch rulesets don't support v[0-9]+ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false queue: max permissions: {} # each job should define its own permission explicitly jobs: version: name: Version runs-on: ubuntu-latest environment: version timeout-minutes: 20 outputs: hasChangesets: ${{ steps.changesets.outputs.hasChangesets }} permissions: contents: read # to check out repo (actions/checkout) steps: - name: Check out repo uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false - uses: ./.github/actions/ci-setup with: skip-cache: true # avoid cache poisoning attacks - name: Build run: pnpm build - uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 id: app-token with: client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} permission-contents: write # to create version commits (changesets/action) permission-pull-requests: write # to create pull request (changesets/action) - name: Create or update release pull request id: changesets uses: ./ with: github-token: ${{ steps.app-token.outputs.token }} version: pnpm bump publish: name: Publish if: needs.version.outputs.hasChangesets == 'false' needs: version runs-on: ubuntu-latest environment: marketplace timeout-minutes: 20 permissions: contents: write # to create release and have it authored by github-actions (changesets/action) steps: - uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0 id: app-token with: client-id: ${{ vars.APP_CLIENT_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} permission-contents: write # to bypass branch and tag protection rules (release.ts) - name: Check out repo uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false token: ${{ steps.app-token.outputs.token }} - uses: ./.github/actions/ci-setup with: skip-cache: true # avoid cache poisoning attacks - name: Build run: pnpm build - name: Publish to marketplace uses: ./ with: publish: pnpm release