diff --git a/.github/workflows/web-ci.yml b/.github/workflows/web-ci.yml new file mode 100644 index 000000000..a9974746a --- /dev/null +++ b/.github/workflows/web-ci.yml @@ -0,0 +1,52 @@ +name: Web CI + +on: + push: + branches: [master, dev] + paths: + - "web/**" + - ".github/workflows/web-ci.yml" + pull_request: + branches: [master, dev] + paths: + - "web/**" + - ".github/workflows/web-ci.yml" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + format-lint-typecheck-build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: web + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: "1.3.12" + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Format check + run: bun run format:check + + - name: Lint + run: bun run lint + + - name: Type check + run: bun run type-check + + - name: Next build + run: bun run build + env: + NEXT_TELEMETRY_DISABLED: "1" + + - name: OpenNext (Cloudflare) build + run: bunx opennextjs-cloudflare build + env: + NEXT_TELEMETRY_DISABLED: "1" diff --git a/.github/workflows/web-deploy.yml b/.github/workflows/web-deploy.yml new file mode 100644 index 000000000..9bee30cf2 --- /dev/null +++ b/.github/workflows/web-deploy.yml @@ -0,0 +1,55 @@ +name: Web Deploy (Cloudflare Workers) + +on: + workflow_dispatch: + inputs: + environment: + description: "Wrangler environment (leave blank for default)" + required: false + default: "" + push: + branches: [master] + paths: + - "web/**" + - ".github/workflows/web-deploy.yml" + +concurrency: + group: web-deploy-${{ github.ref }} + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: web-production + url: https://ohmyopenagent.com + defaults: + run: + working-directory: web + permissions: + contents: read + deployments: write + steps: + - uses: actions/checkout@v4 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: "1.3.12" + + - name: Install dependencies + run: bun install --frozen-lockfile + + - name: Build with OpenNext for Cloudflare + run: | + bun run prebuild + bunx opennextjs-cloudflare build + env: + NEXT_TELEMETRY_DISABLED: "1" + + - name: Deploy to Cloudflare Workers + uses: cloudflare/wrangler-action@v3 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + workingDirectory: web + command: ${{ inputs.environment && format('deploy --env {0}', inputs.environment) || 'deploy' }}