name: Docker Test & Publish on: push: tags: - "*" pull_request: branches: - "main" paths: - "Dockerfile" permissions: contents: read packages: write jobs: base: name: Test base image build runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: # Configure build environment - name: Checkout uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 # Build the image - name: Build base image uses: docker/build-push-action@v4 with: context: . push: false platforms: linux/amd64,linux/arm64 tags: ghcr.io/${{ github.repository_owner }}/base:latest cache-from: type=gha,scope=buildx-base-multi-arch cache-to: type=gha,scope=buildx-base-multi-arch,mode=max publish: runs-on: self-hosted if: github.event_name != 'pull_request' name: Publish Docker images steps: # Configure build environment - name: Checkout uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 # Authenticate with Docker Hub and GHCR - name: Login to DockerHub uses: docker/login-action@v2 with: registry: docker.io username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to Github Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} # Build the image - name: Build base image uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 tags: ghcr.io/${{ github.repository_owner }}/base:latest # revoltchat/server - name: Docker meta id: meta-delta uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/server ghcr.io/revoltchat/server - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/delta/Dockerfile tags: ${{ steps.meta-delta.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-delta.outputs.labels }} # revoltchat/bonfire - name: Docker meta id: meta-bonfire uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/bonfire ghcr.io/revoltchat/bonfire - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/bonfire/Dockerfile tags: ${{ steps.meta-bonfire.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-bonfire.outputs.labels }} # revoltchat/autumn - name: Docker meta id: meta-autumn uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/autumn ghcr.io/revoltchat/autumn - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/services/autumn/Dockerfile tags: ${{ steps.meta-autumn.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-autumn.outputs.labels }} # revoltchat/january - name: Docker meta id: meta-january uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/january ghcr.io/revoltchat/january - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/services/january/Dockerfile tags: ${{ steps.meta-january.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-january.outputs.labels }} # revoltchat/gifbox - name: Docker meta id: meta-gifbox uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/gifbox ghcr.io/revoltchat/gifbox - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/services/gifbox/Dockerfile tags: ${{ steps.meta-gifbox.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-gifbox.outputs.labels }} # revoltchat/crond - name: Docker meta id: meta-crond uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/crond ghcr.io/revoltchat/crond - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/daemons/crond/Dockerfile tags: ${{ steps.meta-crond.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-crond.outputs.labels }} # revoltchat/pushd - name: Docker meta id: meta-pushd uses: docker/metadata-action@v4 with: images: | docker.io/revoltchat/pushd ghcr.io/revoltchat/pushd - name: Publish uses: docker/build-push-action@v4 with: context: . push: true platforms: linux/amd64,linux/arm64 file: crates/daemons/pushd/Dockerfile tags: ${{ steps.meta-pushd.outputs.tags }} build-args: | BASE_IMAGE=ghcr.io/${{ github.repository_owner }}/base:latest labels: ${{ steps.meta-pushd.outputs.labels }}