@@ -43,23 +43,26 @@ concurrency:
4343 cancel-in-progress : ${{ github.event_name == 'pull_request' }}
4444
4545jobs :
46- lint-and-test :
46+ lint-and-unit- test :
4747 runs-on : ubuntu-latest
4848 strategy :
49+ fail-fast : true
4950 matrix :
50- python : ['3.9 ', '3.10 ', '3.11 ', '3.12 ']
51+ python : ['3.10 ', '3.11 ', '3.12 ', '3.13 ']
5152
5253 steps :
53- - uses : actions/checkout@v5
54+ - uses : actions/checkout@v6
5455 - uses : actions/setup-python@v6
5556 with :
5657 python-version : ${{ matrix.python }}
57- - name : Install poetry
58- run : make install-poetry
58+ - name : Install UV
59+ uses : astral-sh/setup-uv@v7
60+ with :
61+ enable-cache : true
5962 - name : Install system dependencies
6063 run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
6164 - name : Install
62- run : make install-dependencies
65+ run : make install
6366 - name : Run linters
6467 run : make lint
6568 - name : Run unit tests with coverage
@@ -69,43 +72,130 @@ jobs:
6972
7073 integration-test :
7174 runs-on : ubuntu-latest
72- strategy :
73- matrix :
74- python : ['3.9', '3.10', '3.11', '3.12']
75-
7675 steps :
77- - uses : actions/checkout@v5
76+ - uses : actions/checkout@v6
7877 - uses : actions/setup-python@v6
7978 with :
80- python-version : ${{ matrix.python }}
79+ python-version : ' 3.12'
80+ - name : Install UV
81+ uses : astral-sh/setup-uv@v7
82+ with :
83+ enable-cache : true
8184 - name : Install system dependencies
8285 run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
8386 - name : Install
8487 run : make install
85-
8688 - name : Run integration tests with coverage
8789 run : COVERAGE=1 make test-integration
8890 - name : Show debug logs
8991 if : ${{ failure() }}
90- run : docker compose -f dev/docker-compose.yml logs
92+ run : docker compose -f dev/docker-compose-integration.yml logs
93+ - name : Upload coverage data
94+ uses : actions/upload-artifact@v4
95+ with :
96+ name : coverage-integration
97+ path : .coverage*
98+ include-hidden-files : true
9199
100+ integration-test-s3 :
101+ runs-on : ubuntu-latest
102+ steps :
103+ - uses : actions/checkout@v6
104+ - uses : actions/setup-python@v6
105+ with :
106+ python-version : ' 3.12'
107+ - name : Install UV
108+ uses : astral-sh/setup-uv@v7
109+ with :
110+ enable-cache : true
111+ - name : Install system dependencies
112+ run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
113+ - name : Install
114+ run : make install
92115 - name : Run s3 integration tests with coverage
93116 run : COVERAGE=1 make test-s3
94117 - name : Show debug logs
95118 if : ${{ failure() }}
96119 run : docker compose -f dev/docker-compose.yml logs
120+ - name : Upload coverage data
121+ uses : actions/upload-artifact@v4
122+ with :
123+ name : coverage-s3
124+ path : .coverage*
125+ include-hidden-files : true
97126
127+ integration-test-adls :
128+ runs-on : ubuntu-latest
129+ steps :
130+ - uses : actions/checkout@v6
131+ - uses : actions/setup-python@v6
132+ with :
133+ python-version : ' 3.12'
134+ - name : Install UV
135+ uses : astral-sh/setup-uv@v7
136+ with :
137+ enable-cache : true
138+ - name : Install system dependencies
139+ run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
140+ - name : Install
141+ run : make install
98142 - name : Run adls integration tests with coverage
99143 run : COVERAGE=1 make test-adls
100144 - name : Show debug logs
101145 if : ${{ failure() }}
102146 run : docker compose -f dev/docker-compose-azurite.yml logs
147+ - name : Upload coverage data
148+ uses : actions/upload-artifact@v4
149+ with :
150+ name : coverage-adls
151+ path : .coverage*
152+ include-hidden-files : true
103153
154+ integration-test-gcs :
155+ runs-on : ubuntu-latest
156+ steps :
157+ - uses : actions/checkout@v6
158+ - uses : actions/setup-python@v6
159+ with :
160+ python-version : ' 3.12'
161+ - name : Install UV
162+ uses : astral-sh/setup-uv@v7
163+ with :
164+ enable-cache : true
165+ - name : Install system dependencies
166+ run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
167+ - name : Install
168+ run : make install
104169 - name : Run gcs integration tests with coverage
105170 run : COVERAGE=1 make test-gcs
106171 - name : Show debug logs
107172 if : ${{ failure() }}
108173 run : docker compose -f dev/docker-compose-gcs-server.yml logs
174+ - name : Upload coverage data
175+ uses : actions/upload-artifact@v4
176+ with :
177+ name : coverage-gcs
178+ path : .coverage*
179+ include-hidden-files : true
109180
181+ integration-coverage-report :
182+ runs-on : ubuntu-latest
183+ needs : [integration-test, integration-test-s3, integration-test-adls, integration-test-gcs]
184+ steps :
185+ - uses : actions/checkout@v6
186+ - uses : actions/setup-python@v6
187+ with :
188+ python-version : ' 3.12'
189+ - name : Install UV
190+ uses : astral-sh/setup-uv@v7
191+ with :
192+ enable-cache : true
193+ - name : Install dependencies
194+ run : uv sync --group dev
195+ - name : Download all coverage artifacts
196+ uses : actions/download-artifact@v7
197+ with :
198+ pattern : coverage-*
199+ merge-multiple : true
110200 - name : Generate coverage report (75%) # Coverage threshold should only increase over time — never decrease it!
111201 run : COVERAGE_FAIL_UNDER=75 make coverage-report
0 commit comments