Skip to content

Continuous Integration #187

Continuous Integration

Continuous Integration #187

Workflow file for this run

name: Continuous Integration
on:
push:
branches:
- "main"
tags:
- "*"
pull_request:
branches:
- "main"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
name: Setup Rust
with:
profile: minimal
toolchain: stable
override: true
components: rustfmt, clippy
- uses: actions-rs/cargo@v1
name: fmt
with:
command: fmt
args: --all -- --check
- uses: actions-rs/cargo@v1
name: clippy
with:
command: clippy
args: --all-targets -- --deny warnings
- uses: actions-rs/cargo@v1
name: test
with:
command: test
linux:
needs: [check]
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, i686]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
architecture: x64
- name: Build Wheels
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: --release --out dist
- name: Install built wheel
if: matrix.target == 'x86_64'
run: |
pip install gstools-core --no-index --find-links dist --force-reinstall --no-deps
python -c "import gstools_core"
- name: Upload Wheels Artifacts
uses: actions/upload-artifact@v3
with:
path: dist
windows:
needs: [check]
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: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
default: true
- name: Build Wheels
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
- name: Install built wheel
run: |
pip install gstools-core --no-index --find-links dist --force-reinstall --no-deps
python -c "import gstools_core"
- name: Upload Wheels Artifacts
uses: actions/upload-artifact@v3
with:
path: dist
macos:
needs: [check]
runs-on: macos-latest
strategy:
matrix:
os: [macos-13, macos-14]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
default: true
- name: Build wheels - x86_64
if: matrix.os == 'macos-13'
uses: messense/maturin-action@v1
with:
target: x86_64
args: --release --out dist
- name: Build wheels - arm64
uses: messense/maturin-action@v1
with:
target: aarch64-apple-darwin
args: --release --out dist
- name: Install built wheel
run: |
pip install gstools-core --no-index --find-links dist --force-reinstall --no-deps
python -c "import gstools_core"
- name: Build wheels - universal2
uses: messense/maturin-action@v1
with:
args: --release --out dist
- name: Install built wheel - universal2
run: |
pip install gstools-core --no-index --find-links dist --force-reinstall --no-deps
python -c "import gstools_core"
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
path: dist
sdist:
needs: [check]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
architecture: x64
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Build sdist
run: |
# PEP 517 package builder from pypa
python -m build --sdist
- uses: actions/upload-artifact@v3
with:
path: dist
publish_on_pypi:
name: Publish
needs: [linux, windows, macos, sdist]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: artifact
path: dist
- name: Publish on TestPyPI
if: github.ref == 'refs/heads/main'
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.test_pypi_password }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true
- name: Publish on PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.pypi_password }}