name: release/deploy-production on: release: types: [published] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: 'pages' cancel-in-progress: false env: BUILD_PATH: '.' jobs: setup: name: Setup stage runs-on: ubuntu-latest if: ${{ ! github.event.release.prerelease }} steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.event.release.tag_name }} - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 9.12.3 - name: Setup Node.js with pnpm cache uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' - name: Cache pnpm store id: cache-pnpm-store uses: actions/cache@v3 with: path: ~/.pnpm-store key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - name: Install dependencies run: pnpm install --frozen-lockfile build: name: Setup stage runs-on: ubuntu-latest needs: setup steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.event.release.tag_name }} - name: Install pnpm uses: pnpm/action-setup@v4 with: version: 9.12.3 - uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build Stage run: pnpm build - name: Upload artifacts uses: actions/upload-pages-artifact@v3 with: path: ./dist deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} needs: build runs-on: ubuntu-latest name: Deploy stage steps: - name: Deploy in production id: deployment uses: actions/deploy-pages@v4