name: Build and Deploy on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Run type checking run: npm run type-check - name: Run linting run: npm run lint - name: Run tests run: npm run test:ci - name: Security audit run: npm audit --audit-level moderate build: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Build application run: npm run build env: VITE_APP_VERSION: ${{ github.sha }} VITE_BUILD_TIME: ${{ github.event.head_commit.timestamp }} - name: Analyze bundle size run: npx bundlesize - name: Upload build artifacts uses: actions/upload-artifact@v3 with: name: dist path: dist/ deploy: needs: build runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v3 - name: Download build artifacts uses: actions/download-artifact@v3 with: name: dist path: dist/ - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dist cname: miraclesinmotion.org