Skip to content

Enable building complete release artifacts on Travis / Appveyor #38531

Closed
@brson

Description

@brson

Updated description

Active work items:

  • Turn on Travis/AppVeyor nightlies - update secrets.toml
  • Turn off Buildbot nightlies - comment out trigger in rust-buildbot
  • Separate --enable-extended from x.py test builds on all platforms (only Windows remaining)
  • Pull in Cargo as a submodule instead of from a pre-built location
  • Run cargo's test suite on select bots.
  • Turn off Cargo uploads

Original description

Converting our travis/appveyor CI to do full release builds. By doing release builds on every platform on every commit we should stop breaking nightlies so much.

More steps

At this point we've got rls sufficiently packaged that we can flip the
switch. Next steps are to flip that switch.

  • Make and deploy patch to rust-buildbot to add rls to manifests as optional
  • Make a new nightly to test RLS deployment
  • Add rls to the combined installer via rust-packaging
    • tarballs, .pkgs, .msis
    • so that non-rustup users can access

We'd want to do all the above before the March 16 branch for 1.17 beta.

At this point we're delivering the RLS via the buildbot release
builders. Next steps are to follow through on the release builder
conversion.

  • Add --enable-dist-msi and --enable-dist-pkg flags to configure (rustbuild: Start building --enable-extended #39245)
    • move those packaging steps from rust-packaging into the tree as
      part of make dist
    • remember that the rls is not included when --enable-extended is
      not enabled... hm
  • Again in-tree, create a new build target, x.py dist src/publish-ci-build (or something) to do the final steps of
    arranging the bins, signing, building the manifest, and uploading to
    static.rust-lang.org (rustbuild: Add manifest generation in-tree #39284)
    • This is in-tree because it gives us a path for others being able
      to produce their own rustup dist servers, and also because it's just
      better to have all the code for packaging in the same git commit.
    • Being in-tree has the complication that we have to run ./configure
      even though we don't need to build any Rust...
    • All the steps need to (eventually) be discrete so that people
      who want to build manifests without our CI infrastructure can do so,
      but for our purposes we can have one x.py dist publish-ci-build
    • 'publish-download' step:
      • for any given channel, download the appropriate bins from rust-lang-ci
        s3 bucket, put them in the right file system layout
      • this might want to verify hashes
    • 'publish-hash' step:
    • 'publish-signing' step:
    • 'publish-manifest-build' step:
    • 'publish-upload' step:
  • Build a docker container that runs a the above as a service
    • publish to some staging area for testing before we turn it on in prod
    • batch job every night
    • cron job in a docker container?
  • Set up aws machine to run that service
    • let it run in parallel to existing build service
    • test with RUSTUP_DIST_SERVER
  • port cargo build to the rust extended build system
    • simultaneously turn off cargo's existing publication
  • modify docker images to use correct old glibcs (travis: Move glibc backwards in time #39198)
    • keep using crosstool ng
  • disable llvm assertions for all DEPLOY travisveyor configs (travis: Move glibc backwards in time #39198)
  • switch over to the new release builds, turn off buildbot

Other misc

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions