-
Notifications
You must be signed in to change notification settings - Fork 7
137 lines (135 loc) · 4.39 KB
/
python-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: CI - Python Package
on:
push:
branches: [main, feature/*, release/*, hotfix/*]
pull_request:
branches: [main, develop]
repository_dispatch:
types: [create-pull-request]
jobs:
pre-commit:
name: Pre-commit
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
- name: Install pre-commit
run: |
python -m pip install --upgrade pip
pip install pre-commit
pip freeze --local
- name: Cash pre-commit
uses: actions/cache@v4
with:
path: ~/.cache/pre-commit
key: ${{ runner.os }}-pre-commit-${{ hashFiles('**/.pre-commit-config.yaml') }}
restore-keys: |
${{ runner.os }}-pre-commit-
- name: Pre-commit
run: |
pre-commit run --all-files --color=always
build:
name: Python ${{ matrix.python-version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
needs: pre-commit
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
os: [ubuntu-latest, windows-latest, macOS-latest]
arch: [x64]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry and dependencies with dev-dependencies
run: |
python -m pip install --upgrade pip
# if [ "${{ matrix.os }}" == "windows-latest" ]; then
# pip install poetry
# else
pip install poetry
# fi
poetry config virtualenvs.create true
poetry config virtualenvs.in-project true
poetry config virtualenvs.path .venv
poetry install --no-interaction --with dev -E all
- name: Test SpectraFit
run: poetry run pytest
- name: Codecov
uses: codecov/[email protected]
with:
name: codecov-umbrella
flags: unittests
verbose: true
env_vars: OS,PYTHON
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
minimal-build:
name: Build SpectraFit without dev-dependencies
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Poetry and dependencies without dev-dependencies
run: |
python -m pip install --upgrade pip
pip install poetry
poetry config virtualenvs.create true
poetry config virtualenvs.in-project true
poetry config virtualenvs.path .venv
poetry install --no-interaction --only main
documentation:
name: Build Documentation
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Poetry and dependencies with doc-dependencies
run: |
python -m pip install --upgrade pip
pip install poetry
poetry config virtualenvs.create true
poetry config virtualenvs.in-project true
poetry config virtualenvs.path .venv
poetry install --no-interaction --with docs --all-extras
- name: Set git config
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
- name: Build documentation
if: ${{ !contains(github.ref, 'refs/heads/main')}}
run: poetry run mkdocs build --clean
- name: Deploy documentation develops
if: contains(github.ref, 'refs/heads/main')
run: poetry run mike deploy --push --update-aliases develop
devcontainer:
name: Devcontainer
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build devcontainer
uses: devcontainers/[email protected]