name: CI on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install node uses: actions/setup-node@v6 with: node-version: '22.x' - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 - name: Install dependencies run: bun ci - name: Build app run: bun --bun run build - name: Run type checking run: bun --bun run check - name: Run linting run: bun --bun run lint:check - name: Check formatting run: bun --bun run format:check build-docker-image: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Build uses: docker/setup-buildx-action@v3 - name: Log in to registry uses: docker/login-action@v3 with: registry: ${{ vars.INSTANCE_URL }} username: ${{ github.actor }} password: ${{ secrets.REGISTRY_ACCESS_TOKEN }} - name: Build and push image uses: docker/build-push-action@v6 with: push: true tags: ${{ vars.INSTANCE_URL }}/tech-reborn/phoenix:${{ github.sha }} # type-check: # runs-on: ubuntu-latest # container: # image: oven/bun:alpine # needs: install-dependencies # steps: # - name: Checkout code # uses: actions/checkout@v4 # - name: Download node_modules artifact # uses: actions/download-artifact@v3 # with: # name: node_modules # path: node_modules # - name: Run type checking # run: bun run check # lint: # runs-on: ubuntu-latest # container: # image: oven/bun:alpine # needs: install-dependencies # steps: # - name: Checkout code # uses: actions/checkout@v4 # - name: Download node_modules artifact # uses: actions/download-artifact@v3 # with: # name: node_modules # path: node_modules # - name: Run linting # run: bun run lint:check # format-check: # runs-on: ubuntu-latest # container: # image: oven/bun:alpine # needs: install-dependencies # steps: # - name: Checkout code # uses: actions/checkout@v4 # - name: Download node_modules artifact # uses: actions/download-artifact@v3 # with: # name: node_modules # path: node_modules # - name: Check formatting # run: bun run format:check # build: # runs-on: ubuntu-latest # container: # image: oven/bun:alpine # needs: install-dependencies # steps: # - name: Checkout code # uses: actions/checkout@v4 # - name: Download node_modules artifact # uses: actions/download-artifact@v3 # with: # name: node_modules # path: node_modules # - name: Build application # run: bun run build # - name: Upload build artifacts # uses: actions/upload-artifact@v4 # with: # name: build-output # path: build/ # retention-days: 7