Skip to content

ci: pull request and main preview deployment with cloudflare pages #78

ci: pull request and main preview deployment with cloudflare pages

ci: pull request and main preview deployment with cloudflare pages #78

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Install dependencies
run: npm install
- name: Run typecheck
run: npm run typecheck
build_deploy:
runs-on: ubuntu-latest
needs: typecheck
permissions:
contents: read
deployments: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Install dependencies
run: npm install
- name: Build frontend
run: npm run build
- name: Create Cloudflare Pages Project
run: |
curl -X POST "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/pages/projects" \
-H "Authorization: Bearer ${{ secrets.CF_API_TOKEN }}" \
-H "Content-Type: application/json" \
--data '{
"name": "${{ env.CF_PROJECT_NAME }}",
"github": {
"owner": "${{ github.repository_owner }}",
"repository": "${{ github.repository }}",
"branch": "main"
},
"production_branch": "main"
}'
env:
CF_PROJECT_NAME: cv-generator
- name: Deploy to Cloudflare Pages
id: deploy
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
accountId: ${{ secrets.CF_ACCOUNT_ID }}
wranglerVersion: "3.80.4"
command: pages deploy ./dist --project-name=${{ env.CF_PROJECT_NAME }}
env:
CF_PROJECT_NAME: cv-generator
- name: Comment PR with the Preview URL
if: github.event.pull_request.state == 'open'
uses: thollander/actions-comment-pull-request@v3
with:
message: |
Preview URL: ${{ steps.deploy.outputs.deployment-url }}
comment-tag: preview-url