-
Notifications
You must be signed in to change notification settings - Fork 5
192 lines (156 loc) · 5.38 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
name: pfb-imaging CI Workflow
permissions:
contents: read
pull-requests: read
on:
push:
tags:
- 'v*'
pull_request:
env:
POETRY_VERSION: 1.5
jobs:
should-run:
runs-on: ubuntu-latest
outputs:
run: ${{ steps.check.outputs.should_run }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # This ensures we have access to the commit history
- id: check
shell: bash
run: |
if [ "${{ github.event_name }}" == "pull_request" ] || [ "${{ github.event_name }}" == "pull_request_target" ]; then
message="${{ github.event.pull_request.head.sha }}"
# Fetch the actual commit message since we only get the SHA in PR context
message=$(git ls-remote "${{ github.event.pull_request.head.repo.clone_url }}" "${{ github.event.pull_request.head.ref }}" | cut -f1 | xargs git show --format=%B -s)
else
message="${{ github.event.head_commit.message }}"
fi
echo "Event type: ${{ github.event_name }}"
echo "Original message: '$message'"
message="${message,,}" # Convert to lowercase
echo "Lowercase message: '$message'"
skip_patterns=(
'skip ci'
'ci skip'
'no ci'
'skip-ci'
'ci-skip'
'skip_ci'
'ci_skip'
'noci'
)
should_run="true"
for pattern in "${skip_patterns[@]}"; do
echo "Testing pattern: '$pattern'"
if echo "$message" | grep -q "$pattern"; then
echo "MATCH FOUND for pattern: '$pattern'"
should_run="false"
break
else
echo "No match for pattern: '$pattern'"
fi
done
echo "Should run: $should_run"
echo "should_run=$should_run" >> $GITHUB_OUTPUT
test:
needs: should-run
if: needs.should-run.outputs.run == 'true'
runs-on: ubuntu-latest
continue-on-error: true
env:
NUMBA_CACHE_DIR: /tmp/numba-cache
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version}}
- name: Install poetry
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Check poetry install
run: poetry --version
- name: Checkout source
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Restore repo times
uses: chetan/git-restore-mtime-action@v2
- name: Upgrade pip and setuptools
run: python -m pip install -U pip setuptools
- name: Create Key and Numba Cache Directory
id: numba-key
run: |
mkdir -p ${{ env.NUMBA_CACHE_DIR }}
echo "timestamp=$(/bin/date -u '+%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT
- name: Cache Numba Kernels
uses: actions/cache@v3
with:
key: numba-cache-${{ matrix.python-version }}-${{ steps.numba-key.outputs.timestamp }}
restore-keys: numba-cache-${{ matrix.python-version }}-
path: ${{ env.NUMBA_CACHE_DIR }}
- name: List the measures directory
run: curl ftp://ftp.astron.nl/outgoing/Measures/ > measures_dir.txt
- name: Load cached CASA Measures Data
id: load-cached-casa-measures
uses: actions/cache@v3
with:
key: casa-measures-${{ hashFiles('measures_dir.txt')}}
path: |
~/measures
~/.casarc
- name: Download and install CASA Measures Data
if: steps.load-cached-casa-measures.outputs.cache-hit != 'true'
run: |
mkdir -p ~/measures
curl ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar | tar xvzf - -C ~/measures
echo "measures.directory: ~/measures" > ~/.casarc
- name: Install pfb-imaging
run: poetry install
- name: Run pfb-imaging
run: poetry run pfb --help
- name: Run tests
run: poetry run pytest -v tests/
deploy:
needs: [test]
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
steps:
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install poetry
uses: abatilo/actions-poetry@v2
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Check poetry install
run: poetry --version
- name: Install dependencies
run: poetry install
- name: Build distributions
run: poetry build
- name: Publish distribution to Test PyPI
uses: pypa/gh-action-pypi-publish/v1
with:
user: __token__
password: ${{ secrets.PYPI_TEST_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
verbose: true
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
verbose: true