Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
ci: extract job skipping logic into a script
  • Loading branch information
pietroalbini committed Oct 29, 2019
1 parent 53be272 commit 4fb8a9a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 14 deletions.
15 changes: 1 addition & 14 deletions src/ci/azure-pipelines/steps/run.yml
Expand Up @@ -21,21 +21,8 @@ steps:
- checkout: self
fetchDepth: 2

# 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.
- bash: |
set -e
# Submodules pseudo-files inside git have the 160000 permissions, so when
# those files are present in the diff a submodule was updated.
if git diff HEAD^ | grep "^index .* 160000" >/dev/null 2>&1; then
echo "Executing the job since submodules are updated"
else
echo "Not executing this job since no submodules were updated"
echo "##vso[task.setvariable variable=SKIP_JOB;]1"
fi
- bash: src/ci/scripts/should-skip-this.sh
displayName: Decide whether to run this job
condition: and(succeeded(), variables.CI_ONLY_WHEN_SUBMODULES_CHANGED)

# Spawn a background process to collect CPU usage statistics which we'll upload
# at the end of the build. See the comments in the script here for more
Expand Down
20 changes: 20 additions & 0 deletions 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

0 comments on commit 4fb8a9a

Please sign in to comment.