|
|
|
@ -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 \ |
|
|
|
|