From 6984d5163fa022028d8d9e8f7a1d2824487d8a56 Mon Sep 17 00:00:00 2001 From: Thomas Payet Date: Fri, 20 Jun 2025 17:27:55 +0200 Subject: [PATCH] Update Docker build workflow to push on every main commit - Build and push 'latest' tag on every commit to main - Build and push versioned tag only when version changes - Split Docker builds into two separate jobs for clarity - This ensures Docker Hub always has the latest image available --- .github/workflows/publish.yml | 61 ++++++++++++++++++++++++----------- README.md | 2 +- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8cb0b6a..ea767d7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,19 +10,26 @@ jobs: runs-on: ubuntu-latest outputs: version_changed: ${{ steps.check_version.outputs.version_changed }} - new_version: ${{ steps.check_version.outputs.new_version }} + current_version: ${{ steps.get_version.outputs.current_version }} steps: - uses: actions/checkout@v3 with: fetch-depth: 2 + - name: Get current version + id: get_version + run: | + CURRENT_VERSION=$(grep "version = " pyproject.toml | cut -d'"' -f2) + echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT + - name: Check if version changed id: check_version run: | - git diff HEAD^ HEAD -- pyproject.toml | grep -q "version = " || exit 0 - NEW_VERSION=$(grep "version = " pyproject.toml | cut -d'"' -f2) - echo "version_changed=true" >> $GITHUB_OUTPUT - echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + if git diff HEAD^ HEAD -- pyproject.toml | grep -q "version = "; then + echo "version_changed=true" >> $GITHUB_OUTPUT + else + echo "version_changed=false" >> $GITHUB_OUTPUT + fi build-and-publish-pypi: needs: check-version @@ -56,9 +63,7 @@ jobs: verbose: true print-hash: true - build-and-publish-docker: - needs: check-version - if: needs.check-version.outputs.version_changed == 'true' + build-and-publish-docker-latest: runs-on: ubuntu-latest steps: @@ -76,22 +81,42 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Extract metadata - id: meta - uses: docker/metadata-action@v5 + - name: Build and push latest Docker image + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: getmeili/meilisearch-mcp:latest + cache-from: type=gha + cache-to: type=gha,mode=max + + build-and-publish-docker-versioned: + needs: check-version + if: needs.check-version.outputs.version_changed == 'true' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 with: - images: getmeili/meilisearch-mcp - tags: | - type=raw,value=${{ needs.check-version.outputs.new_version }} - type=raw,value=latest + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push Docker image + - name: Build and push versioned Docker image uses: docker/build-push-action@v5 with: context: . platforms: linux/amd64,linux/arm64 push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + tags: getmeili/meilisearch-mcp:${{ needs.check-version.outputs.current_version }} cache-from: type=gha cache-to: type=gha,mode=max \ No newline at end of file diff --git a/README.md b/README.md index 0c8fabb..0672dff 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ uv pip install -e . Perfect for containerized environments like n8n workflows! -#### From Docker Hub (Recommended) +#### From Docker Hub ```bash # Pull the latest image