Add nightly build workflow for Windows and Linux#3121
Conversation
There was a problem hiding this comment.
Code Review
This pull request updates cx_Freeze to version 8.6.4, introduces a post-build step to strip debug symbols from shared library (.so) files on Linux, and excludes several unused Python standard library and PySide6/Qt modules to optimize the build size. Feedback was provided to wrap the execution of the 'strip' command in a try-except block to handle cases where the utility is not installed on the host system, preventing build failures.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #3121 +/- ##
===========================================
+ Coverage 84.58% 85.38% +0.79%
===========================================
Files 72 73 +1
Lines 10804 11406 +602
===========================================
+ Hits 9139 9739 +600
- Misses 1665 1667 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This workflow runs nightly builds for both Windows and Linux binaries, checking for new commits on the develop branch and updating the nightly release with new artifacts.
Avoid duplication between linux and windows
| name: Test (Linux) | ||
| uses: ./.github/workflows/run-tests.yml | ||
| with: | ||
| os: ubuntu-latest | ||
| python-version: '3.11' | ||
| secrets: | ||
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - name: Set up Python ${{ matrix.python-version }} | ||
| uses: actions/setup-python@v4 | ||
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install flake8 pytest | ||
| pip install -r requirements.txt -r dev_requirements.txt --timeout 45 | ||
| - name: Lint with flake8 | ||
| run: | | ||
| # stop the build if there are Python syntax errors or undefined names | ||
| flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | ||
| # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide | ||
| flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | ||
| - name: Test with pytest | ||
| run: | | ||
| pytest tests/ | ||
| - name: Set up Python 3.9 - meshroom_compute test | ||
| uses: actions/setup-python@v4 | ||
| with: | ||
| python-version: 3.9 | ||
| - name: Install dependencies (Python 3.9) - meshroom_compute test | ||
| run: | | ||
| python3 -m pip install --upgrade pip | ||
| python3 -m pip install -r requirements.txt --timeout 45 | ||
| - name: Run imports - meshroom_compute test | ||
| run: | | ||
| python3 bin/meshroom_compute -h | ||
| test-windows: |
| name: Test (Windows) | ||
| uses: ./.github/workflows/run-tests.yml | ||
| with: | ||
| os: windows-latest | ||
| python-version: '3.11' |
| runs-on: ${{ inputs.os }} | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v6 | ||
|
|
||
| # ── Primary Python environment ─────────────────────────── | ||
| - name: Set up Python ${{ inputs.python-version }} | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: ${{ inputs.python-version }} | ||
|
|
||
| - name: Install dependencies | ||
| shell: bash | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install flake8 pytest pytest-cov | ||
| pip install -r requirements.txt -r dev_requirements.txt --timeout 45 | ||
|
|
||
| # ── Lint ───────────────────────────────────────────────── | ||
| - name: Lint with flake8 | ||
| run: | | ||
| # Stop the build if there are Python syntax errors or undefined names | ||
| flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | ||
| # Treat all other errors as warnings (line length 127, GitHub editor width) | ||
| flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | ||
|
|
||
| # ── Tests ──────────────────────────────────────────────── | ||
| - name: Test with pytest | ||
| run: pytest tests/ | ||
|
|
||
| # Coverage is generated and uploaded only on Linux to avoid double-counting | ||
| - name: Test with pytest (coverage) | ||
| if: runner.os == 'Linux' | ||
| run: pytest --cov --cov-report=xml --junitxml=junit.xml | ||
|
|
||
| - name: Upload coverage to Codecov | ||
| if: runner.os == 'Linux' | ||
| uses: codecov/codecov-action@v5 | ||
| with: | ||
| token: ${{ secrets.CODECOV_TOKEN }} | ||
|
|
||
| - name: Upload test results to Codecov | ||
| if: runner.os == 'Linux' && !cancelled() | ||
| uses: codecov/test-results-action@v1 | ||
| with: | ||
| token: ${{ secrets.CODECOV_TOKEN }} | ||
|
|
||
| # ── meshroom_compute smoke test (Python 3.9) ───────────── | ||
| # Verifies that the CLI entry-point works on the minimum supported version. | ||
| - name: Set up Python 3.9 – meshroom_compute smoke test | ||
| if: runner.os == 'Linux' | ||
| uses: actions/setup-python@v6 | ||
| with: | ||
| python-version: '3.9' | ||
|
|
||
| - name: Install runtime dependencies (Python 3.9) | ||
| if: runner.os == 'Linux' | ||
| shell: bash | ||
| run: | | ||
| python3.9 -m pip install --upgrade pip | ||
| python3.9 -m pip install -r requirements.txt --timeout 45 | ||
|
|
||
| - name: Run meshroom_compute –h (Python 3.9) | ||
| if: runner.os == 'Linux' | ||
| run: python3.9 bin/meshroom_compute -h |
Description
This workflow runs nightly builds for both Windows and Linux binaries, checking for new commits on the develop branch and updating the nightly release with new artifacts.
Features list
Implementation remarks