Skip to content

Commit

Permalink
CI: Refactor CI
Browse files Browse the repository at this point in the history
  • Loading branch information
kernc committed Feb 18, 2025
1 parent 6521194 commit d33f438
Showing 1 changed file with 49 additions and 36 deletions.
85 changes: 49 additions & 36 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,65 @@ on:
schedule: [ cron: '2 2 * * 6' ] # Every Saturday, 02:02

jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 1
steps:
- uses: actions/checkout@v4
- run: pip install flake8 mypy
- run: flake8 backtesting setup.py
- run: mypy --no-warn-unused-ignores backtesting

coverage:
needs: lint
runs-on: ubuntu-latest
timeout-minutes: 4
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- run: pip install -U --pre bokeh pandas numpy coverage && pip install -U .[test]
- env: { BOKEH_BROWSER: none }
run: time coverage run -m backtesting.test
- run: coverage combine && coverage report

build:
name: Build
needs: lint
runs-on: ubuntu-latest
timeout-minutes: 3
strategy:
matrix:
python-version: ['3.10', 3.13]
include:
- python-version: 3.12
test-type: lint
- python-version: 3.11
test-type: docs

python-version: [3.11, 3.12, 3.13]
steps:
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-py${{ matrix.python-version }}
- uses: actions/checkout@v4
with:
fetch-depth: 3
- name: Fetch tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*

- run: pip install -U pip setuptools wheel
- if: matrix.test-type == 'lint'
run: pip install -U --pre bokeh pandas numpy && pip install -U .[dev]
- if: matrix.test-type == 'docs'
run: pip install -e .[doc] # -e provides _version.py for pdoc
- run: pip install -U .[test]
- env: { BOKEH_BROWSER: none }
run: time python -m backtesting.test

- if: matrix.test-type == 'lint'
run: flake8 backtesting setup.py
- if: matrix.test-type == 'lint'
run: mypy backtesting
- if: matrix.test-type == 'lint'
env: { BOKEH_BROWSER: none }
run: time coverage run -m backtesting.test
- if: matrix.test-type == 'lint'
run: coverage combine && coverage report
docs:
needs: lint
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 3
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- run: pip install -e .[doc,test] # -e provides ./backtesting/_version.py for pdoc
- run: time doc/build.sh

- if: '! matrix.test-type'
env: { BOKEH_BROWSER: none }
win64:
needs:
- build
- docs
runs-on: windows-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- run: pip install sambo && pip install .[test]
- env: { BOKEH_BROWSER: none }
run: time python -m backtesting.test

- if: matrix.test-type == 'docs'
run: time doc/build.sh

0 comments on commit d33f438

Please sign in to comment.