diff --git a/.github/workflows/camera-native.yml b/.github/workflows/camera-native.yml deleted file mode 100644 index 931eedfb..00000000 --- a/.github/workflows/camera-native.yml +++ /dev/null @@ -1,103 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -name: Native camera worker - -on: - pull_request: - paths: - - ".github/workflows/camera-native.yml" - - "tools/prepare_camera_ci.ps1" - - "tools/qualify_camera_ci.py" - - "tools/run_ci_tests.py" - - "tests/protocol/test_camera_ci_qualification.py" - - "workers/camera/**" - - "plugins/camera_gstreamer/**" - - "daemon/**" - - "libs/cpp/**" - - "schemas/proto/**" - - "cmake/**" - - "tests/cpp/**" - - "CMakeLists.txt" - - "CMakePresets.json" - - "vcpkg.json" - push: - branches: [main, master] - paths: - - ".github/workflows/camera-native.yml" - - "tools/prepare_camera_ci.ps1" - - "tools/qualify_camera_ci.py" - - "tools/run_ci_tests.py" - - "tests/protocol/test_camera_ci_qualification.py" - - "workers/camera/**" - - "plugins/camera_gstreamer/**" - - "daemon/**" - - "libs/cpp/**" - - "schemas/proto/**" - - "cmake/**" - - "tests/cpp/**" - - "CMakeLists.txt" - - "CMakePresets.json" - - "vcpkg.json" - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: native-camera-${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - camera: - name: Real GStreamer worker and packaged layouts - runs-on: windows-2022 - timeout-minutes: 60 - defaults: - run: - shell: pwsh - steps: - - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 - - name: Set up Python - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 - with: - python-version: "3.12" - - name: Check camera receipt acceptance controls - run: python -m unittest discover -s tests/protocol -p test_camera_ci_qualification.py -v - - name: Set up MSVC - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1 - - name: Prepare the pinned official GStreamer SDK - run: | - $sdk = Join-Path $env:RUNNER_TEMP "capturesuite-camera-sdk-${{ github.run_id }}-${{ github.run_attempt }}" - $evidence = Join-Path $env:GITHUB_WORKSPACE "build/evidence/camera-sdk" - ./tools/prepare_camera_ci.ps1 -SdkDirectory $sdk -EvidenceDirectory $evidence - $receipt = Get-Content -LiteralPath (Join-Path $evidence "manifest.json") -Raw | ConvertFrom-Json - if (-not $receipt.accepted) { throw "SDK preparation was not accepted." } - "GSTREAMER_1_0_ROOT_MSVC_X86_64=$($receipt.gstreamer_root)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - (Join-Path $receipt.gstreamer_root "bin") | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: Set up the existing pinned vcpkg registry - uses: lukka/run-vcpkg@b1a0dd252f06b9e25b3c022a9a03bd7a427fb6a2 # v11.6 - with: - vcpkgDirectory: ${{ github.workspace }}/vcpkg - vcpkgGitCommitId: "4334d8b4c8916018600212ab4dd4bbdc343065d1" - - name: Check the existing registry contract - run: python tools/check_ci_contract.py --vcpkg-root vcpkg - - name: Configure the actual camera worker - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - run: cmake --preset windows-release -B build/camera-native -DCAPTURE_ENABLE_CAMERA_WORKER=ON -DCAPTURE_WERROR=ON - - name: Build the actual worker, daemon and native cases - run: cmake --build build/camera-native --target capture_worker_camera capture_daemon capture_core_tests -j 4 - - name: Receive the original, plugin and legacy workers - run: python tools/qualify_camera_ci.py --build-dir build/camera-native --sdk-manifest build/evidence/camera-sdk/manifest.json - - name: Preserve native camera evidence - if: always() - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: native-camera-evidence - path: | - build/evidence/camera-sdk/ - build/evidence/camera-native-*/ - build/camera-native/vcpkg-manifest-install.log - build/camera-native/CMakeFiles/CMakeConfigureLog.yaml - build/camera-native/CMakeCache.txt - if-no-files-found: warn - retention-days: 7 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 1067e994..00000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: CI - -on: - push: - branches: [main, master] - pull_request: - -jobs: - python: - runs-on: windows-2022 - timeout-minutes: 20 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - name: Install Python deps - run: python -m pip install -r requirements-ci.txt - - name: Dependency consistency - run: python -m pip check - - name: CI contract check - run: python tools/check_ci_contract.py --check-environment - - name: Generate Python protobuf bindings - run: python tools/gen_protos.py - - name: Proto drift check - run: git diff --exit-code -- libs/python/capture_protocol/capture_protocol/generated - - name: Generate session schemas - run: python tools/gen_session_schemas.py - - name: Schema drift check - run: git diff --exit-code -- schemas/session/jsonschema - - name: Ruff - run: | - ruff check libs/python/capture_protocol libs/python/capture_session libs/python/capture_analysis libs/python/capture_worker workers/python_host desktop/capture_desktop tools tests plugins/example_sine_py plugins/lsl_bridge - - name: License check - run: python tools/check_licenses.py --enforce-spdx - - name: Pytest - env: - QT_QPA_PLATFORM: offscreen - run: python tools/run_ci_tests.py - - name: Verify actual Windows workbench cases - if: always() - run: python tools/verify_prediction_workbench_ci.py - - name: Preserve Python test evidence - if: always() - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: python-test-evidence - path: build/evidence/ - if-no-files-found: warn - retention-days: 7 - - cmake: - runs-on: windows-2022 - timeout-minutes: 45 - steps: - - uses: actions/checkout@v4 - - name: Setup MSVC - uses: ilammy/msvc-dev-cmd@v1 - - name: Qualify application warning boundary - run: python tools/check_cpp_warning_boundary.py - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11 - with: - vcpkgDirectory: ${{ github.workspace }}/vcpkg - vcpkgGitCommitId: "4334d8b4c8916018600212ab4dd4bbdc343065d1" # 2025.09.17 (first release with mcap) - - name: Registry contract check - run: python tools/check_ci_contract.py --vcpkg-root vcpkg - - name: Configure - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - run: | - cmake --preset windows-release -DCAPTURE_WERROR=ON - - name: Build daemon + tests - run: cmake --build build/windows-release --target capture_daemon capture_core_tests session_doctor -j 4 - - name: CTest - run: ctest --test-dir build/windows-release --output-on-failure --no-tests=error --output-junit ctest-results.xml -C Release - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - name: Install native integration deps - run: python -m pip install -r requirements-native-ci.txt - - name: Native daemon + recovery integration - env: - CAPTURE_TEST_BUILD_DIR: build/windows-release - run: python tools/run_native_ci_tests.py - - name: Preserve C++ diagnostic evidence - if: always() - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: cpp-test-evidence - path: | - build/evidence/warning-boundary-*/ - build/evidence/native-*/ - build/windows-release/vcpkg-manifest-install.log - build/windows-release/CMakeFiles/CMakeConfigureLog.yaml - build/windows-release/Testing/Temporary/*.log - build/windows-release/ctest-results.xml - if-no-files-found: warn - retention-days: 7 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 079f99fe..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Release - -on: - push: - tags: - - "v*" - -permissions: - contents: write - -jobs: - release: - runs-on: windows-2022 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - name: Setup MSVC - uses: ilammy/msvc-dev-cmd@v1 - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11 - with: - vcpkgDirectory: ${{ github.workspace }}/vcpkg - vcpkgGitCommitId: "4334d8b4c8916018600212ab4dd4bbdc343065d1" # 2025.09.17 (first release with mcap) - - name: Build - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - run: | - cmake --preset windows-release - cmake --build build/windows-release --target capture_daemon -j 4 - - name: Stage zip - shell: pwsh - run: | - $ver = $env:GITHUB_REF_NAME - $out = "release/CaptureSuite-$ver-win64" - New-Item -ItemType Directory -Force -Path $out/daemon, $out/plugins | Out-Null - Copy-Item build/windows-release/daemon/capture_daemon.exe $out/daemon/ - if (Test-Path plugins) { Copy-Item -Recurse plugins/* $out/plugins/ } - Copy-Item LICENSE, LICENSING.md, README.md, NOTICE $out/ - Compress-Archive -Path $out -DestinationPath "CaptureSuite-$ver-win64.zip" - - name: PyInstaller desktop - shell: pwsh - run: | - pip install pyinstaller PySide6 "protobuf>=4.25,<5" - $env:PYTHONPATH = "libs/python/capture_protocol;libs/python/capture_session;desktop" - pyinstaller --noconfirm --onefile --name capture_desktop --paths desktop --paths libs/python/capture_protocol desktop/capture_desktop/__main__.py - - name: Upload release assets - uses: softprops/action-gh-release@v2 - with: - files: | - CaptureSuite-*-win64.zip - dist/capture_desktop.exe - generate_release_notes: true