This repository has been archived by the owner on Sep 14, 2023. It is now read-only.
CI #317
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: CI | |
on: | |
release: | |
types: [created] | |
push: | |
schedule: | |
# Runs every Thursday at 20:23 GMT to avoid bit rot | |
- cron: "20 23 * * 4" | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Install latest nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
components: rustfmt, clippy | |
- name: Lint with rustfmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
- name: Lint with clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --all-targets --all-features | |
- name: Test with cargo | |
uses: actions-rs/[email protected] | |
with: | |
command: test | |
toolchain: nightly | |
build: | |
runs-on: ${{ matrix.os }} | |
needs: lint | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [3.5, 3.6, 3.7, 3.8, 3.9] | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
exclude: | |
# There is a known issue where Python C extensions | |
# can not be built on Python 3.5 on Windows. | |
# https://github.com/actions/virtual-environments/issues/34 | |
# Therefore, ujson can't be compiled and the build would fail. | |
- os: windows-latest | |
python-version: 3.5 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v1 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python | |
- name: Add poetry to path | |
if: matrix.os != 'windows-latest' | |
run: echo "${HOME}/.poetry/bin" >> $GITHUB_PATH | |
- name: Add poetry to path | |
if: matrix.os == 'windows-latest' | |
run: echo "${HOME}/.poetry/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Install package deps | |
run: | | |
poetry install | |
- name: Install latest nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: Build Python package | |
run: poetry run maturin develop --release | |
- name: pytest | |
run: poetry run pytest tests | |
- name: Benchmark | |
run: poetry run pytest benchmarks --compare | |
rust-publish: | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: Publish on crates.io | |
run: | | |
cargo login ${{ secrets.CARGO }} | |
cargo publish | |
python-publish: | |
needs: build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [3.5, 3.6, 3.7, 3.8, 3.9] | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
exclude: | |
# There is a known issue where Python C extensions | |
# can not be built on Python 3.5 on Windows. | |
# https://github.com/actions/virtual-environments/issues/34 | |
# Therefore, ujson can't be compiled and the build would fail. | |
- os: windows-latest | |
python-version: 3.5 | |
steps: | |
- uses: actions/checkout@v1 | |
- uses: actions/setup-python@v1 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install latest nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
override: true | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install poetry | |
poetry install | |
- name: Build Python package | |
run: poetry run maturin build --release --no-sdist --strip --interpreter python${{matrix.python_version}} | |
- name: List wheels | |
if: matrix.os == 'windows-latest' | |
run: dir target\wheels\ | |
- name: List wheels | |
if: matrix.os != 'windows-latest' | |
run: find ./target/wheels/ | |
# Note: Windows doesn't support glob | |
# https://stackoverflow.com/a/52481267/270334 | |
- name: Install wheels | |
if: matrix.os == 'windows-latest' | |
run: pip install --find-links=target\wheels hyperjson | |
- name: Install wheels | |
if: matrix.os != 'windows-latest' | |
run: pip install target/wheels/hyperjson*.whl | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: target/wheels/hyperjson*.whl | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: PyPi publish | |
if: github.event_name == 'release' && github.event.action == 'created' | |
env: | |
MATURIN_PASSWORD: ${{ secrets.PYPI }} | |
run: poetry run maturin publish --username __token__ |