summaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yaml
diff options
context:
space:
mode:
authorIngy döt Net <ingy@ingy.net>2020-12-23 10:24:14 -0500
committerIngy döt Net <ingy@ingy.net>2021-01-13 16:58:40 -0500
commit6a19fd77a0cdf81525b03cfea751ca46666e9137 (patch)
tree6bf16a50678a377aaaa3477ce705fcaac796bafe /.github/workflows/ci.yaml
parent4927e75d99e5d21e5e578c97e54c962b7fc0e169 (diff)
downloadpyyaml-git-6a19fd77a0cdf81525b03cfea751ca46666e9137.tar.gz
Rename ci.yml to YAML preferred ci.yaml
Diffstat (limited to '.github/workflows/ci.yaml')
-rw-r--r--.github/workflows/ci.yaml236
1 files changed, 236 insertions, 0 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..772959c
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,236 @@
+---
+
+name: PyYAML CI
+on:
+ push:
+ pull_request:
+ workflow_dispatch:
+
+env:
+ LIBYAML_REPO: https://github.com/yaml/libyaml
+ LIBYAML_REF: '0.2.5'
+jobs:
+ python_sdist:
+ name: pyyaml sdist
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout pyyaml
+ uses: actions/checkout@v2
+
+ - name: install a python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.x
+
+ - name: install build deps
+ run: |
+ python -V
+
+ python -m pip install build
+
+ - name: build sdist
+ run: |
+ export PYYAML_FORCE_CYTHON=1 # we DO want to force Cythoning, at least until 6.0
+ export PYYAML_FORCE_LIBYAML=0 # we don't actually want to build the lib
+
+ python -m build .
+
+ # ensure exactly one artifact was produced
+ shopt -s nullglob
+ DISTFILES=(dist/*.tar.gz)
+ if [[ ${DISTFILES[@]} -ne 1 ]]; then
+ echo "unexpected content in dist dir: $(ls dist/*.tar.gz)"
+ exit 1
+ fi
+
+ - name: test sdist
+ run: |
+ # install some libyaml headers
+ # TODO: should we smoke test the sdist against the libyaml we built?
+ sudo apt update
+ sudo apt install libyaml-dev -y
+
+ # ensure Cython is not present so we use only what's in the sdist
+ python -m pip uninstall Cython -y || true
+
+ # pass no extra args- we should auto-install with libyaml since it's present
+ python -m pip install dist/*.tar.gz -v
+
+ python packaging/build/smoketest.py
+
+ - name: upload sdist artifact
+ uses: actions/upload-artifact@v2
+ with:
+ name: dist
+ path: dist/*.tar.gz
+
+
+ linux_libyaml:
+ name: libyaml ${{ matrix.arch }} ${{ matrix.platform }}
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ platform:
+ # manylinux1 is forward-compatible to 2010/2014
+ #- manylinux2014
+ #- manylinux2010
+ - manylinux1
+ arch:
+ - x86_64
+ env:
+ DOCKER_IMAGE: quay.io/pypa/${{ matrix.platform }}_${{ matrix.arch }}
+ steps:
+ - name: check cached libyaml state
+ id: cached_libyaml
+ uses: actions/cache@v2
+ with:
+ path: |
+ libyaml
+ key: libyaml_${{ matrix.platform }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }}
+
+ - name: checkout pyyaml
+ uses: actions/checkout@v2
+ if: steps.cached_libyaml.outputs.cache-hit != 'true'
+
+ - name: build libyaml
+ run: |
+ docker run --rm -v $(pwd):/io -e LIBYAML_REF -e LIBYAML_REPO --workdir /io "$DOCKER_IMAGE" /io/packaging/build/libyaml.sh
+ if: steps.cached_libyaml.outputs.cache-hit != 'true'
+
+ linux_pyyaml:
+ needs: linux_libyaml
+ name: pyyaml ${{ matrix.arch }} ${{ matrix.platform }} ${{ matrix.python_tag }}
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ platform:
+ # so long as manylinux1 container builds work, they're forward-compatible to 2010/2014
+ # - manylinux2014
+ # - manylinux2010
+ - manylinux1
+ arch:
+ - x86_64
+ python_tag:
+ # NB: manylinux >=2014 containers don't have Python 2.7, so we have to use exclude to skip it
+ - cp27-cp27mu
+ - cp36-cp36m
+ - cp37-cp37m
+ - cp38-cp38
+ - cp39-cp39
+# exclude:
+# - platform: manylinux2014
+# arch: x86_64
+# python_tag: cp27-cp27mu
+ env:
+ AW_PLAT: ${{ matrix.platform }}_${{ matrix.arch }}
+ DOCKER_IMAGE: quay.io/pypa/${{ matrix.platform }}_${{ matrix.arch }}
+ PYTHON_TAG: ${{ matrix.python_tag }}
+ PYYAML_BUILD_WHEELS: 1
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: fetch cached libyaml
+ id: cached_libyaml
+ uses: actions/cache@v2
+ with:
+ path: |
+ libyaml
+ key: libyaml_${{ matrix.platform }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }}
+
+ - name: ensure libyaml fetched
+ run: exit 1
+ if: steps.cached_libyaml.outputs.cache-hit != 'true'
+
+ - name: start container
+ run: |
+ docker run --name worker -t -d --rm -v $(pwd):/io "$DOCKER_IMAGE" bash
+
+ - name: build/test/package
+ run: |
+ docker exec -e PYTHON_TAG -e PYYAML_RUN_TESTS -e PYYAML_BUILD_WHEELS -e AW_PLAT --workdir /io worker \
+ /io/packaging/build/manylinux.sh
+
+ - uses: actions/upload-artifact@v2
+ with:
+ name: dist
+ path: dist/*.whl
+
+ macos_libyaml:
+ name: libyaml ${{ matrix.arch }} ${{ matrix.platform }}
+ runs-on: ${{ matrix.platform }}
+ strategy:
+ matrix:
+ platform:
+ - macos-10.15
+ arch:
+ - x86_64
+ steps:
+ - name: check cached libyaml state
+ id: cached_libyaml
+ uses: actions/cache@v2
+ with:
+ path: |
+ libyaml
+ key: libyaml_${{ matrix.platform }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }}
+
+ - name: checkout pyyaml
+ uses: actions/checkout@v2
+ if: steps.cached_libyaml.outputs.cache-hit != 'true'
+
+ - name: build libyaml
+ env:
+ MACOSX_DEPLOYMENT_TARGET: '10.9'
+ run: |
+ brew install automake coreutils
+ bash ./packaging/build/libyaml.sh
+ if: steps.cached_libyaml.outputs.cache-hit != 'true'
+
+
+ macos_pyyaml:
+ needs: macos_libyaml
+ name: pyyaml ${{ matrix.arch }} ${{ matrix.platform }} ${{ matrix.python_tag }}
+ runs-on: ${{ matrix.platform }}
+ strategy:
+ matrix:
+ platform:
+ - macos-10.15
+ arch:
+ - x86_64
+ python_tag:
+ - cp27*
+ - cp36*
+ - cp37*
+ - cp38*
+ - cp39*
+ steps:
+ - name: checkout pyyaml
+ uses: actions/checkout@v2
+
+ - name: get cached libyaml state
+ id: cached_libyaml
+ uses: actions/cache@v2
+ with:
+ path: |
+ libyaml
+ key: libyaml_${{ matrix.platform }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }}
+
+ - name: ensure libyaml fetched
+ run: exit 1
+ if: steps.cached_libyaml.outputs.cache-hit != 'true'
+
+ - name: install a python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.x
+
+ - name: build/test/package
+ env:
+ CIBW_BUILD: ${{ matrix.python_tag }}
+ CIBW_BUILD_VERBOSITY: 1
+ run: |
+ bash ./packaging/build/macos.sh
+
+ - uses: actions/upload-artifact@v2
+ with:
+ name: dist
+ path: dist/*.whl