diff options
| author | Pietro Albini <pietro@pietroalbini.org> | 2019-10-23 16:07:13 +0200 |
|---|---|---|
| committer | Pietro Albini <pietro@pietroalbini.org> | 2019-10-29 10:01:43 +0100 |
| commit | 4fb8a9a73cb5c42543e02ce1d797a6d028f6068f (patch) | |
| tree | c805eb6d4acdafd07dfa5c1b211bba3e86cdf4b8 /src/ci/scripts | |
| parent | 53be2724157ca6fe9412e52dea56d4b29759ac11 (diff) | |
| download | rust-4fb8a9a73cb5c42543e02ce1d797a6d028f6068f.tar.gz rust-4fb8a9a73cb5c42543e02ce1d797a6d028f6068f.zip | |
ci: extract job skipping logic into a script
Diffstat (limited to 'src/ci/scripts')
| -rwxr-xr-x | src/ci/scripts/should-skip-this.sh | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ci/scripts/should-skip-this.sh b/src/ci/scripts/should-skip-this.sh new file mode 100755 index 00000000000..a38099a2db7 --- /dev/null +++ b/src/ci/scripts/should-skip-this.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Set the SKIP_JOB environment variable if this job is supposed to only run +# when submodules are updated and they were not. The following time consuming +# tasks will be skipped when the environment variable is present. + +set -euo pipefail +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" +elif git diff HEAD^ | grep "^index .* 160000" >/dev/null 2>&1; 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" +else + echo "Not executing this job since no submodules were updated" + ciCommandSetEnv SKIP_JOB 1 +fi |
