From 7cba76f02fa6ffde212f9475800facd284098a3d Mon Sep 17 00:00:00 2001 From: Javier Cortejoso Date: Mon, 5 Jan 2026 15:33:33 +0100 Subject: [PATCH] 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. --- .github/workflows/core-sdk-ci.yml | 51 ++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/.github/workflows/core-sdk-ci.yml b/.github/workflows/core-sdk-ci.yml index 5d9166588..0834c6426 100644 --- a/.github/workflows/core-sdk-ci.yml +++ b/.github/workflows/core-sdk-ci.yml @@ -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: