-
Notifications
You must be signed in to change notification settings - Fork 42
135 lines (119 loc) · 4.39 KB
/
build_workflow.yml
File metadata and controls
135 lines (119 loc) · 4.39 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
name: CI/CD Build Workflow
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
env:
CANCEL_OTHERS: false
PATHS_IGNORE: '["**/README.md", "**/docs/**"]'
PYTHON_VERSION: "3.14"
jobs:
pre-commit-hooks:
name: lint with pre-commit
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@master
with:
cancel_others: ${{ env.CANCEL_OTHERS }}
paths_ignore: ${{ env.PATHS_IGNORE }}
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Checkout Code Repository
uses: actions/checkout@v6
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
id: file_changes
uses: trilom/file-changes-action@1.2.4
with:
output: ' '
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
# Run all pre-commit hooks on all the files.
# Getting only staged files can be tricky in case a new PR is opened
# since the action is run on a branch in detached head state
name: Install and Run Pre-commit
uses: pre-commit/action@v3.0.1
with:
extra_args: --files ${{ steps.file_changes.outputs.files}}
build:
name: test compass - python ${{ matrix.python-version }}
runs-on: ubuntu-latest
timeout-minutes: 20
defaults:
run:
shell: bash -l {0}
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
fail-fast: false
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@master
with:
cancel_others: ${{ env.CANCEL_OTHERS }}
paths_ignore: ${{ env.PATHS_IGNORE }}
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
uses: actions/checkout@v6
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Cache pixi packages
uses: actions/cache@v5
env:
# Increase this value to reset cache if deploy inputs have not changed in the workflow
CACHE_NUMBER: 0
with:
path: |
~/.cache/rattler/cache
~/.pixi/bin
key: ${{ runner.os }}-${{ matrix.python-version }}-pixi-${{ env.CACHE_NUMBER }}-${{ hashFiles('deploy.py', 'deploy/**', 'pyproject.toml') }}
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Install compass
run: |
git config --global url."https://github.com/".insteadOf "git@github.com:"
./deploy.py \
--mache-fork xylar/mache --mache-branch add-target-software-cli-flags \
--no-spack \
--python ${{ matrix.python-version }} \
--recreate
load_script=$(find . -maxdepth 1 -type f -name 'load_compass*.sh' | sort | tail -n 1)
if [ -z "$load_script" ]; then
echo "ERROR: no generated Compass load script found" >&2
exit 1
fi
source "$load_script"
python -c "import compass; import compass.version; print(compass.version.__version__)"
compass --help
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Build Sphinx Docs
run: |
load_script=$(find . -maxdepth 1 -type f -name 'load_compass*.sh' | sort | tail -n 1)
source "$load_script"
cd docs
make html-strict
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Run Tests
env:
CHECK_IMAGES: False
run: |
load_script=$(find . -maxdepth 1 -type f -name 'load_compass*.sh' | sort | tail -n 1)
source "$load_script"
python -c "import compass"
compass list
compass list --machines
compass list --suites
compass list --help
compass setup --help
compass suite --help
compass clean --help
create_compass_load_script --help
pip check