mirror of
https://github.com/stackblitz/bolt.new
synced 2024-11-27 14:32:46 +00:00
78 lines
2.1 KiB
YAML
78 lines
2.1 KiB
YAML
name: CI/CD
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
|
|
jobs:
|
|
test:
|
|
name: Test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup and Build
|
|
uses: ./.github/actions/setup-and-build
|
|
|
|
- name: Run type check
|
|
run: pnpm run typecheck
|
|
|
|
- name: Run ESLint
|
|
run: pnpm run lint
|
|
|
|
- name: Run tests
|
|
run: pnpm run test
|
|
|
|
build-and-deploy:
|
|
name: Build and Deploy
|
|
needs: test
|
|
runs-on: ubuntu-latest
|
|
environment: ${{ github.ref_name == 'master' && 'production' || 'staging' }}
|
|
if: ${{ github.ref != 'refs/heads/master' }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup and Build
|
|
uses: ./.github/actions/setup-and-build
|
|
|
|
- name: Deploy to Cloudflare
|
|
id: deploy
|
|
uses: cloudflare/wrangler-action@v3
|
|
with:
|
|
wranglerVersion: '* -w'
|
|
packageManager: pnpm
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
command: pages deploy
|
|
|
|
- name: Deployment URL
|
|
env:
|
|
DEPLOYMENT_URL: ${{ steps.deploy.outputs.deployment-url }}
|
|
run: echo $DEPLOYMENT_URL
|
|
|
|
- name: Comment on Commit
|
|
if: github.event_name == 'push'
|
|
uses: hasura/comment-progress@v2.3.0
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
repository: ${{ github.repository }}
|
|
id: deploy-preview-commit
|
|
commit-sha: ${{ github.sha }}
|
|
message: '${{ github.sha }} has been deployed to ${{ steps.deploy.outputs.deployment-url }} :rocket:'
|
|
recreate: true
|
|
|
|
- name: Comment on PR
|
|
if: github.event_name == 'pull_request'
|
|
uses: hasura/comment-progress@v2.3.0
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
repository: ${{ github.repository }}
|
|
id: deploy-preview-pr
|
|
number: ${{ github.event.number }}
|
|
message: '#${{ github.event.number }} has been deployed to ${{ steps.deploy.outputs.deployment-url }} :rocket:'
|
|
recreate: true
|