Skip to content

Add nightly build workflow for Windows and Linux#3121

Open
fabiencastan wants to merge 3 commits into
developfrom
ci/nightly
Open

Add nightly build workflow for Windows and Linux#3121
fabiencastan wants to merge 3 commits into
developfrom
ci/nightly

Conversation

@fabiencastan
Copy link
Copy Markdown
Member

@fabiencastan fabiencastan commented Jun 4, 2026

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

  • Create and update a nightly draft-release
  • Reduce binary size
  • migrate build code into build-binary (for linux and windows)
  • Simplify continuous-integration: avoid duplication between linux and windows

Implementation remarks

  • Update cx_Freeze from 7.2.10 to 8.6.4
  • Update versions of github actions

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread setup.py
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.38%. Comparing base (ecc6fdf) to head (c4994b4).
⚠️ Report is 58 commits behind head on develop.
✅ All tests successful. No failed tests found.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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
Comment on lines +23 to +31
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:
Comment on lines +32 to +36
name: Test (Windows)
uses: ./.github/workflows/run-tests.yml
with:
os: windows-latest
python-version: '3.11'
Comment thread .github/workflows/run-tests.yml Fixed
Comment on lines +33 to +97
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
@fabiencastan fabiencastan added this to the Meshroom 2026.1.0 milestone Jun 4, 2026
@fabiencastan fabiencastan added scope:deploy Anything related to deploying (packaging etc) ci labels Jun 4, 2026
@fabiencastan fabiencastan marked this pull request as ready for review June 4, 2026 08:59
@cbentejac cbentejac self-requested a review June 8, 2026 10:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci scope:deploy Anything related to deploying (packaging etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants