Rollup merge of #69705 - ehuss:toolstate-remove-redundant-beta, r=Mark-Simulacrum
Toolstate: remove redundant beta-week check. I made a bit of a mistake in #69624. The "beta regression" doesn't need to be checked twice. I also rolled up #69693 to avoid merge conflicts.
This commit is contained in:
commit
3d23de7baf
@ -215,6 +215,9 @@ impl Step for ToolStateCheck {
|
||||
tool, old_state, state
|
||||
);
|
||||
} else {
|
||||
// This warning only appears in the logs, which most
|
||||
// people won't read. It's mostly here for testing and
|
||||
// debugging.
|
||||
eprintln!(
|
||||
"warning: Tool `{}` is not test-pass (is `{}`), \
|
||||
this should be fixed before beta is branched.",
|
||||
@ -222,6 +225,11 @@ impl Step for ToolStateCheck {
|
||||
);
|
||||
}
|
||||
}
|
||||
// `publish_toolstate.py` is responsible for updating
|
||||
// `latest.json` and creating comments/issues warning people
|
||||
// if there is a regression. That all happens in a separate CI
|
||||
// job on the master branch once the PR has passed all tests
|
||||
// on the `auto` branch.
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,7 +238,7 @@ impl Step for ToolStateCheck {
|
||||
}
|
||||
|
||||
if builder.config.channel == "nightly" && env::var_os("TOOLSTATE_PUBLISH").is_some() {
|
||||
commit_toolstate_change(&toolstates, in_beta_week);
|
||||
commit_toolstate_change(&toolstates);
|
||||
}
|
||||
}
|
||||
|
||||
@ -325,11 +333,11 @@ fn prepare_toolstate_config(token: &str) {
|
||||
Err(_) => false,
|
||||
};
|
||||
if !success {
|
||||
panic!("git config key={} value={} successful (status: {:?})", key, value, status);
|
||||
panic!("git config key={} value={} failed (status: {:?})", key, value, status);
|
||||
}
|
||||
}
|
||||
|
||||
// If changing anything here, then please check that src/ci/publish_toolstate.sh is up to date
|
||||
// If changing anything here, then please check that `src/ci/publish_toolstate.sh` is up to date
|
||||
// as well.
|
||||
git_config("user.email", "7378925+rust-toolstate-update@users.noreply.github.com");
|
||||
git_config("user.name", "Rust Toolstate Update");
|
||||
@ -373,14 +381,14 @@ fn read_old_toolstate() -> Vec<RepoState> {
|
||||
///
|
||||
/// * See <https://help.github.com/articles/about-commit-email-addresses/>
|
||||
/// if a private email by GitHub is wanted.
|
||||
fn commit_toolstate_change(current_toolstate: &ToolstateData, in_beta_week: bool) {
|
||||
let old_toolstate = read_old_toolstate();
|
||||
|
||||
fn commit_toolstate_change(current_toolstate: &ToolstateData) {
|
||||
let message = format!("({} CI update)", OS.expect("linux/windows only"));
|
||||
let mut success = false;
|
||||
for _ in 1..=5 {
|
||||
// Update the toolstate results (the new commit-to-toolstate mapping) in the toolstate repo.
|
||||
change_toolstate(¤t_toolstate, &old_toolstate, in_beta_week);
|
||||
// Upload the test results (the new commit-to-toolstate mapping) to the toolstate repo.
|
||||
// This does *not* change the "current toolstate"; that only happens post-landing
|
||||
// via `src/ci/docker/publish_toolstate.sh`.
|
||||
publish_test_results(¤t_toolstate);
|
||||
|
||||
// `git commit` failing means nothing to commit.
|
||||
let status = t!(Command::new("git")
|
||||
@ -429,31 +437,12 @@ fn commit_toolstate_change(current_toolstate: &ToolstateData, in_beta_week: bool
|
||||
}
|
||||
}
|
||||
|
||||
fn change_toolstate(
|
||||
current_toolstate: &ToolstateData,
|
||||
old_toolstate: &[RepoState],
|
||||
in_beta_week: bool,
|
||||
) {
|
||||
let mut regressed = false;
|
||||
for repo_state in old_toolstate {
|
||||
let tool = &repo_state.tool;
|
||||
let state = repo_state.state();
|
||||
let new_state = current_toolstate[tool.as_str()];
|
||||
|
||||
if new_state != state {
|
||||
eprintln!("The state of `{}` has changed from `{}` to `{}`", tool, state, new_state);
|
||||
if new_state < state {
|
||||
if !NIGHTLY_TOOLS.iter().any(|(name, _path)| name == tool) {
|
||||
regressed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if regressed && in_beta_week {
|
||||
std::process::exit(1);
|
||||
}
|
||||
|
||||
/// Updates the "history" files with the latest results.
|
||||
///
|
||||
/// These results will later be promoted to `latest.json` by the
|
||||
/// `publish_toolstate.py` script if the PR passes all tests and is merged to
|
||||
/// master.
|
||||
fn publish_test_results(current_toolstate: &ToolstateData) {
|
||||
let commit = t!(std::process::Command::new("git").arg("rev-parse").arg("HEAD").output());
|
||||
let commit = t!(String::from_utf8(commit.stdout));
|
||||
|
||||
|
@ -23,7 +23,9 @@ GIT_COMMIT_MSG="$(git log --format=%s -n1 HEAD)"
|
||||
cd rust-toolstate
|
||||
FAILURE=1
|
||||
for RETRY_COUNT in 1 2 3 4 5; do
|
||||
# The purpose is to publish the new "current" toolstate in the toolstate repo.
|
||||
# The purpose of this is to publish the new "current" toolstate in the toolstate repo.
|
||||
# This happens post-landing, on master.
|
||||
# (Publishing the per-commit test results happens pre-landing in src/bootstrap/toolstate.rs).
|
||||
"$(ciCheckoutPath)/src/tools/publish_toolstate.py" "$GIT_COMMIT" \
|
||||
"$GIT_COMMIT_MSG" \
|
||||
"$MESSAGE_FILE" \
|
||||
|
@ -1,11 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This script publishes the new "current" toolstate in the toolstate repo (not to be
|
||||
# confused with publishing the test results, which happens in
|
||||
# `src/ci/docker/x86_64-gnu-tools/checktools.sh`).
|
||||
# It is set as callback for `src/ci/docker/x86_64-gnu-tools/repo.sh` by the CI scripts
|
||||
# when a new commit lands on `master` (i.e., after it passed all checks on `auto`).
|
||||
# This script computes the new "current" toolstate for the toolstate repo (not to be
|
||||
# confused with publishing the test results, which happens in `src/bootstrap/toolstate.rs`).
|
||||
# It gets called from `src/ci/publish_toolstate.sh` when a new commit lands on `master`
|
||||
# (i.e., after it passed all checks on `auto`).
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user