name: Build Homolog Images on: push: branches: - develop - homolog jobs: detect-changes: name: Detect Changes runs-on: ubuntu-latest outputs: backend-changed: ${{ steps.changes.outputs.backend }} frontend-changed: ${{ steps.changes.outputs.frontend }} steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Detect changes id: changes uses: dorny/paths-filter@v2 with: filters: | backend: - 'src/**' - 'migrations/**' - 'scripts/**' - 'Dockerfile' - 'pyproject.toml' - 'alembic.ini' - 'conftest.py' - 'setup.py' - 'Makefile' - '.dockerignore' frontend: - 'frontend/**' build-backend-homolog: name: Build Backend Homolog runs-on: ubuntu-latest needs: detect-changes if: needs.detect-changes.outputs.backend-changed == 'true' || github.event_name == 'push' permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v4 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: evoapicloud/evo-ai tags: | type=raw,value=homolog type=raw,value=homolog-{{sha}} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push id: docker_build uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} build-frontend-homolog: name: Build Frontend Homolog runs-on: ubuntu-latest needs: detect-changes if: needs.detect-changes.outputs.frontend-changed == 'true' || github.event_name == 'push' permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v4 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: evoapicloud/evo-ai-frontend tags: | type=raw,value=homolog type=raw,value=homolog-{{sha}} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push id: docker_build uses: docker/build-push-action@v5 with: context: ./frontend file: ./frontend/Dockerfile platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max build-args: | NEXT_PUBLIC_API_URL=${{ vars.NEXT_PUBLIC_API_URL_HOMOLOG || 'https://api-homolog-evoai.evoapicloud.com' }} - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }}