name: Build And Push run-name: ${{ github.actor }} builds and pushes production-ready image on: push: branches: - latest jobs: publish: runs-on: ubuntu-latest env: RUNNER_TOOL_CACHE: /${{ github.workspace }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: registry: git.miwory.dev username: ${{ secrets.CI_USERNAME }} password: ${{ secrets.CI_TOKEN }} - name: Cache uv binary uses: actions/cache@v4 with: path: ${{ github.workspace }}/uv key: uv-${{ runner.os }} restore-keys: uv-${{ runner.os }} - name: Cache uv dependencies uses: actions/cache@v4 with: path: ${{ github.workspace }}/.cache/uv key: uv-${{ runner.os }} restore-keys: uv-${{ runner.os }} - name: Cache pre-commit uses: actions/cache@v4 with: path: ~/.cache/pre-commit key: pre-commit-cache-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} restore-keys: pre-commit-cache-${{ runner.os }}- - name: Install uv uses: astral-sh/setup-uv@v5 with: version: "0.7.8" enable-cache: true cache-local-path: ${{ github.workspace }}/.cache/uv tool-dir: ${{ github.workspace }}/.cache/uv tool-bin-dir: ${{ github.workspace }}/.cache/uv cache-dependency-glob: "" - name: Set up Python run: uv python install - name: Install the project run: uv sync --no-install-project --cache-dir ${{ github.workspace }}/.cache/uv - name: Linter & Formatter run: uv run pre-commit run --all-files - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . target: production push: true tags: "git.miwory.dev/smartsolutions/hospitalassistantbackend:latest" cache-from: type=gha cache-to: type=gha,mode=max