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

Migrate CI workflow from Docker to native GitHub actions #494

Draft
wants to merge 11 commits into
base: master
Choose a base branch
from
74 changes: 63 additions & 11 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,77 @@
# Run check and build of the lib using the Bitcraze builder docker image
name: CI

on:
workflow_call:
workflow_dispatch:
push:
branches: [ master ]
branches: [master]
pull_request:
branches: [ master ]
branches: [master]
schedule:
# Weekly build to make sure dependencies are OK
- cron: '30 16 * * 6'

jobs:
build:
verify:
name: Check code formatting and run tests
runs-on: ubuntu-latest

steps:
- name: Checkout repo
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Install pre-commit
run: pip install pre-commit
- name: Check code formatting
run: pre-commit run --all-files
- name: Basic install to fetch dependencies for tests
run: pip install .
- name: Install test dependencies
run: pip install pytest setuptools
- name: Run tests
run : python3 -m unittest discover test

- name: Build
run: docker run --rm -v ${PWD}:/module bitcraze/builder ./tools/build/build
define-python-version-matrix:
name: Define Python versions matrix
needs: verify
runs-on: ubuntu-latest

outputs:
python-version: ${{ steps.python-version.outputs.python-version }}
steps:
- name: Define supported Python versions
id: python-version
run: |
echo 'python-version=["3.10", "3.11", "3.12", "3.13"]' >> "$GITHUB_OUTPUT"

- name: Build docs
run: docker run --rm -v ${PWD}:/module bitcraze/web-builder ./tools/build-docs/build-docs
build:
name: Build package
needs: define-python-version-matrix
runs-on: [ubuntu-latest]
strategy:
matrix:
python-version: ${{ fromJSON(needs.define-python-version-matrix.outputs.python-version) }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: pip install build
- run: python -m build

build-docs:
name: Build documentation
needs: verify
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: install cflib
run: pip install .
- name: install pdoc3
run: pip install pdoc3
- name: build docs
run: pdoc3 docs/api/template