WIP: bundle #476
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI/CD | |
on: [push, pull_request] | |
jobs: | |
build-linux: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 15 | |
strategy: | |
matrix: | |
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
- name: Cache Jenkins integration test | |
uses: actions/cache@v4 | |
with: | |
path: test/integration/jenkins/cache | |
key: ${{ runner.os }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade setuptools | |
pip install PyYAML coverage schema python-magic pyparsing sphinx wheel | |
sudo apt-get update | |
sudo apt-get install cvs | |
- name: Run unit tests | |
run: | | |
git config --global init.defaultBranch master # keep the old name | |
git config --global protocol.file.allow always # roll back CVE-2022-39253 | |
eatmydata ./test/run-tests.sh -c xml | |
- name: Build Python package | |
run: | | |
python3 setup.py bdist_wheel --plat-name manylinux1_x86_64 | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Store the binary wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-dist-linux-${{ matrix.python-version }} | |
path: dist | |
build-windows: | |
runs-on: windows-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: pip | |
- name: Prepare MSYS2 environment | |
run: | | |
C:\msys64\usr\bin\bash -l -c "pacman -Sy --needed --noconfirm parallel || true" | |
- name: Cache Jenkins integration test | |
uses: actions/cache@v4 | |
with: | |
path: test/integration/jenkins/cache | |
key: ${{ runner.os }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install PyYAML coverage schema python-magic pyparsing sphinx wheel | |
- name: Run unit tests | |
run: | | |
git config --global init.defaultBranch master # keep the old name | |
git config --global protocol.file.allow always # roll back CVE-2022-39253 | |
$env:PATH = "$env:JAVA_HOME_11_X64\bin;$env:PATH;C:\msys64\usr\bin" | |
$env:JAVA_HOME = "$env:JAVA_HOME_11_X64" | |
bash ./test/run-tests.sh -c xml | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
build-sdist: | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: pip | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade setuptools | |
pip install PyYAML schema python-magic pyparsing sphinx wheel | |
- name: Build Python package | |
run: | | |
python3 setup.py sdist | |
- name: Store the source distribution | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-dist-sdist | |
path: dist | |
publish: | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
needs: | |
# Depend on all builds even if they don't provide an artifact (e.g. | |
# windows). This makes sure we publish only if everything is ok. | |
- build-linux | |
- build-windows | |
- build-sdist | |
steps: | |
- name: Download all the dists | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: python-dist-* | |
merge-multiple: true | |
path: dist/ | |
- name: List | |
run: | | |
ls dist | |
- name: Publish package | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
skip_existing: true |