Enhance CI workflow by adding a conditional check for relevant file changes before executing jobs. This update improves efficiency for pull requests on the dev branch while maintaining execution for main and staging branches.

This commit is contained in:
Javier Cortejoso
2026-01-05 15:33:33 +01:00
parent 5f3246e127
commit 7cba76f02f

View File

@@ -2,14 +2,46 @@ name: Core SDK CI
on:
pull_request:
paths:
- "sdk/core/**"
- "common/**"
- ".github/workflows/core-sdk-ci.yml"
- ".github/actions/**"
branches:
- dev
- staging
- main
jobs:
check_changes:
runs-on: ubuntu-slim
outputs:
should_run: ${{ steps.filter.outputs.should_run }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Check if should run
id: filter
run: |
set -e
if [[ "${{ github.base_ref }}" == "main" ]] || [[ "${{ github.base_ref }}" == "staging" ]]; then
echo "should_run=true" >> $GITHUB_OUTPUT
echo "Running for ${{ github.base_ref }} - no path filter"
else
# For dev branch, check if relevant files changed
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) || {
echo "Error: Failed to diff against base branch"
exit 1
}
if echo "$CHANGED_FILES" | grep -qE "^(sdk/core/|common/|\.github/workflows/core-sdk-ci\.yml|\.github/actions/)"; then
echo "should_run=true" >> $GITHUB_OUTPUT
echo "Running for dev - relevant files changed"
else
echo "should_run=false" >> $GITHUB_OUTPUT
echo "Skipping for dev - no relevant files changed"
fi
fi
build:
needs: check_changes
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
@@ -34,7 +66,8 @@ jobs:
lint:
runs-on: ubuntu-latest
needs: build
needs: [check_changes, build]
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
permissions:
contents: read
steps:
@@ -63,7 +96,8 @@ jobs:
types:
runs-on: ubuntu-latest
needs: build
needs: [check_changes, build]
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
permissions:
contents: read
steps:
@@ -92,7 +126,8 @@ jobs:
test:
runs-on: ubuntu-latest
needs: build
needs: [check_changes, build]
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
permissions:
contents: read
steps: