Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically update tools in Rust repo #32

Open
nrc opened this issue Nov 13, 2017 · 2 comments
Open

Automatically update tools in Rust repo #32

nrc opened this issue Nov 13, 2017 · 2 comments

Comments

@nrc
Copy link
Member

nrc commented Nov 13, 2017

It is a hassle and takes ages (because of the bors queue) to update tools in the Rust repo. I would like something more automated. I envisage a tool which:

  • runs daily (or maybe weekly, whatever)
  • only works on master (not beta channel, etc)
  • checks toolstate.toml and the CI for the tool and only updates if both are passing tests
  • creates its own branch where it:
    • updates the tools submodules
    • runs the complete test suite (but does not interrupt the bors queue to do so)
    • if we pass, merges at the next opportunity (i.e., we don't interrupt another Rust PR, but we don't wait to re-test, we should check toolstate.toml though)

This should mean tools on nightly are always somewhat up to date. We will not slow down the bors queue in any way. However, it does mean we are merging PRs which have not been fully tested. However, I hypothesise that because we only touch the tools submodules and we wouldn't merge if another PR touches the submodules or toolstate.toml, breakage would be extremely rare.

@oli-obk
Copy link
Collaborator

oli-obk commented Nov 16, 2017

I have an idea for an intermediate step. If travis passes a PR that just modifies toolstate.toml, Cargo.lock and submodules, just merge the PR without running all of bors (after r+ of course).

@nrc
Copy link
Member Author

nrc commented Nov 19, 2017

Yeah, I would like to do that too! We've always had some push back about landing PRs without full bors testing, but just updating a submodule seems like it might be a good case. It is possible that updating toolstate.toml could cause problems - e.g., there is a PR which changes broken to testing for a tool and updates a submodule to fix the cause. This passes Travis. However, before landing another PR breaks the tool in a different way (and doesn't need to touch toolstate.toml because the tool is already broken). Then the tool PR would fail CI, but is landed without running the CI.

Another incremental approach might be only running the tool tests - e.g., when landing a rustfmt change (including toolstate.toml) we only run ./x.py test src/tools/whatever rather than ./x.py test (or dist or whatever).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants