ci: retry native builder image downloads and stop masking failures
The v16.3.1-canary.10 publish failed because the aarch64-unknown-linux-musl
native build could not build its Docker builder image. curl hit a connection
reset while fetching the rustup installer:
#19 0.258 curl: (35) OpenSSL SSL_connect: Connection reset by peer
in connection to sh.rustup.rs:443
#19 DONE 0.3s
#20 0.060 /bin/sh: 1: rustup: not found
#20 ERROR: ... exit code: 127
The installer was piped straight into sh. A pipeline exits with the status of
its last command, and sh reading empty stdin exits 0, so the layer was recorded
as successful and produced an image with no Rust toolchain. The build then
failed on the following layer with "rustup: not found", which points at the
wrong problem.
Nothing published as a result: 16.3.1-canary.10 is absent from npm and the
canary dist-tag stayed on canary.9. The same commit's build-and-test run then
failed across the turbopack shards and integration windows, because
create-next-app pins the generated project to the in-repo version and npm
returned ETARGET for @next/env@16.3.1-canary.10.
Download the installer to a file and run it as a separate command, so a failed
download fails its own layer, and check rustup afterwards so a future
regression reports at the right place. The node tarball and cargo-binstall
downloads get the same retry loop, neither of which retried before. curl's own
--retry does not cover connection-level errors, and --retry-all-errors needs
curl 7.71 while Ubuntu 20.04 ships 7.68, so the retry is a shell loop rather
than a curl flag.