Disable verbose and debug for tests. #326
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: Build and Test | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - 95-test-tiling-multiquality | |
| tags: | |
| - v* | |
| - exp* | |
| pull_request: | |
| branches: | |
| - master | |
| env: | |
| CWIPC_RELEASE_TAG: nightly | |
| USERNAME: MotionSpell | |
| VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg | |
| FEED_URL: https://nuget.pkg.github.com/MotionSpell/index.json | |
| VCPKG_BINARY_SOURCES: clear;nuget,https://nuget.pkg.github.com/MotionSpell/index.json,readwrite | |
| TESTLATENCY_ARGS: --uncompressed --npoints 4000 --duration 30 --fps 5 --seg_dur 2000 --print-latencies | |
| # The following environment variables can be set to run the tests in verbose or debug mode. | |
| # Only use to find issues that show up in Github Actions but not on developer machines. | |
| TESTLATENCY_VERBOSE: | |
| # TESTLATENCY_VERBOSE: --verbose | |
| # TESTLATENCY_VERBOSE: --verbose --debug | |
| # LLDASH_LOGGING: 1 | |
| jobs: | |
| linux-build: | |
| runs-on: ubuntu-latest | |
| env: | |
| VCPKG_DEFAULT_TRIPLET: x64-linux-dynamic | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'recursive' | |
| fetch-depth: 0 | |
| - name: Set up environment variables | |
| run: | | |
| echo "SIGNALS_REPO=https://github.com/MotionSpell/signals.git" >> $GITHUB_ENV | |
| echo "BUILD_DIR=${{ github.workspace }}" >> $GITHUB_ENV | |
| - name: Bootstrap vcpkg | |
| shell: bash | |
| run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh | |
| - name: Install mono for vcpkg | |
| shell: bash | |
| run: sudo apt install mono-complete | |
| - name: Add NuGet Sources for vcpkg | |
| shell: bash | |
| run: | | |
| mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \ | |
| sources add \ | |
| -Source "${{ env.FEED_URL }}" \ | |
| -StorePasswordInClearText \ | |
| -Name GitHubPackages \ | |
| -UserName "${{ env.USERNAME }}" \ | |
| -Password "${{ secrets.GH_PACKAGES_TOKEN }}" | |
| mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \ | |
| setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \ | |
| -Source "${{ env.FEED_URL }}" | |
| - name: Install dependencies with install_debian_prerequisites.sh script | |
| run: scripts/install_debian_prerequisites.sh | |
| - name: Fix for libcrypto build | |
| run: | | |
| sudo apt-get update && \ | |
| sudo apt-get autoremove -y libtool && \ | |
| sudo apt-get install -y libtool && \ | |
| libtoolize --copy --force | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: "~3.31.1" | |
| - name: Setup vcpkg | |
| uses: lukka/run-vcpkg@v11 | |
| - name: CMake configure, build vcpkg packages, build & test | |
| uses: lukka/run-cmake@v10 | |
| with: | |
| configurePreset: linux-production | |
| buildPreset: linux-production | |
| testPreset: linux-production | |
| packagePreset: linux-production | |
| - name: Upload vcpkg buildtrees in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux-buildtrees | |
| path: ./vcpkg/buildtrees | |
| retention-days: 5 | |
| - name: Upload cmake build folder in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux-build-folder | |
| path: ./build | |
| retention-days: 5 | |
| - name: Upload package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lldash-linux-x86_64 | |
| path: build/package/lldash-*.tar.gz | |
| - name: download cwipc | |
| uses: robinraju/release-downloader@v1 | |
| with: | |
| repository: cwi-dis/cwipc | |
| tag: ${{ env.CWIPC_RELEASE_TAG }} | |
| fileName: cwipc-ubuntu2404-*-built.tar.gz | |
| out-file-path: cwipc-installed | |
| extract: true | |
| - name: Install cwipc and other pipeline test dependencies | |
| run: | | |
| cmake --install build | |
| source tests/setup_test_environment.sh | |
| cwipc_view --version | |
| - name: Run integration tests | |
| timeout-minutes: 2 | |
| run: | | |
| source .venv/bin/activate | |
| python tests/testlatency/testlatency.py ${{ env.TESTLATENCY_VERBOSE }} ${{ env.TESTLATENCY_ARGS }} --logdir logs | |
| - name: Upload all logs | |
| if: always() # for debug purposes | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux-test-logs | |
| path: ${{ env.BUILD_DIR }}/logs/**/* | |
| retention-days: 5 | |
| macos-build: | |
| runs-on: macos-latest | |
| env: | |
| VCPKG_DEFAULT_TRIPLET: arm64-osx-dynamic | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| - name: Set up Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: latest-stable | |
| - name: Set up environment variables | |
| run: | | |
| echo "BUILD_DIR=${{ github.workspace }}" >> $GITHUB_ENV | |
| - name: Bootstrap vcpkg | |
| shell: bash | |
| run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh | |
| - name: Install nuget and mono for vcpkg | |
| shell: bash | |
| run: brew install mono nuget | |
| - name: Add NuGet Sources for vcpkg | |
| shell: bash | |
| run: | | |
| mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \ | |
| sources add \ | |
| -Source "${{ env.FEED_URL }}" \ | |
| -StorePasswordInClearText \ | |
| -Name GitHubPackages \ | |
| -UserName "${{ env.USERNAME }}" \ | |
| -Password "${{ secrets.GH_PACKAGES_TOKEN }}" | |
| mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \ | |
| setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \ | |
| -Source "${{ env.FEED_URL }}" | |
| - name: Install dependencies with install_homebrew_prerequisites.sh script | |
| run: scripts/install_homebrew_prerequisites.sh | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: "~3.31.1" | |
| - name: Setup vcpkg | |
| if: false # Testing if nuget caching works when vcpkg is executed by cmake. | |
| uses: lukka/run-vcpkg@v11 | |
| - name: CMake configure, build vcpkg packages, build & test | |
| uses: lukka/run-cmake@v10 | |
| with: | |
| configurePreset: mac-production | |
| buildPreset: mac-production | |
| testPreset: mac-production | |
| packagePreset: mac-production | |
| - name: Upload vcpkg buildtrees in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-vcpkg-buildtrees | |
| path: ./vcpkg/buildtrees | |
| retention-days: 5 | |
| - name: Upload cmake build folder in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-build-folder | |
| path: ./build | |
| retention-days: 5 | |
| - name: Upload package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lldash-mac-arm64 | |
| path: build/package/lldash-*.tar.gz | |
| - name: Install cwipc and other pipeline test dependencies | |
| run: | | |
| cmake --install build | |
| brew install [email protected] | |
| source tests/setup_test_environment.sh | |
| cwipc_view --version | |
| - name: Run integration tests | |
| timeout-minutes: 2 | |
| run: | | |
| source .venv/bin/activate | |
| python tests/testlatency/testlatency.py ${{ env.TESTLATENCY_VERBOSE }} ${{ env.TESTLATENCY_ARGS }} --logdir logs | |
| - name: Upload all logs | |
| if: always() # Upload logs even if the test fails for debug purposes | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mac-test-logs | |
| path: ${{ env.BUILD_DIR }}/logs/**/* | |
| retention-days: 5 | |
| macos-intel-build: | |
| runs-on: macos-15-intel | |
| env: | |
| VCPKG_DEFAULT_TRIPLET: x64-osx-dynamic | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| - name: Set up Xcode | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: latest-stable | |
| - name: Set up environment variables | |
| run: | | |
| echo "BUILD_DIR=${{ github.workspace }}" >> $GITHUB_ENV | |
| - name: Install mono for vcpkg | |
| shell: bash | |
| run: brew install mono | |
| - name: Bootstrap vcpkg | |
| shell: bash | |
| run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh | |
| - name: Add NuGet Sources for vcpkg | |
| shell: bash | |
| run: | | |
| mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \ | |
| sources add \ | |
| -Source "${{ env.FEED_URL }}" \ | |
| -StorePasswordInClearText \ | |
| -Name GitHubPackages \ | |
| -UserName "${{ env.USERNAME }}" \ | |
| -Password "${{ secrets.GH_PACKAGES_TOKEN }}" | |
| mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \ | |
| setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \ | |
| -Source "${{ env.FEED_URL }}" | |
| - name: Install dependencies with install_homebrew_prerequisites.sh script | |
| run: scripts/install_homebrew_prerequisites.sh | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: "~3.31.1" | |
| - name: Setup vcpkg | |
| if: false # Testing if nuget caching works when vcpkg is executed by cmake. | |
| uses: lukka/run-vcpkg@v11 | |
| - name: CMake configure, build vcpkg packages, build & test | |
| uses: lukka/run-cmake@v10 | |
| with: | |
| configurePreset: intelmac-production | |
| buildPreset: intelmac-production | |
| testPreset: intelmac-production | |
| packagePreset: intelmac-production | |
| - name: Upload vcpkg buildtrees in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-intel-vcpkg-buildtrees | |
| path: ./vcpkg/buildtrees | |
| retention-days: 5 | |
| - name: Upload cmake build folder in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-intel-build-folder | |
| path: ./build | |
| retention-days: 5 | |
| - name: Upload package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lldash-mac-x86_64 | |
| path: build/package/lldash-*.tar.gz | |
| - name: Install cwipc and other pipeline test dependencies | |
| run: | | |
| cmake --install build | |
| brew install [email protected] || true | |
| source tests/setup_test_environment.sh | |
| cwipc_view --version | |
| - name: Run integration tests | |
| timeout-minutes: 2 | |
| run: | | |
| source .venv/bin/activate | |
| python tests/testlatency/testlatency.py ${{ env.TESTLATENCY_VERBOSE }} ${{ env.TESTLATENCY_ARGS }} --logdir logs | |
| - name: Upload all logs | |
| if: always() # Upload logs even if the test fails for debug purposes | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: intelmac-test-logs | |
| path: ${{ env.BUILD_DIR }}/logs/**/* | |
| retention-days: 5 | |
| macos-universal-build: | |
| runs-on: macos-latest | |
| needs: | |
| - macos-build | |
| - macos-intel-build | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| - name: Get lipomerge | |
| run: | |
| git clone https://github.com/faaxm/lipomerge | |
| - name: Create download directory and upload directory | |
| run: | | |
| mkdir -p ${{ github.workspace }}/Assets | |
| mkdir -p ${{ github.workspace }}/tmp | |
| - name: Download MacOS Arm64 package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-mac-arm64 | |
| path: ${{ github.workspace }}/tmp | |
| - name: Download MacOS Intel package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-mac-x86_64 | |
| path: ${{ github.workspace }}/tmp | |
| - name: Create universal binary tree | |
| run: | | |
| set -x | |
| tar xfv ${{ github.workspace }}/tmp/*arm64*.tar.gz | |
| tar xfv ${{ github.workspace }}/tmp/*x86_64*.tar.gz | |
| pwd | |
| ls -l | |
| ls -l lipomerge | |
| dir_arm64=$(echo *arm64*) | |
| dir_x86_64=$(echo *x86_64*) | |
| dir_universal=${dir_arm64/arm64/universal} | |
| python3 lipomerge/lipomerge.py ${dir_arm64} ${dir_x86_64} ${dir_universal} | |
| echo "Universal directory: $dir_universal" | |
| tar cfz ${{ github.workspace }}/Assets/${dir_universal}.tar.gz ${dir_universal} | |
| - name: Upload package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lldash-mac-universal | |
| path: ${{ github.workspace }}/Assets/lldash-*.tar.gz | |
| windows-build: | |
| runs-on: windows-latest | |
| env: | |
| VCPKG_DEFAULT_TRIPLET: x64-mingw-dynamic | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'recursive' | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| - name: Get all tags | |
| shell: bash | |
| run: | | |
| git show-ref --tags | |
| git log -10 | |
| git describe | |
| - name: Install correct Python version | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Set up environment variables | |
| run: | | |
| echo "BUILD_DIR=$env:GITHUB_WORKSPACE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| shell: pwsh | |
| - name: Bootstrap vcpkg | |
| shell: pwsh | |
| run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat | |
| - name: Add NuGet sources for vcpkg | |
| shell: pwsh | |
| run: | | |
| .$(${{ env.VCPKG_EXE }} fetch nuget) ` | |
| sources add ` | |
| -Source "${{ env.FEED_URL }}" ` | |
| -StorePasswordInClearText ` | |
| -Name GitHubPackages ` | |
| -UserName "${{ env.USERNAME }}" ` | |
| -Password "${{ secrets.GH_PACKAGES_TOKEN }}" | |
| .$(${{ env.VCPKG_EXE }} fetch nuget) ` | |
| setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" ` | |
| -Source "${{ env.FEED_URL }}" | |
| - name: Setup MSYS2 | |
| uses: msys2/setup-msys2@v2 | |
| id: msys2 | |
| with: | |
| msystem: MINGW64 | |
| path-type: inherit | |
| - name: Update msys2 using our install_mingw64_prerequisites script | |
| shell: msys2 {0} | |
| run: scripts/install_mingw64_prerequisites.sh | |
| - name: Setup vcpkg | |
| uses: lukka/run-vcpkg@v11 | |
| - name: manually run CMake configure, build vcpkg packages, build & test | |
| shell: msys2 {0} | |
| env: | |
| MSYS2_PATH_TYPE: inherit | |
| run: | | |
| which cmake | |
| which make | |
| which mingw32-make | |
| cmake --version | |
| make --version | |
| mingw32-make --version | |
| ./scripts/buildpackage.sh mingw-production | |
| - name: Upload vcpkg buildtrees in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-vcpkg-buildtrees | |
| path: ./vcpkg/buildtrees | |
| retention-days: 5 | |
| - name: Upload cmake build folder in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-build-folder | |
| path: ./build | |
| retention-days: 5 | |
| # xxxjack I wonder why this is needed: exactly this same logic should be included in the CMake install process... | |
| # xxxjack unless I am mistaken and forgot to copy it over from cwipc.... | |
| # xxxjack anyway, this should be done in cmake. | |
| - name: Analyze library dependencies and fix paths | |
| if: false | |
| shell: pwsh | |
| run: | | |
| Write-Host "===== ANALYZING LIBRARY DEPENDENCIES =====" -ForegroundColor Cyan | |
| # Function to analyze DLL dependencies | |
| function Get-DllDependencies { | |
| param( | |
| [Parameter(Mandatory=$true)] | |
| [string]$FilePath | |
| ) | |
| if (-not (Test-Path $FilePath)) { | |
| Write-Host "File not found: $FilePath" -ForegroundColor Red | |
| return | |
| } | |
| Write-Host "Analyzing dependencies for: $FilePath" -ForegroundColor Yellow | |
| # Use objdump from MSYS2/MinGW to list dependencies | |
| $output = & "C:\msys64\mingw64\bin\objdump.exe" -p $FilePath | Select-String "DLL Name" | |
| $missingDeps = @() | |
| Write-Host "Dependencies:" -ForegroundColor Green | |
| $output | ForEach-Object { | |
| $dllName = $_.ToString().Trim() -replace "DLL Name: ", "" | |
| Write-Host " - $dllName" | |
| # Skip Windows system DLLs | |
| if ($dllName -match "^(ntdll|KERNEL32|KERNELBASE|msvcrt|bcrypt|ADVAPI32|RPCRT4|CRYPT32|ucrtbase|WS2_32|USER32|GDI32|ole32|SHELL32|SHLWAPI)\.dll$") { | |
| Write-Host " 🔵 System DLL" -ForegroundColor Blue | |
| return | |
| } | |
| # Try to locate each dependency | |
| $found = $false | |
| $searchPaths = @( | |
| "${{ github.workspace }}\build\bin", | |
| "${{ github.workspace }}\build\vcpkg_installed\x64-mingw-dynamic\bin", | |
| "${{ github.workspace }}\build\vcpkg_installed\x64-mingw-dynamic\lib", | |
| "C:\msys64\mingw64\bin" | |
| ) | |
| $foundPath = "" | |
| foreach ($path in $searchPaths) { | |
| $fullPath = Join-Path $path $dllName | |
| if (Test-Path $fullPath) { | |
| $foundPath = $fullPath | |
| $found = $true | |
| Write-Host " ✅ Found at: $fullPath" -ForegroundColor Green | |
| break | |
| } | |
| } | |
| if (-not $found) { | |
| Write-Host " ❌ NOT FOUND in search paths" -ForegroundColor Red | |
| $missingDeps += $dllName | |
| } else { | |
| # Copy dependency to build/bin to ensure it's available | |
| $targetPath = Join-Path "${{ github.workspace }}\build\bin" $dllName | |
| if ((-not (Test-Path $targetPath)) -and $foundPath -ne $targetPath) { | |
| Copy-Item $foundPath $targetPath | |
| Write-Host " 📋 Copied to build/bin directory" -ForegroundColor Cyan | |
| } | |
| } | |
| } | |
| return $missingDeps | |
| } | |
| # Collect all missing dependencies | |
| $missingDependencies = @() | |
| # Check key libraries | |
| $libraries = @( | |
| "${{ github.workspace }}\build\bin\bin2dash.so", | |
| "${{ github.workspace }}\build\bin\signals-unity-bridge.so" | |
| ) | |
| foreach ($lib in $libraries) { | |
| $missingDeps = Get-DllDependencies -FilePath $lib | |
| $missingDependencies += $missingDeps | |
| Write-Host "" | |
| } | |
| # Analyze missing dependencies (if any) | |
| if ($missingDependencies.Count -gt 0) { | |
| Write-Host "⚠️ Missing dependencies:" -ForegroundColor Yellow | |
| $missingDependencies | Sort-Object -Unique | ForEach-Object { | |
| Write-Host " - $_" -ForegroundColor Red | |
| } | |
| # Search for missing dependencies in the MSYS2 environment | |
| Write-Host "Searching MSYS2 for missing packages..." -ForegroundColor Cyan | |
| foreach ($dep in ($missingDependencies | Sort-Object -Unique)) { | |
| $output = & "C:\msys64\usr\bin\pacman.exe" -Fy $dep 2>$null | |
| if ($output) { | |
| Write-Host "Found package for $dep in pacman database" -ForegroundColor Green | |
| $output | Out-String | Write-Host | |
| } | |
| } | |
| } else { | |
| Write-Host "✅ All dependencies found!" -ForegroundColor Green | |
| } | |
| # Copy required MSYS2 runtime DLLs to ensure they're available | |
| Write-Host "Copying MSYS2 runtime libraries to build/bin..." -ForegroundColor Cyan | |
| $msys2RuntimeDlls = @( | |
| "libgcc_s_seh-1.dll", | |
| "libwinpthread-1.dll", | |
| "libstdc++-6.dll" | |
| ) | |
| foreach ($dll in $msys2RuntimeDlls) { | |
| $sourcePath = "C:\msys64\mingw64\bin\$dll" | |
| $targetPath = "${{ github.workspace }}\build\bin\$dll" | |
| if (Test-Path $sourcePath) { | |
| Copy-Item -Path $sourcePath -Destination $targetPath -Force | |
| Write-Host "Copied $dll to build/bin" -ForegroundColor Green | |
| } else { | |
| Write-Host "⚠️ Could not find $dll in MSYS2" -ForegroundColor Yellow | |
| } | |
| } | |
| # Copy vcpkg dependencies | |
| Write-Host "Copying vcpkg libraries to build/bin..." -ForegroundColor Cyan | |
| $vcpkgBinDir = "${{ github.workspace }}\build\vcpkg_installed\x64-mingw-dynamic\bin" | |
| if (Test-Path $vcpkgBinDir) { | |
| $dllCount = 0 | |
| foreach ($dll in (Get-ChildItem -Path $vcpkgBinDir -Filter "*.dll")) { | |
| $targetPath = Join-Path "${{ github.workspace }}\build\bin" $dll.Name | |
| if (-not (Test-Path $targetPath)) { | |
| Copy-Item $dll.FullName $targetPath -Force | |
| $dllCount++ | |
| } | |
| } | |
| Write-Host "✅ Copied $dllCount DLLs from vcpkg to build/bin" -ForegroundColor Green | |
| } else { | |
| Write-Host "❌ vcpkg bin directory not found: $vcpkgBinDir" -ForegroundColor Red | |
| } | |
| # Ensure SIGNALS_SMD_PATH is properly set | |
| $env:SIGNALS_SMD_PATH = "${{ github.workspace }}\build\bin" | |
| Write-Host "SIGNALS_SMD_PATH set to: $env:SIGNALS_SMD_PATH" -ForegroundColor Cyan | |
| # List DLLs in build/bin after copying | |
| Write-Host "Contents of build/bin after copying dependencies:" -ForegroundColor Yellow | |
| Get-ChildItem -Path "${{ github.workspace }}\build\bin\*.dll" | | |
| Where-Object { $_.Name -match "^(lib|msys-|libgcc|libwin|libstdc)" } | | |
| Sort-Object Name | | |
| Format-Table Name, Length, LastWriteTime | |
| - name: Create package | |
| run: cpack --preset mingw-production | |
| - name: Upload package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lldash-windows-x86_64 | |
| path: build/package/lldash-*.tar.gz | |
| windows-test: | |
| runs-on: windows-latest | |
| needs: | |
| - windows-build | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'recursive' | |
| - name: Install correct Python version | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Download Windows package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-windows-x86_64 | |
| path: ${{ github.workspace }} | |
| - name: Install lldash | |
| shell: bash | |
| run: | | |
| tar xfv lldash-windows-*.tar.gz | |
| mv lldash-windows-*/ installed | |
| ls -l | |
| - name: Install cwipc and other pipeline test dependencies | |
| shell: pwsh | |
| run: | | |
| python --version | |
| & tests\setup_test_environment.ps1 | |
| python --version | |
| pip freeze | |
| cwipc_view --version | |
| - name: Run integration tests | |
| timeout-minutes: 2 | |
| shell: pwsh | |
| run: | | |
| & .\.venv\Scripts\Activate.ps1 | |
| python tests/testlatency/testlatency.py ${{ env.TESTLATENCY_VERBOSE }} ${{ env.TESTLATENCY_ARGS }} --logdir logs | |
| - name: Upload test logs | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-test-logs | |
| path: | | |
| ${{ env.BUILD_DIR }}/logs/**/* | |
| ${{ env.BUILD_DIR }}/logs/* | |
| retention-days: 5 | |
| - name: Upload test venv folder in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-test-venv-folder | |
| path: ${{ env.BUILD_DIR }}/.venv/ | |
| include-hidden-files: true | |
| retention-days: 5 | |
| - name: Upload test installed folder in case of failure | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-test-installed-folder | |
| path: ./installed | |
| retention-days: 5 | |
| create-release: | |
| if: startsWith(github.ref, 'refs/tags/') | |
| needs: | |
| - linux-build | |
| - macos-build | |
| - macos-intel-build | |
| - macos-universal-build | |
| - windows-build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: 'recursive' | |
| - name: Create Assets folder | |
| run: mkdir -p ${{ github.workspace }}/Assets | |
| - name: Download Linux package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-linux-x86_64 | |
| path: ${{ github.workspace }}/Assets | |
| - name: Download MacOS Arm64 package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-mac-arm64 | |
| path: ${{ github.workspace }}/Assets | |
| - name: Download MacOS Intel package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-mac-x86_64 | |
| path: ${{ github.workspace }}/Assets | |
| - name: Download MacOS Intel package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-mac-universal | |
| path: ${{ github.workspace }}/Assets | |
| - name: Download Windows package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lldash-windows-x86_64 | |
| path: ${{ github.workspace }}/Assets | |
| - name: Create release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: ${{ github.workspace }}/Assets/* | |
| body: | | |
| Release for ${{ github.ref }} | |
| generate_release_notes: true | |
| draft: true | |
| prerelease: true |