name: Build Self-Hosting Docker Images on: push: branches: - main paths-ignore: - 'apple/**' - 'android/**' - 'self-hosting/**' jobs: build-self-hostdocker-images: name: Build self-host docker images permissions: contents: read packages: write attestations: write id-token: write runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: 'Login to GitHub container registry' uses: docker/login-action@v3 with: registry: ghcr.io username: ${{github.actor}} password: ${{secrets.GITHUB_TOKEN}} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push web uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-web:latest file: packages/web/Dockerfile-self cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-web:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-web:cache,mode=max - name: Build and push image-proxy uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-image-proxy:latest context: imageproxy/ file: imageproxy/Dockerfile cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-image-proxy:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-image-proxy:cache,mode=max - name: Build and push content-fetch uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-content-fetch:latest file: packages/content-fetch/Dockerfile cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-content-fetch:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-content-fetch:cache,mode=max - name: Build and push migrate uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-migrate:latest file: packages/db/Dockerfile cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-migrate:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-migrate:cache,mode=max - name: Build and push local-mail-watcher uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-local-mail-watcher:latest file: packages/local-mail-watcher/Dockerfile cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-local-mail-watcher:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-local-mail-watcher:cache,mode=max - name: Build and push backend uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-backend:latest file: packages/api/Dockerfile cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-backend:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-backend:cache,mode=max - name: Build and push queue-processor uses: docker/build-push-action@v6 with: platforms: linux/amd64,linux/arm64 push: true tags: ghcr.io/omnivore-app/sh-queue-processor:latest file: packages/api/queue-processor/Dockerfile cache-from: type=registry,ref=ghcr.io/omnivore-app/sh-queue-processor:cache cache-to: type=registry,ref=ghcr.io/omnivore-app/sh-queue-processor:cache,mode=max