about summary refs log tree commit diff
path: root/src/ci/scripts/should-skip-this.sh
blob: f945db0ada27d70a93ccb5c6a54ed1a268600a2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 --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"
else
    echo "Not executing this job since no submodules were updated"
    ciCommandSetEnv SKIP_JOB 1
fi