diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml new file mode 100644 index 000000000..a80f1f442 --- /dev/null +++ b/.github/workflows/dockerhub.yml @@ -0,0 +1,51 @@ +name: build | Build and Push Docker Image to DockerHub + +on: + push: + branches: + - main + +jobs: + docker-build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract Git information + id: git-info + run: | + echo "BRANCH_NAME=${GITHUB_REF_NAME}" >> "$GITHUB_ENV" + echo "COMMIT_SHA=${GITHUB_SHA::7}" >> "$GITHUB_ENV" + + - name: Build and Push Docker Image + run: | + IMAGE_NAME=cognee/cognee + TAG_VERSION="${BRANCH_NAME}-${COMMIT_SHA}" + + echo "Building image: ${IMAGE_NAME}:${TAG_VERSION}" + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --push \ + --tag "${IMAGE_NAME}:${TAG_VERSION}" \ + --tag "${IMAGE_NAME}:latest" \ + . + + - name: Verify pushed Docker images + run: | + # Verify both platform variants + for PLATFORM in "linux/amd64" "linux/arm64"; do + echo "Verifying image for $PLATFORM..." + docker buildx imagetools inspect "${IMAGE_NAME}:${TAG_VERSION}" --format "{{.Manifest.$PLATFORM.Digest}}" + done + echo "Successfully verified images in Docker Hub"