File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -108,17 +108,33 @@ jobs:
108108 docker login -u sys-lzdev --password-stdin ghcr.io
109109 - name : Build image
110110 if : matrix.os.name != 'windows'
111+ # Retry the build to ride out transient Docker Hub registry timeouts
112+ # (e.g. `dial tcp ...:443: i/o timeout` resolving docker/dockerfile:1.4).
111113 run : |
112114 docker info
113- docker build \
114- --platform linux/amd64 \
115- ${{ matrix.os.vmaj != '' && format(' \
116- --build-arg VMAJ={0} \
117- --build-arg VMIN={1} ', matrix.os.vmaj, matrix.os.vmin) || ' '
118- }}\
119- --pull \
120- --tag ${DOCKER_IMAGE}:${{ needs.config.outputs.ref-slug }} \
121- - < .github/docker/${{ matrix.os.name }}.Dockerfile
115+ build_image() {
116+ docker build \
117+ --platform linux/amd64 \
118+ ${{ matrix.os.vmaj != '' && format(' \
119+ --build-arg VMAJ={0} \
120+ --build-arg VMIN={1} ', matrix.os.vmaj, matrix.os.vmin) || ' '
121+ }}\
122+ --pull \
123+ --tag ${DOCKER_IMAGE}:${{ needs.config.outputs.ref-slug }} \
124+ - < .github/docker/${{ matrix.os.name }}.Dockerfile
125+ }
126+ attempt=0
127+ max_attempts=3
128+ until build_image; do
129+ attempt=$((attempt+1))
130+ if [ "$attempt" -ge "$max_attempts" ]; then
131+ echo "docker build failed after ${attempt} attempts" >&2
132+ exit 1
133+ fi
134+ delay=$((attempt*15))
135+ echo "docker build attempt ${attempt} failed; retrying in ${delay}s" >&2
136+ sleep "$delay"
137+ done
122138 - name : Setup Windows build environment
123139 if : matrix.os.name == 'windows'
124140 uses : ilammy/msvc-dev-cmd@v1
Original file line number Diff line number Diff line change @@ -133,17 +133,33 @@ jobs:
133133 docker info
134134 - name : Build image
135135 if : matrix.os.name != 'windows'
136+ # Retry the build to ride out transient Docker Hub registry timeouts
137+ # (e.g. `dial tcp ...:443: i/o timeout` resolving docker/dockerfile:1.4).
136138 run : |
137139 docker info
138- docker build \
139- --platform linux/amd64 \
140- ${{ matrix.os.vmaj != '' && format(' \
141- --build-arg VMAJ={0} \
142- --build-arg VMIN={1} ', matrix.os.vmaj, matrix.os.vmin) || ' '
143- }}\
144- --pull \
145- --tag ${DOCKER_IMAGE}:${{ needs.config.outputs.ref-slug }} \
146- - < .github/docker/${{ matrix.os.name }}.Dockerfile
140+ build_image() {
141+ docker build \
142+ --platform linux/amd64 \
143+ ${{ matrix.os.vmaj != '' && format(' \
144+ --build-arg VMAJ={0} \
145+ --build-arg VMIN={1} ', matrix.os.vmaj, matrix.os.vmin) || ' '
146+ }}\
147+ --pull \
148+ --tag ${DOCKER_IMAGE}:${{ needs.config.outputs.ref-slug }} \
149+ - < .github/docker/${{ matrix.os.name }}.Dockerfile
150+ }
151+ attempt=0
152+ max_attempts=3
153+ until build_image; do
154+ attempt=$((attempt+1))
155+ if [ "$attempt" -ge "$max_attempts" ]; then
156+ echo "docker build failed after ${attempt} attempts" >&2
157+ exit 1
158+ fi
159+ delay=$((attempt*15))
160+ echo "docker build attempt ${attempt} failed; retrying in ${delay}s" >&2
161+ sleep "$delay"
162+ done
147163 - name : Setup Windows build environment
148164 if : matrix.os.name == 'windows'
149165 uses : ilammy/msvc-dev-cmd@v1
You can’t perform that action at this time.
0 commit comments