name: web on: push: branches: - main pull_request: branches: - main permissions: contents: read pull-requests: write deployments: write defaults: run: working-directory: ./web jobs: validate: name: Validate runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node: [24] steps: - name: Checkout ๐Ÿ›Ž uses: actions/checkout@master - uses: pnpm/action-setup@v6 name: Install pnpm with: version: 11.11.0 - name: Install dependencies ๐Ÿ“ฆ run: pnpm install --trust-lockfile - name: Run linter ๐Ÿ‘€ run: pnpm lint - name: Run tests ๐Ÿงช run: pnpm test - name: Build ๐Ÿ—๏ธ run: mv .env.production .env && echo "GITHUB_SHA=${GITHUB_SHA}" >> .env && pnpm run generate deploy: name: Deploy needs: validate if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Checkout ๐Ÿ›Ž uses: actions/checkout@master - name: Setup Node ๐ŸŸข uses: actions/setup-node@v7 with: node-version: '24.18' - uses: pnpm/action-setup@v6 name: Install pnpm with: version: 11.11.0 - name: Install dependencies ๐Ÿ“ฆ run: pnpm install --trust-lockfile - name: Build ๐Ÿ—๏ธ run: mv .env.production .env && echo "GITHUB_SHA=${GITHUB_SHA}" >> .env && pnpm run generate - name: Cloudflare Deploy ๐Ÿš€ uses: cloudflare/wrangler-action@v4 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: pages deploy web/.output/public --project-name=httpsms gitHubToken: ${{ secrets.GITHUB_TOKEN }} - name: Firebase Deploy ๐Ÿš€ uses: FirebaseExtended/action-hosting-deploy@500ac625ca2dd40cbd15f7659af953801858032a with: repoToken: "${{ secrets.GITHUB_TOKEN }}" channelId: live entryPoint: "./web" firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_HTTPSMS_86C51 }}" projectId: httpsms-86c51