-
Notifications
You must be signed in to change notification settings - Fork 12.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: extract job skipping logic into a script
- Loading branch information
1 parent
53be272
commit 4fb8a9a
Showing
2 changed files
with
21 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |