about summary refs log tree commit diff
path: root/src/ci/scripts
diff options
context:
space:
mode:
authorPietro Albini <pietro.albini@ferrous-systems.com>2021-07-28 15:18:18 +0200
committerPietro Albini <pietro.albini@ferrous-systems.com>2021-07-28 15:32:23 +0200
commit4b5ac09e326907c26aa3988044dbc7ef420e39e2 (patch)
tree52f0facec7ac70e62cd830c8cdf99dd451bbb142 /src/ci/scripts
parenteba3228b2a9875d268ff3990903d04e19f6cdb0c (diff)
downloadrust-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-xsrc/ci/scripts/should-skip-this.sh62
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