114 lines
3.6 KiB
YAML
114 lines
3.6 KiB
YAML
name: BTest
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches: [master]
|
|
tags:
|
|
- 'v*'
|
|
- '!v*-dev'
|
|
|
|
jobs:
|
|
Run-BTest:
|
|
strategy:
|
|
matrix:
|
|
python-version:
|
|
- "3.9"
|
|
- "3.10"
|
|
- "3.11"
|
|
- "3.12"
|
|
- "3.13"
|
|
os: [macos-latest, ubuntu-latest, windows-latest]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Set up git config
|
|
# Set autocrlf mode to false so that actions/checkout doesn't
|
|
# modify the line endings in all of the files (mostly in the
|
|
# test Baselines) to be \r\n on Windows.
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
git config --global core.eol lf
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Install dependencies (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
python -m pip install sphinx multiprocess
|
|
- name: Install dependencies (Linux/macOS)
|
|
if: matrix.os != 'windows-latest'
|
|
run: |
|
|
python -m pip install sphinx
|
|
- name: Rename wsl bash
|
|
# Something about github's runners sometimes puts WSL bash in the
|
|
# path before git bash. WSL bash has problems with permissions
|
|
# when it comes to writing files to the runner's disk, which
|
|
# causes tests to fail. This step renames WSL bash to something
|
|
# else so that git bash will execute instead.
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
takeown /F C:\Windows\System32\bash.exe
|
|
icacls C:\Windows\System32\bash.exe /grant administrators:F
|
|
ren C:\Windows\System32\bash.exe wsl-bash.exe
|
|
- run: make test
|
|
|
|
Test-SetupPY:
|
|
strategy:
|
|
matrix:
|
|
python-version:
|
|
- "3.9"
|
|
- "3.10"
|
|
- "3.11"
|
|
- "3.12"
|
|
- "3.13"
|
|
os: [ubuntu-latest]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- uses: actions/checkout@v4
|
|
- name: "Install pip and the btest package"
|
|
run: |
|
|
python3 -m pip install --upgrade pip
|
|
python3 -m pip install setuptools wheel
|
|
python3 -m pip install .
|
|
- name: "Run btests with installed version"
|
|
run: |
|
|
cd testing
|
|
which btest
|
|
make
|
|
- name: "Test building package"
|
|
run: |
|
|
python3 setup.py sdist bdist_wheel
|
|
|
|
Upload:
|
|
runs-on: ubuntu-latest
|
|
needs: [Run-BTest, Test-SetupPY]
|
|
if: github.repository == 'zeek/btest' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Check release version
|
|
# This fails e.g. if VERSION contains a dev commits suffix,
|
|
# since we don't want to push these to PyPI. Accepts two-
|
|
# and three-component version numbers (e.g. 1.0 and 1.0.1).
|
|
run: |
|
|
grep -E -x '[0-9]+\.[0-9]+(\.[0-9]+)?' VERSION
|
|
- name: Build sdist
|
|
# This places the sdist in the build folder, so we need to
|
|
# tell the action below where to find it since it defaults
|
|
# to dist/.
|
|
run: |
|
|
make dist
|
|
- name: Upload to PyPI
|
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
with:
|
|
packages-dir: build/
|
|
user: __token__
|
|
password: ${{ secrets.PYPI_API_TOKEN }}
|