From 5e854b9d1d40714c47b065e2a8f2be7ea674e3d0 Mon Sep 17 00:00:00 2001 From: Guilherme Gomes Date: Thu, 15 May 2025 19:27:34 -0300 Subject: [PATCH] chore(workflows): simplify Docker image workflow and update job structure --- .github/workflows/docker-image.yml | 65 +++++++------------ .../publish_docker_image_homolog.yml | 48 ++++++++++++++ .../workflows/publish_docker_image_latest.yml | 48 ++++++++++++++ 3 files changed, 120 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/publish_docker_image_homolog.yml create mode 100644 .github/workflows/publish_docker_image_latest.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index c384c639..3aeaf723 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,65 +1,48 @@ -name: Docker Image CI +name: Build Docker image on: push: - branches: ["main", "develop"] - pull_request: - branches: ["main", "develop"] - -env: - GHCR_REGISTRY: ghcr.io - DOCKERHUB_REGISTRY: docker.io - IMAGE_NAME: ${{ github.repository }} - DOCKERHUB_IMAGE: evoapicloud/evo-ai + tags: + - "*.*.*" jobs: - build-and-push: + build_deploy: + name: Build and Deploy runs-on: ubuntu-latest permissions: contents: read packages: write - steps: - - name: Checkout repository + - name: Checkout uses: actions/checkout@v4 - - name: Log in to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ${{ env.GHCR_REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - registry: ${{ env.DOCKERHUB_REGISTRY }} - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Extract metadata for Docker + - name: Docker meta id: meta uses: docker/metadata-action@v5 with: - images: | - ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }} - ${{ env.DOCKERHUB_REGISTRY }}/${{ env.DOCKERHUB_IMAGE }} - tags: | - type=raw,value=develop,enable=${{ github.ref == format('refs/heads/{0}', 'develop') }} - type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} - type=sha - type=ref,event=branch - type=ref,event=tag + images: evoapicloud/evo-ai + tags: type=semver,pattern=v{{version}} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + 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: . - push: ${{ github.event_name != 'pull_request' }} + 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 }} \ No newline at end of file diff --git a/.github/workflows/publish_docker_image_homolog.yml b/.github/workflows/publish_docker_image_homolog.yml new file mode 100644 index 00000000..c67dbb8a --- /dev/null +++ b/.github/workflows/publish_docker_image_homolog.yml @@ -0,0 +1,48 @@ +name: Build Docker image + +on: + push: + branches: + - develop + +jobs: + build_deploy: + name: Build and Deploy + runs-on: ubuntu-latest + 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: homolog + + - 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: + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} \ No newline at end of file diff --git a/.github/workflows/publish_docker_image_latest.yml b/.github/workflows/publish_docker_image_latest.yml new file mode 100644 index 00000000..12875f0d --- /dev/null +++ b/.github/workflows/publish_docker_image_latest.yml @@ -0,0 +1,48 @@ +name: Build Docker image + +on: + push: + branches: + - main + +jobs: + build_deploy: + name: Build and Deploy + runs-on: ubuntu-latest + 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: latest + + - 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: + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} \ No newline at end of file