aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/container_latest.yml35
-rw-r--r--.github/workflows/container_release1.yml30
-rw-r--r--.github/workflows/container_release2.yml30
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 \