1
0
Fork 0
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:
Hugo van Kemenade 2021-09-10 16:45:06 +03:00 committed by GitHub
commit f23afd07f1
Signed by: GitHub
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 101 additions and 54 deletions

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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