-
Notifications
You must be signed in to change notification settings - Fork 24
137 lines (110 loc) · 3.9 KB
/
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
on:
# Run on creating or updating a PR
pull_request:
types: [opened, synchronize, reopened]
# And pushing to the trunk or fix branches
push:
branches:
- trunk
- 'fix*'
# And pushing new version tags e.g. 2024.103
tags:
- '20[0-9]{2}\.[0-9]{3}'
jobs:
unit-test:
# Run on ubuntu, mac and windows for python 3.8 (in AMS python stack) up to 3.11
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Move Repo To SCM Namespace and Set PYTHONPATH
if: runner.os != 'Windows'
run: |
mkdir -p scm/plams
find . -mindepth 1 -maxdepth 1 -not -name 'scm' -not -name '.*' -exec mv {} scm/plams/ \;
echo "PYTHONPATH=$(pwd):$PYTHONPATH" >> $GITHUB_ENV
- name: Move Repo To SCM Namespace and Set PYTHONPATH (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
New-Item -Path scm\plams -ItemType Directory -Force
Get-ChildItem -Directory | Where-Object { $_.Name -ne 'scm' } | ForEach-Object {
Move-Item -Path $_.FullName -Destination scm\plams
}
Get-ChildItem -File | ForEach-Object {
Move-Item -Path $_.FullName -Destination scm\plams
}
echo "PYTHONPATH=$(pwd);$env:PYTHONPATH" >> $env:GITHUB_ENV
- name: Set Up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
working-directory: scm/plams
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest
pip install coverage
- name: Run Unit Tests
working-directory: scm/plams
run: |
pwd
coverage run -m pytest unit_tests
# ToDo: Bump the fail-under threshold over time until acceptable level is reached
- name: Evaluate Coverage
working-directory: scm/plams
run: coverage report --omit="unit_tests/*" -i --fail-under=25
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set Up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install black
pip install "black[jupyter]"
pip install flake8
- name: Run Black
run: |
black --check -t py38 -l 120 .
- name: Run Flake8
run: |
flake8 --color never --count --config .flake8 .
build-docs:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Move Repo To SCM Namespace and Set PYTHONPATH
run: |
mkdir -p scm/plams
find . -mindepth 1 -maxdepth 1 -not -name 'scm' -not -name '.*' -exec mv {} scm/plams/ \;
echo "PYTHONPATH=$(pwd):$PYTHONPATH" >> $GITHUB_ENV
- name: Set Up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Dependencies
working-directory: scm/plams
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
cd doc
pip install -r requirements.txt
# Turn on the -W flag when building once warnings to external links have been resolved
# ToDo: add a warning allowlist to check the warnings logged via -w
- name: Build Sphinx Docs
working-directory: scm/plams/doc
run: |
python build_plams_doc