ci: include more options for triggering the workflows #2
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: pydlinear CI | |
on: | |
push: | |
branches: [ main ] | |
paths: | |
- "dlinear/**" | |
- "pydlinear/**" | |
- "tools/**" | |
- "third_party/**" | |
- "*.bazel*" | |
- ".github/workflows/pydlinear.yml" | |
tags: | |
- "v*.*.*" | |
- "*.*.*" | |
pull_request: | |
branches: [ main ] | |
paths: | |
- "dlinear/**" | |
- "pydlinear/**" | |
- "tools/**" | |
- "third_party/**" | |
- "*.bazel*" | |
- ".github/workflows/pydlinear.yml" | |
env: | |
PACKAGES: "build-essential automake libtool flex bison" | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-latest ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install apt dependencies | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: ${{ env.PACKAGES }} | |
version: 1.0 | |
- name: Cache Bazel | |
uses: actions/cache@v4 | |
if: always() | |
with: | |
path: | | |
~/.cache/bazel | |
key: ${{ runner.os }}-bazel-${{ hashFiles('.bazelversion', '.bazelrc', 'MODULE.bazel') }} | |
restore-keys: | | |
${{ runner.os }}-bazel- | |
- name: Run tests | |
run: | | |
mkdir -p dist | |
for py_version in 3.8 3.9 3.10 3.11 3.12; do | |
bazel test --config=pydlinear --python_version=$py_version --test_tag_filters=pydlinear //pydlinear/... | |
done | |
build: | |
runs-on: ${{ matrix.os }} | |
needs: test | |
strategy: | |
matrix: | |
os: [ ubuntu-latest ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install pip dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install setuptools wheel twine | |
- name: Install apt dependencies | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: ${{ env.PACKAGES }} | |
version: 1.0 | |
- name: Cache Bazel | |
uses: actions/cache@v4 | |
if: always() | |
with: | |
path: | | |
~/.cache/bazel | |
key: ${{ runner.os }}-bazel-${{ hashFiles('.bazelversion', '.bazelrc', 'MODULE.bazel') }} | |
restore-keys: | | |
${{ runner.os }}-bazel- | |
- name: Build wheels | |
run: | | |
mkdir -p dist | |
for py_version in 3.8 3.9 3.10 3.11 3.12; do | |
bazel build --config=pydlinear --python_version=$py_version //pydlinear:pydlinear_wheel | |
cp $(bazel cquery --output=files --config=pydlinear --python_version=$py_version //pydlinear:pydlinear_wheel) dist/ | |
done | |
- name: Build source distribution | |
run: | | |
python3 -m setup sdist | |
- name: Upload dists | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-dists | |
path: dist/ | |
publish: | |
if: github.ref_type == 'tag' | |
runs-on: ubuntu-latest | |
needs: build | |
permissions: | |
id-token: write | |
steps: | |
- name: Retrieve release distributions | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-dists | |
path: dist/ | |
- name: Publish release distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
skip-existing: true | |
verbose: true |