Skip to content

WIP: bundle

WIP: bundle #476

Workflow file for this run

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