name: ci-web # CI pour web (Vite/React) : install, typecheck, tests, build, puis publication # de l'image Docker sur push vers main. on: push: branches: [main] paths: - "web/**" pull_request: paths: - "web/**" workflow_dispatch: {} jobs: test: runs-on: ubuntu-latest defaults: run: working-directory: web steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" cache-dependency-path: web/package-lock.json - name: Install dependencies run: npm ci - name: Typecheck run: npm run typecheck - name: Test run: npm test continue-on-error: true - name: Build run: npm run build - name: Checkout uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build & push web uses: docker/build-push-action@v6 with: context: ./web file: ./web/Dockerfile push: true tags: | ${{ secrets.DOCKERHUB_USERNAME }}/omnex-web:latest