mirror of
https://github.com/selfxyz/self.git
synced 2026-02-19 02:24:25 -05:00
Enhance CI workflow for QR code SDK by adding conditional job execution. Introduced a check to determine if relevant files have changed before running build and quality checks, improving efficiency for dev branch deployments.
This commit is contained in:
47
.github/workflows/qrcode-sdk-ci.yml
vendored
47
.github/workflows/qrcode-sdk-ci.yml
vendored
@@ -14,15 +14,43 @@ on:
|
||||
- dev
|
||||
- staging
|
||||
- main
|
||||
paths:
|
||||
- "sdk/qrcode/**"
|
||||
- "common/**"
|
||||
- ".github/workflows/qrcode-sdk-ci.yml"
|
||||
- ".github/actions/**"
|
||||
|
||||
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/qrcode/|common/|\.github/workflows/qrcode-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 dependencies once and cache for other jobs
|
||||
build:
|
||||
needs: check_changes
|
||||
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
@@ -83,7 +111,8 @@ jobs:
|
||||
# Quality checks job
|
||||
quality-checks:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
needs: [check_changes, build]
|
||||
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Read and sanitize Node.js version
|
||||
@@ -151,7 +180,8 @@ jobs:
|
||||
# Build verification job
|
||||
build-verification:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
needs: [check_changes, build]
|
||||
if: github.event.pull_request.draft == false && needs.check_changes.outputs.should_run == 'true'
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Read and sanitize Node.js version
|
||||
@@ -213,7 +243,8 @@ jobs:
|
||||
# Integration test job
|
||||
integration-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'
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Read and sanitize Node.js version
|
||||
|
||||
Reference in New Issue
Block a user