Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a weekly pre-release build and test action #12

Merged
merged 1 commit into from
Aug 27, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 160 additions & 0 deletions .github/workflows/weekly_build_and_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: Unreleased Python Build and Test

on:
schedule:
- cron: '0 0 * * 3'

permissions:
contents: read

jobs:
code_checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13-dev'
- 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:
fail-fast: false
matrix:
target: [x86_64, aarch64, armv7, ppc64le, s390x]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13-dev'
- 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' # Disabled due to issues with sccache on linux
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
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:
fail-fast: false
matrix:
target: [x64, x86]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13-dev'
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
shell: bash
run: pip install .[dev] --find-links dist --force-reinstall
# Disabled on windows due to issues with docker
# BuildError: no matching manifest for windows/amd64 ... in the manifest list entries
# - name: Test
# if: ${{ !startsWith(matrix.target, 'x86') }}
# shell: bash
# run: pytest -v tests/

macos:
needs: [code_checks]
runs-on: macos-latest
strategy:
fail-fast: false
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.13-dev'
- 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
# run: |
# brew install docker
# open --background -a Docker
# while ! docker info &> /dev/null; do sleep 1; done
- name: Install
shell: bash
run: pip install .[dev] --find-links dist --force-reinstall
# Disabled on macos due to issues with docker
# - name: Test
# shell: bash
# run: pytest -v tests/
Loading