-
Notifications
You must be signed in to change notification settings - Fork 326
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: add conditional skip for docs changes (#4127)
- Loading branch information
Showing
5 changed files
with
94 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/bin/bash | ||
# Copyright (c) HashiCorp, Inc. | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
set -euo pipefail | ||
|
||
# Get the list of changed files | ||
# Using `git merge-base` ensures that we're always comparing against the correct branch point. | ||
#For example, given the commits: | ||
# | ||
# A---B---C---D---W---X---Y---Z # origin/main | ||
# \---E---F # feature/branch | ||
# | ||
# ... `git merge-base origin/$SKIP_CHECK_BRANCH HEAD` would return commit `D` | ||
# `...HEAD` specifies from the common ancestor to the latest commit on the current branch (HEAD).. | ||
files_to_check=$(git diff --name-only "$(git merge-base origin/$SKIP_CHECK_BRANCH HEAD~)"...HEAD) | ||
|
||
# Define the directories to check | ||
skipped_directories=("assets" ".changelog/") | ||
|
||
# Loop through the changed files and find directories/files outside the skipped ones | ||
files_to_check_array=($files_to_check) | ||
for file_to_check in "${files_to_check_array[@]}"; do | ||
file_is_skipped=false | ||
echo "checking file: $file_to_check" | ||
|
||
# Allow changes to: | ||
# - This script | ||
# - Files in the skipped directories | ||
# - Markdown files | ||
for dir in "${skipped_directories[@]}"; do | ||
if [[ "$file_to_check" == */check_skip_ci.sh ]] || | ||
[[ "$file_to_check" == "$dir"* ]] || | ||
[[ "$file_to_check" == *.md ]]; then | ||
file_is_skipped=true | ||
break | ||
fi | ||
done | ||
|
||
if [ "$file_is_skipped" != "true" ]; then | ||
echo -e "non-skippable file changed: $file_to_check" | ||
SKIP_CI=false | ||
echo "Changes detected in non-documentation files - will not skip tests and build" | ||
echo "skip-ci=false" >> "$GITHUB_OUTPUT" | ||
exit 0 ## if file is outside of the skipped_directory exit script | ||
fi | ||
done | ||
|
||
echo "Changes detected in only documentation files - skipping tests and build" | ||
echo "skip-ci=true" >> "$GITHUB_OUTPUT" |
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
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,24 @@ | ||
name: conditional-skip | ||
|
||
on: | ||
workflow_call: | ||
outputs: | ||
skip-ci: | ||
description: "Whether we should skip build and test jobs" | ||
value: ${{ jobs.check-skip.outputs.skip-ci }} | ||
|
||
jobs: | ||
check-skip: | ||
runs-on: ubuntu-latest | ||
name: Check whether to skip build and tests | ||
outputs: | ||
skip-ci: ${{ steps.check-changed-files.outputs.skip-ci }} | ||
env: | ||
SKIP_CHECK_BRANCH: ${{ github.head_ref || github.ref_name }} | ||
steps: | ||
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | ||
with: | ||
fetch-depth: 0 | ||
- name: Check changed files | ||
id: check-changed-files | ||
run: ./.github/scripts/check_skip_ci.sh |
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