Skip to content

fix build, ci

fix build, ci #220

name: Test, build, publish docs and release
on:
push:
tags:
- v*
branches-ignore:
- "gh-pages"
env:
NO_CYTHON_COMPILE: "true"
jobs:
build-and-test:
name: Install, test, build package and build docs
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.7', '3.8', '3.9', '3.10']
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install
run: |
python -m pip install --no-cache-dir -e .[dev]
- name: Test import
run: python -m compas_mrr
- name: Test
run: pytest
- name: Build docs
run: |
sphinx-build -b doctest docs build/docs
sphinx-apidoc \
--separate \
--module-first \
--no-toc \
--force \
--no-headings \
-o docs/reference src/compas_mobile_robot_reloc
sphinx-build -b html docs dist/docs
sphinx-build -b linkcheck docs dist/docs
- name: Build package
run: python -m build
ironpython-test:
name: windows-ironpython
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Set up CPython 3.8 (RPC tests)
uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Install dependencies & package for CPython (RPC tests)
run: |
pip install wheel # https://stackoverflow.com/questions/34819221
pip install --no-cache-dir .
- name: Install dependencies
run: |
choco install ironpython --version=2.7.8.1
ipy -X:Frames -m ensurepip
curl -o compas.tar.gz -LJO https://pypi.debian.net/compas/latest
ipy -X:Frames -m pip install --no-deps compas.tar.gz
curl -o ironpython-pytest.tar.gz -LJO https://pypi.debian.net/ironpython-pytest/latest
ipy -X:Frames -m pip install --no-deps ironpython-pytest.tar.gz
- name: Test import
run: |
ipy -m compas_mrr
env:
IRONPYTHONPATH: ./src
- name: Run tests
run: |
ipy tests/ipy_test_runner.py
env:
IRONPYTHONPATH: ./src
publish-docs:
name: Publish docs
needs: build-and-test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Checkout repo
uses: actions/checkout@v4
- name: Install
run: |
pip install --no-cache-dir -e .[dev]
- name: Build docs
run: |
sphinx-build -b doctest docs build/docs
sphinx-apidoc \
--separate \
--module-first \
--no-toc \
--force \
--no-headings \
-o docs/reference src/compas_mobile_robot_reloc
sphinx-build -b html docs dist/docs
sphinx-build -b linkcheck docs dist/docs
- name: Publish docs on branch gh-pages
uses: crazy-max/ghaction-github-pages@5859b4ea7efe6b470a5b19c570460eae9323aefc
with:
target_branch: gh-pages
build_dir: dist/docs
jekyll: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish-package:
name: Publish package
needs: build-and-test
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
steps:
- name: Get version from tag
id: tag_name
run: |
echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v}
- name: Checkout repo
uses: actions/checkout@v4
- name: Get Changelog Entry
id: changelog_reader
uses: mindsers/changelog-reader-action@v2
with:
version: ${{ steps.tag_name.outputs.current_version }}
path: ./CHANGELOG.md
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install
run: python -m pip install --no-cache-dir -e .[dev]
- name: Build package
run: python -m build .
- name: Upload and release package on PyPi
uses: pypa/gh-action-pypi-publish@v1.8.11
if: steps.changelog_reader.outputs.status == 'released'
with:
user: __token__
password: ${{ secrets.pypi_password }}
- name: Create GitHub release and upload assets
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
dist/*.whl
dist/*.tar.gz
body: ${{ steps.changelog_reader.outputs.changes }}
prerelease: ${{ steps.changelog_reader.outputs.status == 'prereleased' }}
draft: ${{ steps.changelog_reader.outputs.status == 'unreleased' }}