Introduce initial project code standards #40
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: Build and Test | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
types: [opened, synchronize, reopened] | |
paths-ignore: | |
- "*.md" | |
- "*.example" | |
- ".gitignore" | |
- "benchmarks/**" | |
permissions: | |
contents: read | |
jobs: | |
code_checks: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Run pre-commit checks | |
run: | | |
pip install pre-commit | |
pre-commit run --all-files | |
sdist: | |
needs: [code_checks] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
linux: | |
needs: [code_checks] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: [x86_64, aarch64, armv7, s390x, ppc64le] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
env: | |
PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" | |
OPENSSL_NO_VENDOR: 1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
# sccache: 'true' | |
manylinux: auto | |
before-script-linux: | | |
# If we're running on rhel centos, install needed packages. thx s3rius! | |
if command -v yum &> /dev/null; then | |
yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic | |
else | |
# If we're running on debian-based system. | |
apt update -y && apt-get install -y libssl-dev openssl pkg-config | |
fi | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.target }} | |
path: dist | |
- name: Install and Test | |
# if: ${{ startsWith(matrix.target, 'x86_64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install .[dev] --find-links dist --force-reinstall | |
pytest -v tests/ | |
windows: | |
needs: [code_checks] | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
target: [x64, x86] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: ${{ matrix.target }} | |
- name: Set Perl environment variables | |
run: | | |
echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | |
echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 | |
- name: Remove wincred from docker config | |
run: sed -i '/wincred/d' ~/.docker/config.json | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.target }} | |
path: dist | |
- name: Install and Test | |
if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install .[dev] --find-links dist --force-reinstall | |
pytest -v tests/ | |
macos: | |
needs: [code_checks] | |
runs-on: [macos-13, macos-14] | |
strategy: | |
matrix: | |
target: [x86_64, aarch64] | |
env: | |
OPENSSL_NO_VENDOR: 1 | |
DOCKER_HOST: unix:///var/run/docker.sock | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Set OPENSSL_DIR | |
run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.target }} | |
path: dist | |
- name: setup-docker | |
# if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
run: | | |
brew install docker | |
colima start | |
- name: Install and Test | |
# if: ${{ !startsWith(matrix.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install .[dev] --find-links dist --force-reinstall | |
pytest -v tests/ |