diff options
| author | Pietro Albini <pietro.albini@ferrous-systems.com> | 2021-07-28 15:18:18 +0200 |
|---|---|---|
| committer | Pietro Albini <pietro.albini@ferrous-systems.com> | 2021-07-28 15:32:23 +0200 |
| commit | 4b5ac09e326907c26aa3988044dbc7ef420e39e2 (patch) | |
| tree | 52f0facec7ac70e62cd830c8cdf99dd451bbb142 /src/ci/scripts | |
| parent | eba3228b2a9875d268ff3990903d04e19f6cdb0c (diff) | |
| download | rust-4b5ac09e326907c26aa3988044dbc7ef420e39e2.tar.gz rust-4b5ac09e326907c26aa3988044dbc7ef420e39e2.zip | |
add CI_ONLY_WHEN_CHANNEL and run x86_64-gnu-stable only on nightly
Diffstat (limited to 'src/ci/scripts')
| -rwxr-xr-x | src/ci/scripts/should-skip-this.sh | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/src/ci/scripts/should-skip-this.sh b/src/ci/scripts/should-skip-this.sh index fa738fe70c8..bb48fcb5a21 100755 --- a/src/ci/scripts/should-skip-this.sh +++ b/src/ci/scripts/should-skip-this.sh @@ -8,31 +8,43 @@ IFS=$'\n\t' source "$(cd "$(dirname "$0")" && pwd)/../shared.sh" -if [[ -z "${CI_ONLY_WHEN_SUBMODULES_CHANGED+x}" ]]; then - echo "Executing the job since there is no skip rule in effect" - exit 0 +if [[ -n "${CI_ONLY_WHEN_SUBMODULES_CHANGED-}" ]]; then + git fetch "https://github.com/$GITHUB_REPOSITORY" "$GITHUB_BASE_REF" + BASE_COMMIT="$(git merge-base FETCH_HEAD HEAD)" + + echo "Searching for toolstate changes between $BASE_COMMIT and $(git rev-parse HEAD)" + + if git diff "$BASE_COMMIT" | grep --quiet "^index .* 160000"; then + # Submodules pseudo-files inside git have the 160000 permissions, so when + # those files are present in the diff a submodule was updated. + echo "Submodules were updated" + elif ! git diff --quiet "$BASE_COMMIT" -- src/tools/clippy src/tools/rustfmt; then + # There is not an easy blanket search for subtrees. For now, manually list + # the subtrees. + echo "Clippy or rustfmt subtrees were updated" + elif ! (git diff --quiet "$BASE_COMMIT" -- \ + src/test/rustdoc-gui \ + src/librustdoc \ + src/tools/rustdoc-gui); then + # There was a change in either rustdoc or in its GUI tests. + echo "Rustdoc was updated" + else + echo "Not executing this job since no submodules nor subtrees were updated" + ciCommandSetEnv SKIP_JOB 1 + exit 0 + fi fi -git fetch "https://github.com/$GITHUB_REPOSITORY" "$GITHUB_BASE_REF" -BASE_COMMIT="$(git merge-base FETCH_HEAD HEAD)" - -echo "Searching for toolstate changes between $BASE_COMMIT and $(git rev-parse HEAD)" - -if git diff "$BASE_COMMIT" | grep --quiet "^index .* 160000"; then - # Submodules pseudo-files inside git have the 160000 permissions, so when - # those files are present in the diff a submodule was updated. - echo "Executing the job since submodules are updated" -elif ! git diff --quiet "$BASE_COMMIT" -- src/tools/clippy src/tools/rustfmt; then - # There is not an easy blanket search for subtrees. For now, manually list - # the subtrees. - echo "Executing the job since clippy or rustfmt subtree was updated" -elif ! (git diff --quiet "$BASE_COMMIT" -- \ - src/test/rustdoc-gui \ - src/librustdoc \ - src/tools/rustdoc-gui); then - # There was a change in either rustdoc or in its GUI tests. - echo "Executing the job since rustdoc was updated" -else - echo "Not executing this job since no submodules nor subtrees were updated" - ciCommandSetEnv SKIP_JOB 1 +if [[ -n "${CI_ONLY_WHEN_CHANNEL-}" ]]; then + if [[ "${CI_ONLY_WHEN_CHANNEL}" = "$(cat src/ci/channel)" ]]; then + echo "The channel is the expected one" + else + echo "Not executing this job as the channel is not the expected one" + ciCommandSetEnv SKIP_JOB 1 + exit 0 + fi fi + + +echo "Executing the job since there is no skip rule preventing the execution" +exit 0 |
