summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInada Naoki <songofacandy@gmail.com>2021-11-25 14:43:55 +0900
committerGitHub <noreply@github.com>2021-11-25 14:43:55 +0900
commitbdf0511e29b02427437b03e7d8454bd5076e837f (patch)
tree2ec378629c48b23468dc4f5f7f6df46af9d712a0
parent6129789e9f6ebccdb19b23c2cd1dc9551e57fc53 (diff)
downloadmsgpack-python-bdf0511e29b02427437b03e7d8454bd5076e837f.tar.gz
Refactor CI (#492)
* Use cibuildwheel to build wheels. * Use matrix
-rw-r--r--.github/workflows/black.yaml2
-rw-r--r--.github/workflows/linux.yml103
-rw-r--r--.github/workflows/mac.yml80
-rw-r--r--.github/workflows/test.yml45
-rw-r--r--.github/workflows/wheel.yml51
-rw-r--r--.github/workflows/windows.yaml99
-rw-r--r--.travis.yml89
-rw-r--r--Makefile5
-rw-r--r--appveyor.yml50
-rw-r--r--ci/runtests.bat9
-rw-r--r--ci/runtests.sh8
11 files changed, 100 insertions, 441 deletions
diff --git a/.github/workflows/black.yaml b/.github/workflows/black.yaml
index c545953..2961ed3 100644
--- a/.github/workflows/black.yaml
+++ b/.github/workflows/black.yaml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Setup Python
- uses: actions/setup-python@v1
+ uses: actions/setup-python@v2
with:
python-version: '3.x'
architecture: 'x64'
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
deleted file mode 100644
index 95c672b..0000000
--- a/.github/workflows/linux.yml
+++ /dev/null
@@ -1,103 +0,0 @@
-name: Build Linux Wheels
-on:
- push:
- pull_request:
- create:
-
-jobs:
- build:
- # We want to run on external PRs, but not on our own internal PRs as they'll be run
- # by the push to the branch.
- if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
-
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v1
-
- - name: Set up Python 3.8
- uses: actions/setup-python@v1
- with:
- python-version: 3.8
-
- - name: Cythonize
- shell: bash
- run: |
- pip install -U pip
- pip -V
- pip install -r requirements.txt
- make cython
- #python setup.py sdist
-
- - name: Build wheels
- shell: bash
- run: |
- make linux-wheel
-
- - name: Install qemu-user-static for docker
- shell: bash
- run: |
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
-
- - name: Build arm64 wheels
- shell: bash
- run: |
- make linux-arm64-wheel
-
- - name: Run test (3.8)
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: --no-index -f dist/wheelhouse
- pytest -v test
-
-
- - name: Set up Python 3.10
- uses: actions/setup-python@v1
- with:
- python-version: "3.10"
-
- - name: Run test (3.10)
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: --no-index -f dist/wheelhouse
- pytest -v test
-
- - name: Set up Python 3.9
- uses: actions/setup-python@v1
- with:
- python-version: 3.9
-
- - name: Run test (3.9)
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: --no-index -f dist/wheelhouse
- pytest -v test
-
- - name: Set up Python 3.7
- uses: actions/setup-python@v1
- with:
- python-version: 3.7
-
- - name: Run test (3.7)
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: --no-index -f dist/wheelhouse
- pytest -v test
-
- - name: Set up Python 3.6
- uses: actions/setup-python@v1
- with:
- python-version: 3.6
-
- - name: Run test (3.6)
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: --no-index -f dist/wheelhouse
- pytest -v test
-
-
- - name: Upload Wheels
- uses: actions/upload-artifact@v1
- with:
- name: linux-wheels
- path: ./dist/wheelhouse/
diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml
deleted file mode 100644
index 85844e7..0000000
--- a/.github/workflows/mac.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-name: Build macOS Wheels
-on:
- push:
- create:
-
-jobs:
- build:
- runs-on: macos-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v1
-
- # Python 3.9
- - name: Set up Python 3.9
- uses: actions/setup-python@v1
- with:
- python-version: "3.9"
-
- - name: Cythonize
- run: |
- pip install -U pip
- pip install -r requirements.txt
- make cython
-
- - name: Build wheels
- uses: pypa/cibuildwheel@v2.2.2
- env:
- CIBW_ARCHS_MACOS: x86_64 universal2
- CIBW_SKIP: pp*
-
- - name: Run test
- run: |
- ls wheelhouse/
- pip install pytest
- pip install -v msgpack --only-binary :all: -f wheelhouse/ --no-index
- pytest -v test
-
- # Python 3.10
- - name: Set up Python 3.10
- uses: actions/setup-python@v1
- with:
- python-version: "3.10"
-
- - name: Run test
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: -f wheelhouse/ --no-index
- pytest -v test
-
- # Python 3.8
- - name: Set up Python 3.8
- uses: actions/setup-python@v1
- with:
- python-version: "3.8"
-
- - name: Run test
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: -f wheelhouse/ --no-index
- pytest -v test
-
- # Python 3.7
- - name: Set up Python 3.7
- uses: actions/setup-python@v1
- with:
- python-version: "3.7"
-
- - name: Run test
- run: |
- pip install pytest
- pip install -v msgpack --only-binary :all: -f wheelhouse/ --no-index
- pytest -v test
-
-
- - name: Upload Wheels
- uses: actions/upload-artifact@v1
- with:
- name: macos-wheels
- path: ./wheelhouse/
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..6e497e0
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,45 @@
+name: Run tests
+on:
+ push:
+ branches: [main]
+ pull_request:
+ create:
+
+jobs:
+ test:
+ strategy:
+ matrix:
+ os: [ubuntu-20.04, windows-2022, macos-10.15]
+ py: ["3.10", "3.9", "3.8", "3.7", "3.6"]
+
+ runs-on: ${{ matrix.os }}
+ name: Run test with Python ${{ matrix.py }} on ${{ matrix.os }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.py }}
+ cache: "pip"
+
+ - name: Build
+ shell: bash
+ run: |
+ pip install -U pip
+ pip install -r requirements.txt pytest
+ make cython
+ pip install .
+
+ - name: Test (C extension)
+ shell: bash
+ run: |
+ pytest -v test
+
+ - name: Test (pure Python fallback)
+ shell: bash
+ run: |
+ MSGPACK_PUREPYTHON=1 pytest -v test
+
diff --git a/.github/workflows/wheel.yml b/.github/workflows/wheel.yml
new file mode 100644
index 0000000..5627b5f
--- /dev/null
+++ b/.github/workflows/wheel.yml
@@ -0,0 +1,51 @@
+name: Build Wheels
+on:
+ push:
+ branches: [main]
+ create:
+
+jobs:
+ build_wheels:
+ strategy:
+ matrix:
+ os: [ubuntu-20.04, windows-2022, macos-10.15]
+ runs-on: ${{ matrix.os }}
+ name: Build wheels on ${{ matrix.os }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Set up QEMU
+ if: runner.os == 'Linux'
+ uses: docker/setup-qemu-action@v1
+ with:
+ platforms: arm64
+
+ - name: Set up Python 3.9
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ cache: "pip"
+
+ - name: Prepare
+ shell: bash
+ run: |
+ pip install -r requirements.txt
+ make cython
+
+ - name: Build
+ uses: pypa/cibuildwheel@v2.2.2
+ env:
+ CIBW_TEST_REQUIRES: "pytest"
+ CIBW_TEST_COMMAND: "pytest {package}/test"
+ CIBW_ARCHS_LINUX: auto aarch64
+ CIBW_ARCHS_MACOS: x86_64 universal2 arm64
+ CIBW_SKIP: pp*
+
+ - name: Upload Wheels
+ uses: actions/upload-artifact@v1
+ with:
+ name: Wheels
+ path: wheelhouse
+
diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml
deleted file mode 100644
index 0ce50f5..0000000
--- a/.github/workflows/windows.yaml
+++ /dev/null
@@ -1,99 +0,0 @@
-name: Build and test windows wheels
-on:
- push:
- pull_request:
- create:
-
-jobs:
- build:
- # We want to run on external PRs, but not on our own internal PRs as they'll be run
- # by the push to the branch.
- if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
-
- runs-on: windows-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v1
-
- - name: Cythonize
- shell: bash
- run: |
- pip install -U Cython
- make cython
- #python setup.py sdist
-
- - name: Python 3.6 (amd64)
- env:
- PYTHON: "py -3.6-64"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.6 (x86)
- env:
- PYTHON: "py -3.6-32"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.7 (amd64)
- env:
- PYTHON: "py -3.7-64"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.7 (x86)
- env:
- PYTHON: "py -3.7-32"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.8 (amd64)
- env:
- PYTHON: "py -3.8-64"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.8 (x86)
- env:
- PYTHON: "py -3.8-32"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.9 (amd64)
- env:
- PYTHON: "py -3.9-64"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.9 (x86)
- env:
- PYTHON: "py -3.9-32"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.10 (amd64)
- env:
- PYTHON: "py -3.10-64"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Python 3.10 (x86)
- env:
- PYTHON: "py -3.10-32"
- shell: bash
- run: |
- ci/runtests.sh
-
- - name: Upload Wheels
- uses: actions/upload-artifact@v1
- with:
- name: win-wheels
- path: ./dist
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4974d26..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-version: ~> 1.0
-dist: xenial
-language: python
-cache: pip
-arch:
- - arm64
-
-python:
- # Available Python (PyPy) can be listed by:
- #
- # $ aws s3 ls s3://travis-python-archives/binaries/ubuntu/16.04/x86_64/
- - "3.6"
- - "3.7"
- - "3.8"
- - "3.9-dev"
-
-_pure: &pure
- install:
- - pip install -U pip
- - pip install -U pytest pytest-cov codecov
- - pip install .
- script:
- - pytest --cov=msgpack -v test
-
-matrix:
- include:
- - name: 32bit build
- arch: amd64
- language: python
- services:
- - docker
- env:
- - DOCKER_IMAGE=quay.io/pypa/manylinux1_i686
- install:
- - pip install -U pip
- - pip install -r requirements.txt
- - make cython
- - docker pull $DOCKER_IMAGE
- script:
- - docker run --rm -v `pwd`:/io -w /io $DOCKER_IMAGE /io/docker/runtests.sh
-
- - arch: arm64
- name: arm64 32bit build
- language: python
- services:
- - docker
- env:
- - DOCKER_IMAGE=quay.io/pypa/manylinux2014_aarch64
- install:
- - pip install -U pip
- - pip install -r requirements.txt
- - make cython
- - docker pull $DOCKER_IMAGE
- script:
- - docker run --rm -v `pwd`:/io -w /io $DOCKER_IMAGE /io/docker/runtests.sh
-
- - name: "Python 2 (fallback)"
- python: "2.7"
- <<: *pure
-
- - name: "pypy2.7"
- arch: amd64
- python: "pypy2.7-7.1.1"
- <<: *pure
-
- - name: "pypy3"
- arch: amd64
- python: "pypy3.6-7.1.1"
- <<: *pure
-
-install:
- - pip install -U pip
- - pip install -U pytest pytest-cov codecov
- - pip install -r requirements.txt # Cython
- - make cython
- - pip install -e .
-
-script:
- - python -c 'import sys; print(hex(sys.maxsize))'
- - python -c 'from msgpack import _cmsgpack'
- - pytest --cov=msgpack -v test
- - MSGPACK_PUREPYTHON=x pytest --cov=msgpack -v test
-
-after_success:
- - if [ -f .coverage ]; then
- codecov;
- fi
-
-# vim: sw=2 ts=2
diff --git a/Makefile b/Makefile
index b50fa80..02a4a17 100644
--- a/Makefile
+++ b/Makefile
@@ -31,8 +31,9 @@ clean:
.PHONY: update-docker
update-docker:
- docker pull quay.io/pypa/manylinux1_i686
- docker pull quay.io/pypa/manylinux1_x86_64
+ docker pull quay.io/pypa/manylinux2014_i686
+ docker pull quay.io/pypa/manylinux2014_x86_64
+ docker pull quay.io/pypa/manylinux2014_aarch64
.PHONY: linux-wheel
linux-wheel:
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index f338e17..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-environment:
- matrix:
- # For Python versions available on Appveyor, see
- # http://www.appveyor.com/docs/installed-software#python
- - PYTHON: "C:\\Python36"
-
-install:
- # We need wheel installed to build wheels
- - "%PYTHON%\\python.exe -m pip install -U pip"
- - "%PYTHON%\\python.exe -m pip install -U cython"
- - "%PYTHON%\\Scripts\\cython --cplus msgpack/_cmsgpack.pyx"
-
-build: off
-
-test_script:
- # Put your test command here.
- # Note that you must use the environment variable %PYTHON% to refer to
- # the interpreter you're using - Appveyor does not do anything special
- # to put the Python version you want to use on PATH.
- - set PYTHON="C:\\Python27"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python27-x64"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python36"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python36-x64"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python37"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python37-x64"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python38"
- - ci\\runtests.bat
- - set PYTHON="C:\\Python38-x64"
- - ci\\runtests.bat
-
-after_test:
- # This step builds your wheels.
- # Again, you need to use %PYTHON% to get the correct interpreter
-
-artifacts:
- # bdist_wheel puts your built wheel in the dist directory
- - path: dist\*.whl
-
-#on_success:
-# You can use this step to upload your artifacts to a public website.
-# See Appveyor's documentation for more details. Or you can simply
-# access your wheels from the Appveyor "artifacts" tab for your build.
-
-# vim: set shiftwidth=2
diff --git a/ci/runtests.bat b/ci/runtests.bat
deleted file mode 100644
index 4ae2f70..0000000
--- a/ci/runtests.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-%PYTHON%\python.exe -m pip install -U pip wheel pytest
-%PYTHON%\python.exe setup.py build_ext -i
-%PYTHON%\python.exe setup.py install
-%PYTHON%\python.exe -c "import sys; print(hex(sys.maxsize))"
-%PYTHON%\python.exe -c "from msgpack import _cmsgpack"
-%PYTHON%\python.exe setup.py bdist_wheel
-%PYTHON%\python.exe -m pytest -v test
-SET EL=%ERRORLEVEL%
-exit /b %EL%
diff --git a/ci/runtests.sh b/ci/runtests.sh
deleted file mode 100644
index 5d87f69..0000000
--- a/ci/runtests.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-set -ex
-${PYTHON} -VV
-${PYTHON} -m pip install setuptools wheel pytest
-${PYTHON} setup.py build_ext -if
-${PYTHON} -c "from msgpack import _cmsgpack"
-${PYTHON} setup.py bdist_wheel
-${PYTHON} -m pytest -v test