-
Notifications
You must be signed in to change notification settings - Fork 34
144 lines (119 loc) · 3.69 KB
/
Copy pathsubscript.yml
File metadata and controls
144 lines (119 loc) · 3.69 KB
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
138
139
140
141
142
143
144
name: subscript
permissions:
contents: read
on:
push:
branches:
- main
pull_request:
release:
types:
- published
schedule:
# Run nightly to check that tests are working with latest dependencies
- cron: "0 0 * * *"
env:
MPLBACKEND: Agg
UV_SYSTEM_PYTHON: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11", "3.12", "3.13"]
pandas-version: [""]
include:
- python-version: "3.13"
pandas-version: ">=2,<3"
- python-version: "3.13"
pandas-version: ">=3.0.0"
exclude:
- python-version: "3.13"
pandas-version: ""
steps:
- name: Install Ubuntu dependencies
run: |
sudo apt-get update
sudo apt-get install libegl1
- name: Checkout commit locally
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
- name: Install OPM-flow (for testing)
run: |
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:opm/ppa
sudo apt-get update
sudo apt-get install mpi-default-bin
sudo apt-get install libopm-simulators-bin
- name: Install subscript with dependencies
run: |
uv pip install ".[tests, docs]"
- name: Pin pandas version
if: matrix.pandas-version
run: uv pip install "pandas${{ matrix.pandas-version }}"
- name: Log OPM-Flow version
run: |
flow --version
- name: List all installed packages
run: uv pip freeze
- name: Run tests
run: pytest -n logical tests --mpl
- name: Syntax check documentation
if: ${{ !cancelled() }}
run: rstcheck -r docs
- name: Build documentation
if: ${{ !cancelled() }}
run: sphinx-build -b html docs build/docs/html
- name: Upload documentation artifact
if: matrix.python-version == '3.12' && success()
uses: actions/upload-artifact@v7
with:
name: docs-html
path: build/docs/html
deploy-docs:
needs: test
if: github.repository_owner == 'equinor' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout commit locally
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Download documentation artifact
uses: actions/download-artifact@v8
with:
name: docs-html
path: docs-html
- name: Update GitHub pages
run: |
cp -R docs-html ../html
git config --local user.email "subscript-github-action"
git config --local user.name "subscript-github-action"
git fetch origin gh-pages
git checkout --track origin/gh-pages
git clean -f -f -d -x # Double -f is intentional
git rm -r *
cp -R ../html/* .
touch .nojekyll # If not, github pages ignores _* directories.
git add .
if git diff-index --quiet HEAD; then
echo "No changes in documentation. Skip documentation deploy."
else
git commit -m "Update Github Pages"
git push origin gh-pages
fi