feat(update): add app-notification delivery and main yaml version reader #104
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI - C++ | |
| on: | |
| push: | |
| branches: [main, classic-next, develop, classic-9.1] | |
| pull_request: | |
| branches: [main, classic-next, develop, classic-9.1] | |
| env: | |
| RUST_BACKTRACE: 1 | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| cxx-parity-gate: | |
| name: CXX Parity Gate | |
| runs-on: windows-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Run CXX parity gate | |
| run: python tools/cxx_api_parity/check_parity_gate.py --repo-root . | |
| - name: Upload CXX parity diagnostics | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: cxx-parity-diagnostics | |
| path: cpp-bindings/classic-cpp-bridge/parity-artifacts/ | |
| if-no-files-found: warn | |
| retention-days: 7 | |
| cli-tests: | |
| name: CLI Tests | |
| needs: [cxx-parity-gate] | |
| runs-on: windows-latest | |
| timeout-minutes: 90 | |
| env: | |
| RUST_BACKTRACE: full | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Set up MSVC dev environment | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x64 | |
| - name: Cache cargo registry | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/registry | |
| key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-registry- | |
| - name: Cache cargo index | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-index- | |
| - name: Cache cargo build | |
| uses: actions/cache@v5 | |
| with: | |
| path: target | |
| key: ${{ runner.os }}-cargo-cpp-cli-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('foundation/**/*.rs', 'business-logic/**/*.rs', 'cpp-bindings/**/*.rs', 'node-bindings/**/*.rs', 'python-bindings/**/*.rs', 'ui-applications/**/*.rs') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-cpp-cli-${{ hashFiles('**/Cargo.lock') }}- | |
| ${{ runner.os }}-cargo-cpp-cli- | |
| - name: Cache vcpkg root | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~\vcpkg | |
| key: ${{ runner.os }}-vcpkg-root-${{ hashFiles('.github/scripts/setup-vcpkg.ps1', 'classic-cli/vcpkg.json', 'classic-gui/vcpkg.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-root- | |
| - name: Set up vcpkg (resilient) | |
| shell: pwsh | |
| run: pwsh -ExecutionPolicy Bypass -File .github/scripts/setup-vcpkg.ps1 | |
| - name: Build and test CLI | |
| run: pwsh -ExecutionPolicy Bypass -File classic-cli/build_cli.ps1 -Test | |
| - name: Upload CLI diagnostics | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: cli-test-diagnostics | |
| path: | | |
| classic-cli/build/Testing/ | |
| classic-cli/build-debug/Testing/ | |
| classic-cli/build/CMakeFiles/CMakeError.log | |
| classic-cli/build/CMakeFiles/CMakeOutput.log | |
| if-no-files-found: warn | |
| retention-days: 7 | |
| gui-tests: | |
| name: GUI Tests | |
| needs: [cxx-parity-gate] | |
| runs-on: windows-latest | |
| timeout-minutes: 120 | |
| env: | |
| RUST_BACKTRACE: full | |
| QT_QPA_PLATFORM: offscreen | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Set up MSVC dev environment | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x64 | |
| - name: Cache cargo registry | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/registry | |
| key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-registry- | |
| - name: Cache cargo index | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-index- | |
| - name: Cache cargo build | |
| uses: actions/cache@v5 | |
| with: | |
| path: target | |
| key: ${{ runner.os }}-cargo-cpp-gui-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('foundation/**/*.rs', 'business-logic/**/*.rs', 'cpp-bindings/**/*.rs', 'node-bindings/**/*.rs', 'python-bindings/**/*.rs', 'ui-applications/**/*.rs') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-cpp-gui-${{ hashFiles('**/Cargo.lock') }}- | |
| ${{ runner.os }}-cargo-cpp-gui- | |
| - name: Cache vcpkg root | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~\vcpkg | |
| key: ${{ runner.os }}-vcpkg-root-${{ hashFiles('.github/scripts/setup-vcpkg.ps1', 'classic-cli/vcpkg.json', 'classic-gui/vcpkg.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-root- | |
| - name: Set up vcpkg (resilient) | |
| shell: pwsh | |
| run: pwsh -ExecutionPolicy Bypass -File .github/scripts/setup-vcpkg.ps1 | |
| - name: Cache GUI vcpkg installed | |
| uses: actions/cache@v5 | |
| with: | |
| path: classic-gui/vcpkg_installed | |
| key: ${{ runner.os }}-vcpkg-installed-gui-${{ hashFiles('classic-gui/vcpkg.json', 'classic-gui/CMakePresets.json', '.github/scripts/setup-vcpkg.ps1') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-installed-gui- | |
| - name: Cache GUI vcpkg archives | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~\AppData\Local\vcpkg\archives | |
| key: ${{ runner.os }}-vcpkg-archives-gui-${{ hashFiles('classic-gui/vcpkg.json', 'classic-gui/CMakePresets.json', '.github/scripts/setup-vcpkg.ps1') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-archives-gui- | |
| - name: GUI test preflight diagnostics | |
| shell: pwsh | |
| run: | | |
| cmake --version | |
| ctest --version | |
| Write-Host "QT_QPA_PLATFORM=$env:QT_QPA_PLATFORM" | |
| - name: Verify Qt resolution policy | |
| shell: pwsh | |
| run: pwsh -ExecutionPolicy Bypass -File classic-gui/verify_qt_resolution.ps1 | |
| - name: Build and test GUI | |
| run: pwsh -ExecutionPolicy Bypass -File classic-gui/build_gui.ps1 -Preset ci -Test -TestTimeoutSec 600 | |
| - name: Upload GUI diagnostics | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: gui-test-diagnostics | |
| path: | | |
| classic-gui/build/Testing/ | |
| classic-gui/build-debug/Testing/ | |
| classic-gui/build/CMakeFiles/CMakeError.log | |
| classic-gui/build/CMakeFiles/CMakeOutput.log | |
| if-no-files-found: warn | |
| retention-days: 7 |