mirror of
https://github.com/ultrajson/ultrajson.git
synced 2024-06-01 09:36:07 +02:00
Merge pull request #473 from hugovk/manylinux2014_aarch64
This commit is contained in:
commit
f23afd07f1
|
@ -0,0 +1,76 @@
|
|||
name: Deploy Linux wheels
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
wheel: [
|
||||
"manylinux2014_aarch64",
|
||||
"manylinux2014_i686",
|
||||
"manylinux2014_x86_64",
|
||||
]
|
||||
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10-dev"]
|
||||
include:
|
||||
# Add version-tag variable to existing jobs
|
||||
- { python-version: "3.6", version-tag: "cp36-cp36m" }
|
||||
- { python-version: "3.7", version-tag: "cp37-cp37m" }
|
||||
- { python-version: "3.8", version-tag: "cp38-cp38" }
|
||||
- { python-version: "3.9", version-tag: "cp39-cp39" }
|
||||
- { python-version: "3.10-dev", version-tag: "cp310-cp310" }
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- run: |
|
||||
git fetch --prune --unshallow
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade -q pip pytest wheel setuptools twine
|
||||
|
||||
# https://github.com/docker/setup-qemu-action
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
|
||||
# https://github.com/docker/setup-buildx-action
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Build ${{ matrix.wheel }} wheels
|
||||
run: |
|
||||
docker run -v `pwd`:/io quay.io/pypa/${{ matrix.wheel }} /io/scripts/build-manylinux-wheels.sh ${{ matrix.version-tag }}
|
||||
|
||||
- name: Upload as build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: wheels
|
||||
path: dist/*.whl
|
||||
|
||||
- name: Publish package to PyPI
|
||||
if: github.event.action == 'published'
|
||||
env:
|
||||
TWINE_USERNAME: __token__
|
||||
TWINE_PASSWORD: ${{ secrets.pypi_password }}
|
||||
run: twine upload --skip-existing dist/*.whl
|
||||
|
||||
- name: Publish package to TestPyPI
|
||||
if: github.repository == 'ultrajson/ultrajson'
|
||||
env:
|
||||
TWINE_USERNAME: __token__
|
||||
TWINE_PASSWORD: ${{ secrets.test_pypi_password }}
|
||||
run: |
|
||||
twine upload --repository-url https://test.pypi.org/legacy/ --skip-existing dist/*.whl
|
|
@ -1,7 +1,4 @@
|
|||
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
||||
|
||||
name: Deploy wheels
|
||||
name: Deploy Windows/macOS wheels
|
||||
|
||||
on:
|
||||
push:
|
||||
|
@ -10,22 +7,15 @@ on:
|
|||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [windows-latest, macOS-latest]
|
||||
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10-dev"]
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
python-version: 3.8
|
||||
wheel: aarch64
|
||||
- os: ubuntu-latest
|
||||
python-version: 3.8
|
||||
wheel: x86
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
@ -37,42 +27,18 @@ jobs:
|
|||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Docker Buildx
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
id: buildx
|
||||
uses: crazy-max/ghaction-docker-buildx@v3.3.0
|
||||
with:
|
||||
buildx-version: latest
|
||||
qemu-version: latest
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade -q pip pytest wheel setuptools twine
|
||||
|
||||
- name: Test with pytest
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
run: |
|
||||
pip install .
|
||||
pytest
|
||||
|
||||
- name: Build macOS/Windows wheel
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
- name: Build wheel
|
||||
run: python setup.py -q bdist_wheel
|
||||
|
||||
- name: Build ManyLinux2014_aarch64 wheels
|
||||
if: matrix.wheel == 'aarch64'
|
||||
run: |
|
||||
docker buildx build --platform linux/arm64 \
|
||||
-t ujson_aarch64 --output tmpwheelhouse -f scripts/Dockerfile_aarch64 .
|
||||
mkdir -p dist
|
||||
mv tmpwheelhouse/wheelhouse/*.whl dist/
|
||||
|
||||
- name: Build x86 Linux wheels
|
||||
if: matrix.wheel == 'x86'
|
||||
run: |
|
||||
docker run -v `pwd`:/io quay.io/pypa/manylinux2014_x86_64 /io/scripts/build-manylinux-wheels.sh
|
||||
docker run -v `pwd`:/io quay.io/pypa/manylinux2014_i686 /io/scripts/build-manylinux-wheels.sh
|
||||
|
||||
- name: Upload as build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
|
@ -1,10 +0,0 @@
|
|||
FROM quay.io/pypa/manylinux2014_aarch64 as build
|
||||
|
||||
RUN mkdir -p /io/
|
||||
COPY . /io/
|
||||
WORKDIR /io/
|
||||
|
||||
RUN bash ./scripts/build-manylinux-wheels.sh
|
||||
|
||||
FROM scratch as release
|
||||
COPY --from=build /io/dist /wheelhouse
|
|
@ -4,7 +4,7 @@ set -e -x
|
|||
# This is to be run by Docker inside a Docker image.
|
||||
# You can test it locally on a Linux machine by installing Docker and running from this
|
||||
# repo's root:
|
||||
# $ docker run -v `pwd`:/io quay.io/pypa/manylinux2014_x86_64 /io/scripts/build-manylinux-wheels.sh
|
||||
# $ docker run -v `pwd`:/io quay.io/pypa/manylinux2014_x86_64 /io/scripts/build-manylinux-wheels.sh [cp310-cp310]
|
||||
|
||||
# The -v gives a directory alias for passing files in and out of the Docker.
|
||||
# (/io is arbitrary). E.g the setup.py script can be accessed in the Docker via
|
||||
|
@ -22,12 +22,27 @@ mkdir -p /io/temp-wheels
|
|||
# Clean out any old existing wheels.
|
||||
find /io/temp-wheels/ -type f -delete
|
||||
|
||||
for PYBIN in /opt/python/cp3[678910]*/bin; do
|
||||
"${PYBIN}/pip" install -q -U setuptools wheel pytest --cache-dir /io/pip-cache
|
||||
(cd /io/ && "${PYBIN}/python" -m pip install .)
|
||||
(cd /io/ && "${PYBIN}/python" -m pytest)
|
||||
(cd /io/ && "${PYBIN}/python" setup.py -q bdist_wheel -d /io/temp-wheels)
|
||||
done
|
||||
# Log the Python versions in the image.
|
||||
ls /opt/python/
|
||||
|
||||
build_wheel () {
|
||||
PYBIN=$1
|
||||
"${PYBIN}/pip" install -q -U setuptools wheel pytest --cache-dir /io/pip-cache
|
||||
(cd /io/ && "${PYBIN}/python" -m pip install .)
|
||||
(cd /io/ && "${PYBIN}/python" -m pytest)
|
||||
(cd /io/ && "${PYBIN}/python" setup.py -q bdist_wheel -d /io/temp-wheels)
|
||||
}
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
# Build a single wheel
|
||||
PYBIN=/opt/python/$1/bin
|
||||
build_wheel ${PYBIN}
|
||||
else
|
||||
# Build many wheels
|
||||
for PYBIN in /opt/python/cp3{6..10}*/bin; do
|
||||
build_wheel ${PYBIN}
|
||||
done
|
||||
fi
|
||||
|
||||
"$PYBIN/pip" install -q auditwheel
|
||||
|
||||
|
|
Loading…
Reference in New Issue