Run divergent optima example in CI. #757
Workflow file for this run
This file contains 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, test, and deploy, wheels | |
on: | |
schedule: | |
- cron: "0 0 1 * *" | |
release: | |
types: [created] | |
pull_request: | |
branches: [main, dev] | |
jobs: | |
macOS_wheel: | |
name: Build macOS/x86 wheels | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python: [3.8, 3.9, "3.10", "3.11"] | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install deps | |
run: | | |
brew install gsl | |
# Upgrade pip to get bdist_wheel | |
pip install --upgrade pip | |
pip install setuptools wheel build | |
# Instead of letting setup.py install a newer numpy we install it here | |
# using the oldest supported version for ABI compatibility | |
pip install oldest-supported-numpy | |
- name: Build Wheel | |
run: | | |
python -m build --wheel | |
- name: Delocate to bundle dynamic libs | |
run: | | |
pip install delocate | |
delocate-wheel -v dist/*.whl | |
# The following is going to be fragile: | |
# 1. The workflow gives a bizzare platform | |
# name to the wheels, macosx_11_0. | |
# 1a. On 19 Nov, 2022, it seems to have changed to macosx_12_0 | |
# 2. But, the CI totally works on the 10_15 platform | |
# 3. The odd platform name means the wheels won't | |
# install on any macosx I can get ahold of. | |
# 4. So, we just rename them. | |
- name: rename wheel (HACK ALERT) | |
run: | | |
for i in dist/*.whl; do | |
echo $i | |
mv $i $(ls $i | sed 's/macosx_12_0/macosx_10_15/g') | |
done | |
- name: Upload Wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macOS-wheel-${{ matrix.python }} | |
path: dist | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.8 | |
- name: Build sdist | |
shell: bash | |
run: | | |
python -m pip install --upgrade pip setuptools | |
python setup.py sdist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v3 | |
with: | |
name: sdist | |
path: dist | |
manylinux2_28: | |
name: Build and test Linux wheels | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python: ["python3.8", "python3.9", "python3.10", "python3.11"] | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Build wheels in docker | |
shell: bash | |
run: | | |
bash deployment/linux_wheels/run_wheel_workflow.sh ${{ matrix.python }} | |
#docker run --rm -v `pwd`:/project -w /project quay.io/pypa/manylinux_2_28_x86_64:2022-10-02-69a0972 bash .github/workflows/manylinux/buildwheels.sh | |
- name: Upload Wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux-wheels | |
path: dist/wheelhouse | |
manylinux2_28_test: | |
name: Build package from source dist | |
runs-on: ubuntu-latest | |
needs: ['build_sdist'] | |
strategy: | |
matrix: | |
python: [3.8, 3.9, "3.10", "3.11"] | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download sdist | |
uses: actions/download-artifact@v3.0.2 | |
with: | |
name: sdist | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install sdist into venv | |
run: | | |
python -m venv sdist_venv | |
source sdist_venv/bin/activate | |
python -m pip install --upgrade pip setuptools | |
python -m pip install *.gz | |
# The cd is to move us away from | |
# the project repo root where the module is not built | |
cd sdist_venv | |
python -c "import fwdpy11;print(fwdpy11.__version__)" | |
deactivate | |
rm -rf sdist_venv | |
# - name: Install wheel and test | |
# run: | | |
# python -VV | |
# # pip install minimal dependencies | |
# pip install --upgrade pip | |
# pip install wheel | |
# pip install -r requirements/wheel_building_workflow.txt | |
# # delete the source dir to prevent pip from mistaking it for | |
# # the package | |
# rm -rf fwdpy11 | |
# # Install the local wheel | |
# pip install fwdpy11 --no-deps --no-index --pre --only-binary fwdpy11 -f . | |
# python -c "import fwdpy11;print(fwdpy11.__version__)" | |
macOS_test: | |
name: Test macOS/x86 wheels | |
needs: ['macOS_wheel'] | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python: [3.8, 3.9, "3.10", "3.11"] | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download wheels | |
uses: actions/download-artifact@v3.0.2 | |
with: | |
name: macOS-wheel-${{ matrix.python }} | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: ls | |
run: | | |
ls -lhrt | |
- name: Install wheel and test | |
run: | | |
python -VV | |
# pip install minimal dependencies | |
pip install --upgrade pip | |
pip install wheel | |
pip install -r requirements/wheel_building_workflow.txt | |
# delete the source dir to prevent pip from mistaking it for | |
# the package | |
rm -rf fwdpy11 | |
# Install the local wheel | |
pip install fwdpy11 --no-deps --no-index --pre --only-binary fwdpy11 -f . | |
python -c "import fwdpy11;print(fwdpy11.__version__)" | |
upload_to_PyPI: | |
name: Upload to PyPI | |
runs-on: ubuntu-latest | |
needs: ['macOS_test', 'manylinux2_28', 'manylinux2_28_test'] | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@0.12.0 | |
with: | |
access_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Download all | |
uses: actions/download-artifact@v3.0.2 | |
- name: Move to dist | |
run: | | |
mkdir dist | |
cp */*.{whl,gz} dist/. | |
- name: Publish distribution to PRODUCTION PyPI | |
if: github.event_name == 'release' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_UPLOAD }} |