diff --git a/.github/workflows/release_wheel_creation.yml b/.github/workflows/release_wheel_creation.yml index ecaf6afbd59..8af5bd93151 100644 --- a/.github/workflows/release_wheel_creation.yml +++ b/.github/workflows/release_wheel_creation.yml @@ -4,6 +4,8 @@ on: push: tags: - '*' + schedule: + - cron: '0 0 3 * *' workflow_dispatch: inputs: git-ref: @@ -14,8 +16,11 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true -jobs: +defaults: + run: + shell: bash -l {0} +jobs: native_wheels: name: Build wheels (${{ matrix.wheel-version }}) on ${{ matrix.os }} for native and cross-compiled architecture runs-on: ${{ matrix.os }} @@ -46,6 +51,7 @@ jobs: TARGET: 'py313' GLOBAL_OPTIONS: "--without-cython --with-distributable-extensions" + # We use pure python for any Windows/python greater than 3.10 exclude: - wheel-version: 'cp311*' os: windows-latest @@ -56,8 +62,17 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Create pyproject.toml + run: | + # Per the cibuildwheel documentation, you can technically use + # CIBW_BEFORE_BUILD to do these steps; however, as of the newest + # version (2.21.3) this feature does not work. This is a hack + # to make cibuildwheel recognize our pre-build requirements + echo -e '[build-system]\n\nrequires = [ "setuptools", "wheel", "cython", "pybind11" ]' > $GITHUB_WORKSPACE/pyproject.toml + cat $GITHUB_WORKSPACE/pyproject.toml + ls -la $GITHUB_WORKSPACE - name: Build wheels - uses: pypa/cibuildwheel@v2.16.5 + uses: pypa/cibuildwheel@v2.21.3 with: output-dir: dist env: @@ -67,7 +82,6 @@ jobs: CIBW_BUILD: ${{ matrix.wheel-version }} CIBW_SKIP: "*-musllinux*" CIBW_BUILD_VERBOSITY: 1 - CIBW_BEFORE_BUILD: pip install cython pybind11 CIBW_ENVIRONMENT: PYOMO_SETUP_ARGS="${{ matrix.GLOBAL_OPTIONS }}" - uses: actions/upload-artifact@v4 with: @@ -110,8 +124,17 @@ jobs: uses: docker/setup-qemu-action@v3 with: platforms: all + - name: Create pyproject.toml + run: | + # Per the cibuildwheel documentation, you can technically use + # CIBW_BEFORE_BUILD to do these steps; however, as of the newest + # version (2.21.3) this feature does not work. This is a hack + # to make cibuildwheel recognize our pre-build requirements + echo -e '[build-system]\n\nrequires = [ "setuptools", "wheel", "cython", "pybind11" ]' > $GITHUB_WORKSPACE/pyproject.toml + cat $GITHUB_WORKSPACE/pyproject.toml + ls -la $GITHUB_WORKSPACE - name: Build wheels - uses: pypa/cibuildwheel@v2.16.5 + uses: pypa/cibuildwheel@v2.21.3 with: output-dir: dist env: @@ -119,7 +142,6 @@ jobs: CIBW_BUILD: ${{ matrix.wheel-version }} CIBW_SKIP: "*-musllinux*" CIBW_BUILD_VERBOSITY: 1 - CIBW_BEFORE_BUILD: pip install cython pybind11 CIBW_ENVIRONMENT: PYOMO_SETUP_ARGS="${{ matrix.GLOBAL_OPTIONS }}" - uses: actions/upload-artifact@v4 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index c8392ac8106..b6b7652ec08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,7 +52,7 @@ CHANGELOG - Remove Octeract from NEOS solvers list (and other testing fixes) (#3374) - Guard tests against broken Gurobi licenses (#3383) - Remove pin to Gurobi 10.0.3 (#3393) - - Add Python 3.13 to Testing Infrastructure (#3401) + - Add Python 3.13 to Testing Infrastructure (#3401, #3419) - Resolve `timeout()` failures on Windows/py3.13 (#3415) - GDP - Fix performance degradation in hull transformation (#3366)