name: Publish www on: push: branches: - dev paths: - 'apps/www/**' pull_request: branches: - dev paths: - 'apps/www/**' pull_request_target: types: # When a created pull request from forked repo, it will be comment 'Should deploy to add label' - opened # When a labeled '🚀request-deploy' pull request from forked repo, it will be deploy to Cloudflare Pages - labeled paths: - 'apps/www/**' # Allows you to run this workflow manually from the Actions tab # eslint-disable-next-line yml/no-empty-mapping-value workflow_dispatch: permissions: # default contents: read & write (in forked repos, only read) contents: write # default deployments: read & write (in forked repos, only read) deployments: write # default pull-requests: read & write (in forked repos, only read) pull-requests: write jobs: publish: runs-on: ubuntu-latest name: Publish to Cloudflare Pages # push event in main branch # workflow_dispatch event # pull_request event from not forked repo # pull_request_target event with label "🚀request-deploy" from forked repo if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false) || (github.event_name == 'pull_request_target' && github.event.action == 'labeled' && github.event.pull_request.head.repo.fork == true && contains(github.event.label.name, '🚀request-deploy')) }} steps: - name: Checkout uses: actions/checkout@v3 # Run a build step here - name: Setup Node.js environment uses: actions/setup-node@v2 with: node-version: 18 - uses: pnpm/action-setup@v2 name: Install pnpm with: version: 8 run_install: false - name: Get pnpm store directory shell: bash run: | echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v3 name: Setup pnpm cache with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm i --frozen-lockfile - name: Build www run: pnpm build # Run a action to publish docs - name: Publish to Cloudflare Pages uses: cloudflare/pages-action@v1.5.0 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} projectName: shadcn-vue directory: .vitepress/dist # Optional: Enable this if you want to have GitHub Deployments triggered gitHubToken: ${{ secrets.GITHUB_TOKEN }} # Optional: Switch what branch you are publishing to. # By default this will be the branch which triggered this workflow # branch: main # Optional: Change the working directory workingDirectory: apps/www wranglerVersion: '3' - name: Create PR comment if: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_target' }} uses: mshick/add-pr-comment@v2 with: message: | ### ⚡ Successfully Cloudflare Pages deployed! | Name | Link | | :--- | :--- | | Latest commit | ${{ github.event.pull_request.head.sha || github.sha }} | | Latest deploy log | ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | | Deploy Preview Url | [${{ steps.cloudflare-pages-deploy.outputs.url }}](${{ steps.cloudflare-pages-deploy.outputs.url }}) | | Environment | ${{ steps.cloudflare-pages-deploy.outputs.environment }} | - name: Remove label if: ${{ github.event_name == 'pull_request_target' && contains(github.event.label.name, '🚀request-deploy') }} uses: actions/github-script@v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | github.rest.issues.removeLabel({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, name: ['🚀request-deploy'] }) # Comment on PR from the fork comment: name: Comment runs-on: ubuntu-latest # pull_request_target opened event from forked repo if: ${{ github.event_name == 'pull_request_target' && github.event.action == 'opened' && github.event.pull_request.head.repo.fork == true }} steps: - name: Create PR comment run: | cat << EOF > comment.md # ⚠️ \`🚀request-deploy\` label is required for deployment This repository is a forked repository. Due to security reasons, deployment from forked repositories does not happen automatically. To request deployment, please add the \`🚀request-deploy\` label to this pull request. (Only certain members have the ability to add labels.) EOF gh pr comment ${{ github.event.number }} -R ${{ github.repository }} -F comment.md env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}