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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 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@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1 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@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 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