From 0064e3720653ced63d8ca0594f0df3e55e228a71 Mon Sep 17 00:00:00 2001 From: chrislu Date: Thu, 27 Nov 2025 22:50:29 -0800 Subject: [PATCH] fix build issues --- .github/workflows/container_latest.yml | 35 +++++++++++++++++++++--- .github/workflows/container_release1.yml | 30 +++++++++++++++++++- .github/workflows/container_release2.yml | 30 +++++++++++++++++++- 3 files changed, 89 insertions(+), 6 deletions(-) diff --git a/.github/workflows/container_latest.yml b/.github/workflows/container_latest.yml index 12c3b9d01..bffc7b15f 100644 --- a/.github/workflows/container_latest.yml +++ b/.github/workflows/container_latest.yml @@ -134,15 +134,42 @@ jobs: password: ${{ secrets.GHCR_TOKEN }} - name: Create and push manifest run: | - # Create manifest for Docker Hub - docker buildx imagetools create -t chrislusf/seaweedfs:latest \ + # Function to retry command with exponential backoff + retry_with_backoff() { + local max_attempts=5 + local timeout=1 + local attempt=1 + local exit_code=0 + + while [ $attempt -le $max_attempts ]; do + if "$@"; then + return 0 + else + exit_code=$? + fi + + if [ $attempt -lt $max_attempts ]; then + echo "Attempt $attempt failed. Retrying in ${timeout}s..." >&2 + sleep $timeout + timeout=$((timeout * 2)) + fi + + attempt=$((attempt + 1)) + done + + echo "Command failed after $max_attempts attempts" >&2 + return $exit_code + } + + # Create manifest for Docker Hub with retry + retry_with_backoff docker buildx imagetools create -t chrislusf/seaweedfs:latest \ chrislusf/seaweedfs:latest-amd64 \ chrislusf/seaweedfs:latest-arm64 \ chrislusf/seaweedfs:latest-arm \ chrislusf/seaweedfs:latest-386 - # Create manifest for GHCR - docker buildx imagetools create -t ghcr.io/chrislusf/seaweedfs:latest \ + # Create manifest for GHCR with retry + retry_with_backoff docker buildx imagetools create -t ghcr.io/chrislusf/seaweedfs:latest \ ghcr.io/chrislusf/seaweedfs:latest-amd64 \ ghcr.io/chrislusf/seaweedfs:latest-arm64 \ ghcr.io/chrislusf/seaweedfs:latest-arm \ diff --git a/.github/workflows/container_release1.yml b/.github/workflows/container_release1.yml index 6c83e4a18..cf74ea3ca 100644 --- a/.github/workflows/container_release1.yml +++ b/.github/workflows/container_release1.yml @@ -114,7 +114,35 @@ jobs: password: ${{ secrets.DOCKER_PASSWORD }} - name: Create and push manifest run: | - docker buildx imagetools create -t ${{ steps.docker_meta.outputs.tags }} \ + # Function to retry command with exponential backoff + retry_with_backoff() { + local max_attempts=5 + local timeout=1 + local attempt=1 + local exit_code=0 + + while [ $attempt -le $max_attempts ]; do + if "$@"; then + return 0 + else + exit_code=$? + fi + + if [ $attempt -lt $max_attempts ]; then + echo "Attempt $attempt failed. Retrying in ${timeout}s..." >&2 + sleep $timeout + timeout=$((timeout * 2)) + fi + + attempt=$((attempt + 1)) + done + + echo "Command failed after $max_attempts attempts" >&2 + return $exit_code + } + + # Create manifest with retry + retry_with_backoff docker buildx imagetools create -t ${{ steps.docker_meta.outputs.tags }} \ ${{ steps.docker_meta.outputs.tags }}-amd64 \ ${{ steps.docker_meta.outputs.tags }}-arm64 \ ${{ steps.docker_meta.outputs.tags }}-arm \ diff --git a/.github/workflows/container_release2.yml b/.github/workflows/container_release2.yml index e5b5efaf0..fd14b8f54 100644 --- a/.github/workflows/container_release2.yml +++ b/.github/workflows/container_release2.yml @@ -115,7 +115,35 @@ jobs: password: ${{ secrets.DOCKER_PASSWORD }} - name: Create and push manifest run: | - docker buildx imagetools create -t ${{ steps.docker_meta.outputs.tags }} \ + # Function to retry command with exponential backoff + retry_with_backoff() { + local max_attempts=5 + local timeout=1 + local attempt=1 + local exit_code=0 + + while [ $attempt -le $max_attempts ]; do + if "$@"; then + return 0 + else + exit_code=$? + fi + + if [ $attempt -lt $max_attempts ]; then + echo "Attempt $attempt failed. Retrying in ${timeout}s..." >&2 + sleep $timeout + timeout=$((timeout * 2)) + fi + + attempt=$((attempt + 1)) + done + + echo "Command failed after $max_attempts attempts" >&2 + return $exit_code + } + + # Create manifest with retry + retry_with_backoff docker buildx imagetools create -t ${{ steps.docker_meta.outputs.tags }} \ ${{ steps.docker_meta.outputs.tags }}-amd64 \ ${{ steps.docker_meta.outputs.tags }}-arm64 \ ${{ steps.docker_meta.outputs.tags }}-arm \