Description
In https://internals.rust-lang.org/t/updates-on-rusts-ci-uploads/6062 I found out that the rust-lang-ci
S3 bucket, which Servo relies on, is ephemeral. Only nigthlies are kept around long-term. I’ll switch Servo to download from http://static.rust-lang.org/dist/
where possible, but there’s one thing missing: tarballs for rustc "alt" builds. I’d like to have these somewhere where they’ll stay available.
I assume that the reason for removing old files from rust-lang-ci
/ rust-lang-ci2
is the cost in storage space for many build artifacts for every single merged PR. So this proposal limits the amount of files to keep:
- To one set per Nightly version
- To just one rustc tarball per supported platform.
First, we could limit the amount of files uploaded to rust-lang-ci2/rustc-builds-alt
in the first place. Based on running aws s3 ls --no-sign-request
, CI produces:
cargo-nightly-$HOST.tar.$Z
rls-nightly-$HOST.tar.$Z
rust-analysis-nightly-$HOST.tar.$Z
rustc-nightly-$HOST.tar.$Z
rustc-nightly-src.tar.$Z
rust-docs-nightly-$HOST.tar.$Z
rust-nightly-$HOST.exe
rust-nightly-$HOST.msi
rust-nightly-$HOST.pkg
rust-nightly-$HOST.tar.$Z
rust-src-nightly.tar.$Z
rust-std-nightly-$HOST.tar.$Z
… for each combination of $Z
in gz
or xz
, and $HOST
in x86_64-apple-darwin
, x86_64-pc-windows-msvc
, and x86_64-unknown-linux-gnu
.
Everything other than rustc-nightly-$HOST.tar.$Z
is identical in rustc-builds
and rustc-builds-alt
. So it could be dropped or not uploaded in the first place or not not built in the first place. This probably involves making src/ci/docker/dist-x86_64-linux/Dockerfile
do things more differently when the DEPLOY_ALT
env variable is set.
(Perhaps gz
can be dropped too? Old rustup versions that don’t support xz
don’t support fetching alt builds either.)
Separately, https://github.com/rust-lang/rust-central-station/blob/master/promote-release/src/main.rs (at least) needs to be modified to copy/upload these extra tarballs. I don’t know if it’s preferable to do this when self.release == "nightly"
or in a separate cron job with self.release == "nightly-alt"
.
Ultimately this will also be a step toward rust-lang/rustup#1099, but Servo can already use this in the meantime.
@aturon, @alexcrichton, how does this all sound?