Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4b731d0
cuda build fixes & vs version checks improvements
mraduldubey Oct 3, 2025
23d7840
updated script
mraduldubey Oct 3, 2025
adfa64e
fix
mraduldubey Oct 3, 2025
cb21a8b
fixes
mraduldubey Oct 3, 2025
4b2e2e6
fix
mraduldubey Oct 3, 2025
fe02096
build using script -skipTests
mraduldubey Oct 6, 2025
31e3615
Phase 1 (Part 1): Implement component-based build system infrastructure
mraduldubey Oct 8, 2025
c5aa5d1
Phase 1 (Part 2): Conditional dependencies and linking
mraduldubey Oct 8, 2025
90b3349
Update refactoring log with Phase 1 completion details
mraduldubey Oct 8, 2025
b12426f
Phase 1 (Part 3): CORE-only build test and fixes
mraduldubey Oct 8, 2025
c7b170a
Update refactoring log with Phase 1 Part 3 commit hash
mraduldubey Oct 8, 2025
0be030b
Phase 2: vcpkg conditional dependency management
mraduldubey Oct 8, 2025
b609672
Update refactoring log with Phase 2 commit hash
mraduldubey Oct 8, 2025
1bdf442
Phase 3&4: Component-based test file organization
mraduldubey Oct 8, 2025
55508a8
Update refactoring log with Phase 3&4 commit hash
mraduldubey Oct 8, 2025
fb47be4
Documentation: Component system testing validation and usage guide
mraduldubey Oct 8, 2025
2e12462
Phase 5.5: Fix CORE component dependencies and test organization
mraduldubey Oct 8, 2025
ca6b528
Phase 5.5: Complete Windows local testing and validation
mraduldubey Oct 8, 2025
9b079b4
Documentation: Add component build system user guide and enhance all …
mraduldubey Oct 9, 2025
2074d63
minor cleanup, readme update and updated vcpkg json
mraduldubey Oct 9, 2025
d239fb6
Phase 6, 7 & 8: Complete documentation, CI/CD integration, and develo…
mraduldubey Oct 9, 2025
016f512
Phase 9: Cloud build testing with component presets
mraduldubey Oct 9, 2025
91824e5
Fix Phase 9 issues: CUDA dependency and PowerShell semicolon parsing
mraduldubey Oct 9, 2025
347e061
Enable workflows on test/phase9-cloud-workflows-v2 branch
mraduldubey Oct 9, 2025
3958a70
Fix CUDA dependency in non-CUDA builds with ALL/full preset
mraduldubey Oct 9, 2025
48be195
Fix documentation issues and improve CI reporting
mraduldubey Oct 9, 2025
24fc11e
Fix Linux no-CUDA full build by excluding VoIP/baresip
mraduldubey Oct 9, 2025
7907669
Trigger CI/CD workflows for final testing
mraduldubey Oct 16, 2025
26937fc
Fix Linux no-CUDA full build: Exclude VoIP from vcpkg features
mraduldubey Oct 16, 2025
dd928bc
Restrict CI workflows to main branch only
mraduldubey Oct 17, 2025
0db72e6
Update CI workflows to trigger on feature/component-based-build branch
Ashu7950 Nov 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
252 changes: 252 additions & 0 deletions .github/workflows/CI-Component-Matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
name: CI-Component-Matrix

on:
# Run on schedule (weekly on Sundays)
schedule:
- cron: '0 2 * * 0' # Every Sunday at 2 AM UTC
# Allow manual trigger
workflow_dispatch:
inputs:
preset:
description: 'Component preset to test (leave empty for all)'
required: false
type: choice
options:
- ''
- minimal
- video
- cuda
- full

env:
NOTE: "Component matrix testing - validates component-based build system"

jobs:
component-matrix-test:
strategy:
fail-fast: false
matrix:
include:
# Windows CUDA tests
- runner: windows-cuda
os: windows
cuda: 'ON'
preset: minimal
flav: 'Win-CUDA-minimal'
is-selfhosted: true

- runner: windows-cuda
os: windows
cuda: 'ON'
preset: video
flav: 'Win-CUDA-video'
is-selfhosted: true

- runner: windows-cuda
os: windows
cuda: 'ON'
preset: cuda
flav: 'Win-CUDA-cuda'
is-selfhosted: true

# Windows No-CUDA tests
- runner: windows-2022
os: windows
cuda: 'OFF'
preset: minimal
flav: 'Win-NoCUDA-minimal'
is-selfhosted: false

- runner: windows-2022
os: windows
cuda: 'OFF'
preset: video
flav: 'Win-NoCUDA-video'
is-selfhosted: false

# Linux CUDA tests
- runner: linux-cuda
os: linux
cuda: 'ON'
preset: minimal
flav: 'Linux-CUDA-minimal'
is-selfhosted: true

- runner: linux-cuda
os: linux
cuda: 'ON'
preset: video
flav: 'Linux-CUDA-video'
is-selfhosted: true

- runner: linux-cuda
os: linux
cuda: 'ON'
preset: cuda
flav: 'Linux-CUDA-cuda'
is-selfhosted: true

name: ${{ matrix.flav }}
runs-on: ${{ matrix.runner }}

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: 'recursive'
lfs: true
fetch-depth: 0

- name: Setup build environment
shell: bash
run: |
echo "BUILD_START_TIME=$(date +%s)" >> $GITHUB_ENV
echo "Testing preset: ${{ matrix.preset }}"
echo "Platform: ${{ matrix.os }}"
echo "CUDA: ${{ matrix.cuda }}"

# Windows-specific steps
- name: Run build script (Windows)
if: matrix.os == 'windows'
shell: pwsh
run: |
if ("${{ matrix.cuda }}" -eq "ON") {
.\build_windows_cuda.bat --preset ${{ matrix.preset }}
} else {
.\build_windows_no_cuda.bat --preset ${{ matrix.preset }}
}
timeout-minutes: 120

# Linux-specific steps
- name: Run build script (Linux)
if: matrix.os == 'linux'
shell: bash
run: |
chmod +x build_linux_*.sh
if [ "${{ matrix.cuda }}" == "ON" ]; then
./build_linux_cuda.sh --preset ${{ matrix.preset }}
else
./build_linux_no_cuda.sh --preset ${{ matrix.preset }}
fi
timeout-minutes: 120

- name: Calculate build time
shell: bash
run: |
BUILD_END_TIME=$(date +%s)
BUILD_DURATION=$((BUILD_END_TIME - BUILD_START_TIME))
BUILD_MINUTES=$((BUILD_DURATION / 60))
BUILD_SECONDS=$((BUILD_DURATION % 60))
echo "Build completed in ${BUILD_MINUTES}m ${BUILD_SECONDS}s"
echo "BUILD_DURATION_MINS=${BUILD_MINUTES}" >> $GITHUB_ENV
echo "BUILD_DURATION_SECS=${BUILD_SECONDS}" >> $GITHUB_ENV

- name: List test cases
shell: bash
run: |
if [ "${{ matrix.os }}" == "windows" ]; then
./_build/RelWithDebInfo/aprapipesut.exe --list_content > tests_${{ matrix.preset }}.txt || echo "Test listing failed"
else
./_build/aprapipesut --list_content > tests_${{ matrix.preset }}.txt || echo "Test listing failed"
fi
continue-on-error: true

- name: Run tests
shell: bash
run: |
if [ "${{ matrix.os }}" == "windows" ]; then
./_build/RelWithDebInfo/aprapipesut.exe --log_format=JUNIT --log_sink=CI_test_result_${{ matrix.flav }}.xml -p -l all || echo 'test execution returned error'
else
./_build/aprapipesut --log_format=JUNIT --log_sink=CI_test_result_${{ matrix.flav }}.xml -p -l all || echo 'test execution returned error'
fi
timeout-minutes: 20
continue-on-error: true

- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: ComponentTest_${{ matrix.flav }}
path: |
CI_test_result_${{ matrix.flav }}.xml
tests_${{ matrix.preset }}.txt
continue-on-error: true

- name: Generate build summary
shell: bash
run: |
echo "## Component Build Summary: ${{ matrix.flav }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- **Preset**: ${{ matrix.preset }}" >> $GITHUB_STEP_SUMMARY
echo "- **Platform**: ${{ matrix.os }}" >> $GITHUB_STEP_SUMMARY
echo "- **CUDA**: ${{ matrix.cuda }}" >> $GITHUB_STEP_SUMMARY
echo "- **Build Time**: ${BUILD_DURATION_MINS}m ${BUILD_DURATION_SECS}s" >> $GITHUB_STEP_SUMMARY
echo "- **Runner**: ${{ matrix.runner }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

if [ -f "tests_${{ matrix.preset }}.txt" ]; then
TEST_COUNT=$(wc -l < tests_${{ matrix.preset }}.txt || echo "unknown")
echo "- **Test Count**: $TEST_COUNT" >> $GITHUB_STEP_SUMMARY
fi

- name: Upload build logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: BuildLogs_${{ matrix.flav }}
path: |
vcpkg/buildtrees/**/*.log
vcpkg/buildtrees/**/*.txt
continue-on-error: true

# Aggregate results and track build times
aggregate-results:
needs: component-matrix-test
runs-on: ubuntu-latest
if: always()

steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: test-results
continue-on-error: true

- name: Generate component matrix summary
shell: bash
run: |
echo "## Component Matrix Test Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Preset | Platform | CUDA | Status |" >> $GITHUB_STEP_SUMMARY
echo "|--------|----------|------|--------|" >> $GITHUB_STEP_SUMMARY

# Parse test results from downloaded artifacts
STATUS="${{ needs.component-matrix-test.result }}"
if [ "$STATUS" == "success" ]; then
ICON="✅"
else
ICON="❌"
fi

# Check individual test results if available
for dir in test-results/ComponentTest_*/; do
if [ -d "$dir" ]; then
TEST_NAME=$(basename "$dir" | sed 's/ComponentTest_//')
if [ -f "$dir/CI_test_result_*.xml" ]; then
# Check for test failures in XML
if grep -q 'failures="0"' "$dir/CI_test_result_*.xml" 2>/dev/null; then
echo "| $TEST_NAME | $ICON |" >> $GITHUB_STEP_SUMMARY
else
echo "| $TEST_NAME | ❌ |" >> $GITHUB_STEP_SUMMARY
fi
else
echo "| $TEST_NAME | ⚠️ No results |" >> $GITHUB_STEP_SUMMARY
fi
fi
done

echo "" >> $GITHUB_STEP_SUMMARY
echo "**Overall Status**: $ICON" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Note**: Component-based builds reduce build times by 60-80% compared to full builds." >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "For detailed results, check the individual job logs and test artifacts." >> $GITHUB_STEP_SUMMARY
2 changes: 1 addition & 1 deletion .github/workflows/CI-Linux-ARM64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI-Linux-ARM64

on:
push:
branches: [ main ]
branches: [ feature/component-based-build ]
pull_request:
branches: [ main ]

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CI-Linux-CUDA-Docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI-Linux-CUDA-Docker

on:
push:
branches: [ main ]
branches: [ feature/component-based-build ]
pull_request:
branches: [ main ]

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CI-Linux-CUDA-wsl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI-Linux-CUDA-WSL

on:
push:
branches: [ main ]
branches: [ feature/component-based-build ]
pull_request:
branches: [ main ]

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CI-Linux-CUDA.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI-Linux-CUDA

on:
push:
branches: [ main ]
branches: [ feature/component-based-build ]
pull_request:
branches: [ main ]

Expand Down
16 changes: 12 additions & 4 deletions .github/workflows/CI-Linux-NoCUDA.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI-Linux-NoCUDA

on:
push:
branches: [ main ]
branches: [ feature/component-based-build ]
pull_request:
branches: [ main ]

Expand All @@ -11,20 +11,28 @@ env:

jobs:
linux-nocuda-build-test:
strategy:
fail-fast: false
matrix:
preset: ['minimal', 'video', 'full']
uses: ./.github/workflows/build-test-lin.yml
with:
runner: 'ubuntu-22.04'
flav: Linux
flav: 'Linux-nocuda-${{ matrix.preset }}'
is-selfhosted: false
cuda: 'OFF'
preset: '${{ matrix.preset }}'
nProc: 3
linux-nocuda-publish:
needs: linux-nocuda-build-test
strategy:
matrix:
preset: ['minimal', 'video', 'full']
permissions:
checks: write
pull-requests: write
uses: ./.github/workflows/publish-test.yml
with:
flav: Linux
flav: 'Linux-nocuda-${{ matrix.preset }}'
secrets:
GIST_TOKEN: ${{ secrets.GIST_TOKEN }}
GIST_TOKEN: ${{ secrets.GIST_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/CI-Win-CUDA.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI-Win-CUDA

on:
push:
branches: [ main ]
branches: [ feature/component-based-build ]
pull_request:
branches: [ main ]

Expand Down
Loading
Loading