-
Notifications
You must be signed in to change notification settings - Fork 7
200 lines (165 loc) · 5.63 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
193
194
195
196
197
198
199
200
name: Ubuntu CI
on:
push:
branches:
- master
tags:
- "*"
pull_request:
schedule:
- cron: '30 2 * * 1,4' # Every Monday and Thursday @ 2h30am UTC
env:
POETRY_VERSION: 1.6.1
MINIO_SERVER_DOWNLOAD_URL: https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20231111081441.0.0_amd64.deb
jobs:
check_skip:
runs-on: ubuntu-latest
if: |
!contains(format('{0} {1} {2}', github.event.head_commit.message, github.event.pull_request.title, github.event.pull_request.body), '[skip ci]')
steps:
- run: |
cat <<'MESSAGE'
github.event_name: ${{ toJson(github.event_name) }}
github.event:
${{ toJson(github.event) }}
MESSAGE
test:
needs: check_skip
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11"]
steps:
- name: Create Cache Hash
run: |
export HASH=$(sha256sum <<EOT | cut -c -16
${{ env.POETRY_VERSION }}
${{ env.MINIO_SERVER_DOWNLOAD_URL }}
EOT
)
echo "INSTALL_CACHE_HASH=$HASH" >> $GITHUB_ENV
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache Installations
id: cache-installs
uses: actions/cache@v4
with:
path: ~/.local
key: install-${{ env.INSTALL_CACHE_HASH }}-2
- name: Install Poetry
if: steps.cache-installs.outputs.cache-hit != 'true'
run: |
curl -sSL https://install.python-poetry.org | python3 - --version ${{ env.POETRY_VERSION }}
- name: Test poetry run
run: poetry --version
- name: Install Minio Server
if: steps.cache-installs.outputs.cache-hit != 'true'
run: |
cd /tmp
wget -q -c ${{ env.MINIO_SERVER_DOWNLOAD_URL }} -O minio.deb
dpkg-deb --extract minio.deb /tmp/minio
mkdir -p "${HOME}/.local/bin"
echo "${HOME}/.local/bin" >> $GITHUB_PATH
install /tmp/minio/usr/local/bin/minio "${HOME}/.local/bin/minio"
- name: Test minio run
run: minio --help
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Setup a virtual environment appropriate to the python version
run: poetry env use python${{ matrix.python-version }}
- name: Install dask-ms base
run: poetry install --extras "testing arrow zarr"
- name: Test dask-ms base
run: poetry run py.test -s -vvv daskms/
- name: Install dask-ms complete
run: poetry install --extras "testing complete"
- name: Test dask-ms complete
run: poetry run py.test -s -vvv daskms/
# - name: Debug with tmate on failure
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3
test_apps:
needs: check_skip
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]')"
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]
steps:
- name: Create Cache Hash
run: |
export HASH=$(sha256sum <<EOT | cut -c -16
${{ env.POETRY_VERSION }}
EOT
)
echo "INSTALL_CACHE_HASH=$HASH" >> $GITHUB_ENV
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache Installations
id: cache-installs
uses: actions/cache@v4
with:
path: ~/.local
key: install-${{ env.INSTALL_CACHE_HASH }}-0
- name: Install Poetry
if: steps.cache-installs.outputs.cache-hit != 'true'
run: |
curl -sSL https://install.python-poetry.org | python3 - --version ${{ env.POETRY_VERSION }}
- name: Test poetry run
run: poetry --version
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install dask-ms complete
run: poetry install --extras "testing complete"
- name: Test dask-ms applications
run: poetry run py.test -s -vvv --applications daskms/
# - name: Debug with tmate on failure
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3
deploy:
needs: [test, test_apps]
runs-on: ubuntu-latest
# Run on a push to a tag or master
if: >
github.event_name == 'push' &&
(startsWith(github.event.ref, 'refs/tags') ||
github.event.ref == 'refs/heads/master')
steps:
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install Poetry
uses: abatilo/actions-poetry@v3
with:
poetry-version: ${{ env.POETRY_VERSION }}
- name: Checkout source
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Build distributions
run: poetry build
- name: Publish distribution 📦 to Test PyPI
uses: pypa/gh-action-pypi-publish@master
with:
user: __token__
password: ${{ secrets.test_pypi_token }}
repository_url: https://test.pypi.org/legacy/
continue-on-error: true
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@master
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
with:
user: __token__
password: ${{ secrets.pypi_token }}