mirror of
https://gitee.com/openharmony/third_party_pyyaml
synced 2024-11-27 12:20:38 +00:00
254 lines
7.1 KiB
YAML
254 lines
7.1 KiB
YAML
---
|
|
name: PyYAML CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
types: [opened, synchronize, edited, reopened]
|
|
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: |
|
|
# We DO want to force Cythoning, at least until 6.0.
|
|
export PYYAML_FORCE_CYTHON=1
|
|
# We don't actually want to build the lib.
|
|
export PYYAML_FORCE_LIBYAML=0
|
|
|
|
python -m build .
|
|
|
|
# Ensure exactly one artifact was produced.
|
|
[[ $(shopt -s nullglob; ls dist/*.tar.gz | wc -w) == 1 ]] || {
|
|
echo "Unexpected content in dist dir: '$(ls dist/*.tar.gz)'."
|
|
exit 1
|
|
}
|
|
|
|
- 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.cfg.arch}} ${{matrix.cfg.platform}}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
cfg:
|
|
- { platform: manylinux1, arch: x86_64 }
|
|
- { platform: manylinux2014, arch: aarch64 }
|
|
- { platform: manylinux2014, arch: s390x }
|
|
env:
|
|
DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
|
|
steps:
|
|
- name: Check cached libyaml state
|
|
id: cached_libyaml
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: libyaml
|
|
key: libyamlX_${{matrix.cfg.platform}}_${{matrix.cfg.arch}}_${{env.LIBYAML_REF}}
|
|
|
|
- name: configure docker foreign arch support
|
|
uses: docker/setup-qemu-action@v1
|
|
if: matrix.cfg.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true'
|
|
|
|
- name: Checkout pyyaml
|
|
uses: actions/checkout@v2
|
|
if: steps.cached_libyaml.outputs.cache-hit != 'true'
|
|
|
|
- name: Build libyaml
|
|
run: >
|
|
docker run --rm
|
|
--volume "$(pwd):/io"
|
|
--env LIBYAML_REF
|
|
--env LIBYAML_REPO
|
|
--workdir /io
|
|
"$DOCKER_IMAGE"
|
|
/io/packaging/build/libyaml.sh
|
|
if: steps.cached_libyaml.outputs.cache-hit != 'true'
|
|
|
|
- name: ensure output is world readable (or cache fill fails with Permission Denied)
|
|
run: >
|
|
sudo chmod -R a+r ./libyaml/
|
|
if: steps.cached_libyaml.outputs.cache-hit != 'true'
|
|
|
|
|
|
linux_pyyaml:
|
|
needs: linux_libyaml
|
|
name: pyyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}} ${{matrix.cfg.python_tag}}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
cfg:
|
|
- { platform: manylinux1, arch: x86_64, python_tag: cp36-cp36m }
|
|
- { platform: manylinux1, arch: x86_64, python_tag: cp37-cp37m }
|
|
- { platform: manylinux1, arch: x86_64, python_tag: cp38-cp38 }
|
|
- { platform: manylinux1, arch: x86_64, python_tag: cp39-cp39 }
|
|
- { platform: manylinux2014, arch: aarch64, python_tag: cp36-cp36m }
|
|
- { platform: manylinux2014, arch: aarch64, python_tag: cp37-cp37m }
|
|
- { platform: manylinux2014, arch: aarch64, python_tag: cp38-cp38 }
|
|
- { platform: manylinux2014, arch: aarch64, python_tag: cp39-cp39 }
|
|
- { platform: manylinux2014, arch: s390x, python_tag: cp36-cp36m }
|
|
- { platform: manylinux2014, arch: s390x, python_tag: cp37-cp37m }
|
|
- { platform: manylinux2014, arch: s390x, python_tag: cp38-cp38 }
|
|
- { platform: manylinux2014, arch: s390x, python_tag: cp39-cp39 }
|
|
env:
|
|
AW_PLAT: ${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
|
|
DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}}
|
|
PYTHON_TAG: ${{matrix.cfg.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: libyamlX_${{matrix.cfg.platform}}_${{matrix.cfg.arch}}_${{env.LIBYAML_REF}}
|
|
|
|
- name: Ensure libyaml fetched
|
|
run: exit 1
|
|
if: steps.cached_libyaml.outputs.cache-hit != 'true'
|
|
|
|
- name: configure docker foreign arch support
|
|
uses: docker/setup-qemu-action@v1
|
|
if: matrix.cfg.arch != 'x86_64'
|
|
|
|
- name: Start container
|
|
run: >
|
|
docker run --rm --tty --detach
|
|
--name worker
|
|
--volume "$(pwd):/io"
|
|
"$DOCKER_IMAGE"
|
|
bash
|
|
|
|
- name: Build/Test/Package
|
|
run: >
|
|
docker exec
|
|
--env PYTHON_TAG
|
|
--env PYYAML_RUN_TESTS
|
|
--env PYYAML_BUILD_WHEELS
|
|
--env 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:
|
|
- 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
|
|
...
|