From 7e37f9fc79f4dd359efa19cc37b0d734a350bde5 Mon Sep 17 00:00:00 2001 From: RamSaw Date: Fri, 8 May 2026 10:29:34 +0000 Subject: [PATCH 1/2] ci: Consolidate version tests and update build matrix --- .github/workflows/tests.yml | 63 ++++-------- .github/workflows/versions.yml | 175 --------------------------------- 2 files changed, 18 insertions(+), 220 deletions(-) delete mode 100644 .github/workflows/versions.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fca627c9..07a00dc0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,9 +1,11 @@ name: Tests on: + schedule: + - cron: "30 20 * * *" # 7:30pm UTC + workflow_dispatch: pull_request: paths: - - "*.bazel" - "*.cpp" - "*.c" - "*.cc" @@ -24,11 +26,11 @@ jobs: strategy: max-parallel: 1 matrix: - python-version: ["3.10"] + python-version: ["3.11"] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install python dependencies @@ -41,59 +43,36 @@ jobs: run: | mypy src tests - name: Run clang-format style check for C/C++ programs. - uses: jidicula/clang-format-action@v3.3.0 + uses: jidicula/clang-format-action@v4.11.0 with: clang-format-version: "11" check-path: "/src/bindings/" - fallback-style: "Google" # optional + fallback-style: "Google" build: runs-on: ${{ matrix.os }} needs: [linting] strategy: fail-fast: false - max-parallel: 3 + max-parallel: 12 matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.10", 3.11, 3.12, 3.13, 3.14] + os: [ubuntu-latest, macos-latest] + python-version: ["3.11", "3.12", "3.13", "3.14"] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: submodules: true - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - - name: Setup msbuild Windows - if: runner.os == 'Windows' - uses: microsoft/setup-msbuild@v1.0.2 - - - name: Fix Paths Windows - # Make sure that tar.exe from Git is used not from Windows - if: runner.os == 'Windows' - run: | - @("C:\Program Files\Git\usr\bin") + (Get-Content $env:GITHUB_PATH) | Set-Content $env:GITHUB_PATH -Encoding utf8 - - - name: Build Google DP Unix - if: runner.os != 'Windows' - timeout-minutes: 20 - run: | - bash build_PyDP.sh - - - name: Build Google DP Windows - if: runner.os == 'Windows' + - name: Build Google DP timeout-minutes: 20 run: | - $PYTHONHOME=$(python -c 'import sys; print(sys.executable);').replace('\', '/') - $PYTHONPATH=$(python -c "import sys; print([x for x in sys.path if 'site-packages' in x][0]);").replace('\', '/') - echo "PYTHONHOME=$PYTHONHOME" - echo "PYTHONPATH=$PYTHONPATH" - echo "Running: ${{ matrix.os }}" - bazel.exe --output_base ./bazel-cache build src/python:pydp --config windows --verbose_failures --action_env=PYTHON_BIN_PATH=$PYTHONHOME --action_env=PYTHON_LIB_PATH=$PYTHONPATH - copy ./bazel-bin/src/bindings/_pydp.so ./src/pydp/_pydp.pyd + bash build_PyDP.sh - name: Upgrade pip run: | @@ -106,7 +85,7 @@ jobs: - name: Get poetry cache dir id: poetry-cache run: | - echo "::set-output name=dir::$(poetry config cache-dir)" + echo "dir=$(poetry config cache-dir)" >> $GITHUB_OUTPUT - name: poetry cache uses: actions/cache@v4 @@ -125,21 +104,15 @@ jobs: run: | poetry run python setup.py build bdist_wheel --plat-name macosx_10_14_x86_64 - - name: Build PyDP Linux / Windows - if: runner.os != 'macOS' + - name: Build PyDP Linux + if: runner.os == 'Linux' run: | poetry run python setup.py build bdist_wheel - name: Install Wheel Unix - if: runner.os != 'Windows' run: | pip install `find -L ./ -name "*.whl"` - - name: Install Wheel Windows - if: runner.os == 'Windows' - run: | - Get-ChildItem -Path ./ -Filter "*.whl" -Recurse -File | foreach {pip install $_.FullName} - - name: Import Package run: | python -c "import pydp; print(pydp.__version__)" diff --git a/.github/workflows/versions.yml b/.github/workflows/versions.yml deleted file mode 100644 index 911bb235..00000000 --- a/.github/workflows/versions.yml +++ /dev/null @@ -1,175 +0,0 @@ -# Version Tests -# To speed up development we don't run all the tests when opening and updating a PR. -# This test will run older versions of Python so we don't consume a lot of extra actions -# when we don't need to. It's important to keep this in sync with tests.yml so that -# they are essentially doing the same thing only this runs on a schedule. -name: Version Tests -on: - schedule: - - cron: "30 20 * * *" # 7:30pm UTC, 1am IST - pull_request: - branches: - - dev - workflow_dispatch: - inputs: - none: - description: "Run Version Tests Manually" - required: false - -jobs: - linting: - runs-on: ubuntu-latest - strategy: - max-parallel: 1 - matrix: - python-version: ["3.10"] - steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Install python dependencies - run: | - pip install black mypy - - name: Black - run: | - black . - - name: MyPY - run: | - mypy src tests - - name: Run clang-format style check for C/C++ programs. - uses: jidicula/clang-format-action@v4.11.0 - with: - clang-format-version: "11" - check-path: "/src/bindings/" - fallback-style: "Google" # optional - - build: - runs-on: ${{ matrix.os }} - # needs: [linting] # don't require linting to pass - strategy: - fail-fast: false - max-parallel: 12 - matrix: - # TODO: fix for Mac and Windows. - os: [ubuntu-latest, macos-latest] - python-version: ["3.11", "3.12", "3.13", "3.14"] - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Install Protobuf Compiler Linux - if: runner.os == 'Linux' - run: | - sudo apt-get update - sudo apt-get install -y protobuf-compiler libprotobuf-dev - - - name: Install Protobuf Compiler Windows - if: runner.os == 'Windows' - run: | - $protobufVersion = "32.0" - $downloadUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$protobufVersion/protoc-$protobufVersion-win64.zip" - $destinationFolder = "$env:TEMP\protoc" - - Invoke-WebRequest -Uri $downloadUrl -OutFile protoc.zip - Expand-Archive -Path protoc.zip -DestinationPath $destinationFolder - - # Add the protoc directory to the PATH - echo "$destinationFolder\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - - name: Verify protoc installation - if: runner.os != 'macOS' - run: protoc --version - - - name: Download proto header Windows - if: runner.os == 'Windows' - run: vcpkg install protobuf:x64-windows - - - name: Setup msbuild Windows - if: runner.os == 'Windows' - uses: microsoft/setup-msbuild@v1.0.2 - - - name: Setup Visual studio Windows - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Build Google DP Unix - if: runner.os != 'Windows' - timeout-minutes: 20 - run: | - bash build_PyDP.sh - - - name: Build Google DP Windows - if: runner.os == 'Windows' - timeout-minutes: 20 - run: | - echo "Running: ${{ matrix.os }}" - mkdir build - cd build - cmake .. -DCMAKE_BUILD_TYPE=Release - cmake --build . --config Release -j - echo %CD% - dir - move /Y .\src\bindings\PyDP\_pydp.pyd ..\src\pydp\_pydp.pyd - - - name: Upgrade pip - run: | - pip install --upgrade --user pip - - - name: Install Poetry - run: | - pip install poetry - - - name: Get poetry cache dir - id: poetry-cache - run: | - echo "dir=$(poetry config cache-dir)" >> $GITHUB_OUTPUT - - - name: poetry cache - uses: actions/cache@v4 - with: - path: ${{ steps.poetry-cache.outputs.dir }} - key: ${{ runner.os }}-pip-py${{ matrix.python-version }}-${{ hashFiles('**/pyproject.toml') }} - restore-keys: | - ${{ runner.os }}-pip-py${{ matrix.python-version }}- - - - name: Install dependencies - run: | - poetry lock - poetry install - - - name: Build PyDP macOS - if: runner.os == 'macOS' - run: | - poetry run python setup.py build bdist_wheel - - - name: Build PyDP Linux / Windows - if: runner.os != 'macOS' - run: | - poetry run python setup.py build bdist_wheel - - - name: Install Wheel Unix - if: runner.os != 'Windows' - run: | - pip install `find -L ./ -name "*.whl"` - - - name: Install Wheel Windows - if: runner.os == 'Windows' - run: | - Get-ChildItem -Path ./ -Filter "*.whl" -Recurse -File | foreach {pip install $_.FullName} - - - name: Import Package - run: | - python -c "import pydp; print(pydp.__version__)" - - - name: Run Pytest - run: | - poetry run pytest tests -n auto From 0a15f45430dea32a7ed04a78bdf9a5140b8a8f76 Mon Sep 17 00:00:00 2001 From: RamSaw Date: Fri, 8 May 2026 13:09:01 +0000 Subject: [PATCH 2/2] ci: Remove --plat-name from macOS build step per PR feedback --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 07a00dc0..7742eb3e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -102,7 +102,7 @@ jobs: - name: Build PyDP macOS if: runner.os == 'macOS' run: | - poetry run python setup.py build bdist_wheel --plat-name macosx_10_14_x86_64 + poetry run python setup.py build bdist_wheel - name: Build PyDP Linux if: runner.os == 'Linux'