From 16c4232ae1e5d387ebdafdaf8751ce151c057cf1 Mon Sep 17 00:00:00 2001 From: Levi van Noort <73097785+levivannoort@users.noreply.github.com> Date: Mon, 29 Jun 2026 14:27:04 +0200 Subject: [PATCH] ci: push production image to DockerHub alongside GHCR The production workflow's "Login to DockerHub" step actually targeted ghcr.io, so production images were only ever pushed to GHCR. Add a real Docker Hub login and emit both registry tags, matching staging. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/production.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index 07a6a2af53..f36eda653b 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -10,6 +10,9 @@ env: PROJECT: website DECLARATIVE_OWNER: appwrite-labs DECLARATIVE_REPOSITORY: assets-applications + REGISTRY_GITHUB: ghcr.io + REGISTRY_DOCKERHUB: docker.io + IMAGE_NAME: appwrite/website TAG: ${{ github.event.release.tag_name || github.sha }} jobs: @@ -19,19 +22,28 @@ jobs: - name: Checkout the repo uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Login to DockerHub + - name: Login to GitHub Container Registry uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: - registry: ghcr.io + registry: ${{ env.REGISTRY_GITHUB }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to Docker Hub + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 + with: + registry: ${{ env.REGISTRY_DOCKERHUB }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: . push: true - tags: ghcr.io/appwrite/website:${{ env.TAG }} + tags: | + ${{ env.REGISTRY_GITHUB }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} + ${{ env.REGISTRY_DOCKERHUB }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} build-args: | "PUBLIC_APPWRITE_ENDPOINT=${{ vars.PUBLIC_APPWRITE_ENDPOINT }}" "PUBLIC_APPWRITE_DASHBOARD=${{ vars.PUBLIC_APPWRITE_DASHBOARD }}"