Skip to content

Commit

Permalink
Merge pull request #1653 from ERGO-Code/latest
Browse files Browse the repository at this point in the history
Updates to authentication to PyPi required for publishing highspy
  • Loading branch information
galabovaa authored Mar 7, 2024
2 parents 50670fd + c77a6c3 commit 13363c9
Show file tree
Hide file tree
Showing 11 changed files with 177 additions and 47 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build-meson.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: build-meson

on: [push, pull_request]

jobs:
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/build-mingw.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
name: build-mingw

# on: [push, pull_request]
on: [pull_request]

jobs:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-python-package.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: build-python-package
on: [pull_request]
# on: []

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
111 changes: 111 additions & 0 deletions .github/workflows/build-wheels-push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: build-wheels-push

# on: [push]

on:
release:
types:
- published

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build_wheels:
name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }}
runs-on: ${{ matrix.buildplat[0] }}
environment: pypi
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
# From NumPy
# Github Actions doesn't support pairing matrix values together, let's improvise
# https://github.com/github/feedback/discussions/7835#discussioncomment-1769026
buildplat:
- [ubuntu-20.04, manylinux_x86_64]
- [ubuntu-20.04, musllinux_x86_64] # No OpenBlas, no test
- [macos-12, macosx_x86_64]
- [macos-14, macosx_arm64]
- [windows-2019, win_amd64]
python: ["cp38", "cp39","cp310", "cp311","cp312"]

steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl

build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Build sdist
shell: bash -l {0}
run: pipx run build --sdist

- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz

# upload_testpypi:
# name: >-
# Publish highspy to TestPyPI
# runs-on: ubuntu-latest
# needs: [build_wheels, build_sdist]

# # upload to PyPI on every tag starting with 'v'
# # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')

# environment:
# name: testpypi
# url: https://testpypi.org/p/highspy

# permissions:
# id-token: write # IMPORTANT: mandatory for trusted publishing
# steps:
# - uses: actions/download-artifact@v3
# with:
# # unpacks default artifact into dist/
# # if `name: artifact` is omitted, the action will create extra parent dir
# name: artifact
# path: dist

# - name: Download all
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# repository-url: https://test.pypi.org/legacy/

upload_pypi:
name: >-
Publish highspy to PyPI
runs-on: ubuntu-latest
needs: [build_wheels, build_sdist]

# upload to PyPI on every tag starting with 'v'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')

environment:
name: pypi
url: https://pypi.org/p/highspy

permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- uses: actions/download-artifact@v3
with:
# unpacks default artifact into dist/
# if `name: artifact` is omitted, the action will create extra parent dir
name: artifact
path: dist

- name: Download all
uses: pypa/gh-action-pypi-publish@release/v1
39 changes: 3 additions & 36 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
# Python release WIP
name: Build wheels
# on: [push]
name: build-wheels

on:
release:
types:
- published
on: [pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -15,7 +10,6 @@ jobs:
build_wheels:
name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }}
runs-on: ${{ matrix.buildplat[0] }}
environment: pypi
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
Expand All @@ -27,7 +21,7 @@ jobs:
- [ubuntu-20.04, manylinux_x86_64]
- [ubuntu-20.04, musllinux_x86_64] # No OpenBlas, no test
- [macos-12, macosx_x86_64]
- [macos-12, macosx_arm64]
- [macos-14, macosx_arm64]
- [windows-2019, win_amd64]
python: ["cp38", "cp39","cp310", "cp311","cp312"]

Expand All @@ -37,9 +31,6 @@ jobs:
uses: pypa/[email protected]
env:
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl

build_sdist:
name: Build source distribution
Expand All @@ -50,27 +41,3 @@ jobs:
- name: Build sdist
shell: bash -l {0}
run: pipx run build --sdist

- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz

upload_pypi:
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
# upload to PyPI on every tag starting with 'v'
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
# alternatively, to publish when a GitHub Release is created, use the following rule:
# if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v3
with:
# unpacks default artifact into dist/
# if `name: artifact` is omitted, the action will create extra parent dir
name: artifact
path: dist

- uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
49 changes: 49 additions & 0 deletions .github/workflows/check-python-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: check-python-package

on: [pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Build sdist
run: |
python3 -m pip install build setuptools twine
python3 -m build --sdist
python3 -m build --wheel
twine check dist/*
build_mac:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4

- name: Build sdist
run: |
python3 -m pip install build setuptools twine
python3 -m build --sdist
python3 -m build --wheel
twine check dist/*
build_win:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4

- name: Install correct python version
uses: actions/setup-python@v5
with:
python-version: 3.9

- name: Build sdist
run: |
py -m pip install build setuptools twine
py -m build --sdist
py -m build --wheel
py -m twine check dist/*
2 changes: 1 addition & 1 deletion .github/workflows/sanitizers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
meson setup bddir -Duse_zlib=enabled -Dwith_tests=True -Db_sanitize=${{ matrix.sanitizer }}
meson test -C bddir -t 10 # Time x10 for the tests
- name: Upload log
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: always()
with:
name: log_${{ matrix.sanitizer }}_${{ matrix.os }}.txt
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/test-python-macos.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
name: test-python-macos

on: [push]
#on: [push, pull_request]
on: [push, pull_request]

jobs:
build:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/test-python-ubuntu.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
name: test-python-ubuntu

on: [push]
#on: [push, pull_request]
on: [push, pull_request]

jobs:
build:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/test-python-win.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
name: test-python-win

on: [push]
#on: [push, pull_request]
on: [push, pull_request]

jobs:
build:
Expand Down
8 changes: 7 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,11 @@ def build_extension(self, ext: CMakeExtension) -> None:
["cmake", "--build", ".", *build_args], cwd=build_temp, check=True
)

# read the contents of your README file
from pathlib import Path
this_directory = Path(__file__).parent
long_description = (this_directory / "README.md").read_text()

# The information here can also be placed in setup.cfg - better separation of
# logic and declaration, and simpler if you include description/version in a file.
setup(
Expand All @@ -140,7 +145,8 @@ def build_extension(self, ext: CMakeExtension) -> None:
author="HiGHS developers",
author_email="[email protected]",
url='https://github.com/ERGO-Code/HiGHS',
long_description="",
long_description=long_description,
long_description_content_type='text/markdown',
license = 'MIT License',
ext_modules=[CMakeExtension("highspy")],
cmdclass={"build_ext": CMakeBuild},
Expand Down

0 comments on commit 13363c9

Please sign in to comment.