name: Python cibuildwheel on: push: branches: [ master, develop, actions_pypi ] # Sequence of patterns matched against refs/tags tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 pull_request: branches: [ master ] jobs: python_bindings: name: py${{ matrix.python-version }}-${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: # Ensure that a wheel builder finishes even if another fails fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: [36, 37, 38, 39, 310] steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.9.x - name: Install Python dependencies run: | python -m pip install --upgrade pip python -m pip install requests packaging cibuildwheel - name: Figure out the TestPyPi/PyPi Version shell: bash run: | if [[ "$GITHUB_REF" == *"refs/tags"* ]]; then python dev/extract_version.py --pypi --replace-setup-py else python dev/extract_version.py --replace-setup-py fi; - name: Build and test wheels env: MACOSX_DEPLOYMENT_TARGET: 10.9 CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.9 SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk CIBW_BEFORE_BUILD: pip install setuptools wheel Cython requests jinja2 pyyaml CIBW_ENVIRONMENT_LINUX: COOLPROP_CMAKE=default,64 CIBW_BUILD: cp${{ matrix.python-version }}-* CIBW_ARCHS_MACOS: 'x86_64,arm64' CIBW_ARCHS_WINDOWS: 'AMD64,x86' CIBW_ARCHS_LINUX: 'x86_64' # aarch64 is having issues launching the docker correctly CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 CIBW_MANYLINUX_I686_IMAGE: manylinux2014 CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014 CIBW_SKIP: "pp* *-manylinux_i686" CIBW_TEST_SKIP: "*-macosx_arm64" # CIBW_TEST_COMMAND: python -c 'from CoolProp.CoolProp import get_global_param_string; print("CoolProp gitrevision:", get_global_param_string("gitrevision"))' CIBW_BUILD_VERBOSITY: 1 run: | python -m cibuildwheel --output-dir wheelhouse ./wrappers/Python - name: Store artifacts uses: actions/upload-artifact@v2 with: path: wheelhouse/*.whl upload_python_bindings_to_pypi: needs: python_bindings name: Upload to PyPi runs-on: ubuntu-latest steps: - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.9.x - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel twine requests packaging mkdir wheels if [[ "$GITHUB_REF" == *"refs/tags"* ]]; then TWINE_REPOSITORY=pypi TWINE_PASSWORD=${{ secrets.PYPI_TOKEN }} else TWINE_REPOSITORY=testpypi TWINE_PASSWORD=${{ secrets.TESTPYPI_TOKEN }} fi; echo "Using TWINE_REPOSITORY=$TWINE_REPOSITORY" echo "TWINE_REPOSITORY=$TWINE_REPOSITORY" >> $GITHUB_ENV echo "TWINE_PASSWORD=$TWINE_PASSWORD" >> $GITHUB_ENV - name: Download ALL wheels uses: actions/download-artifact@v2 with: path: ./wheels - name: Display structure of downloaded files working-directory: ./wheels run: | set -x ls -R du -sh - name: Publish wheels to (Test)PyPI working-directory: ./wheels/artifact env: TWINE_USERNAME: __token__ run: | python -m twine upload --skip-existing ./*.whl