@@ -43,9 +43,11 @@ 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+ max-parallel : 15
50+ fail-fast : true
4951 matrix :
5052 python : ['3.10', '3.11', '3.12', '3.13']
5153
@@ -56,10 +58,12 @@ jobs:
5658 python-version : ${{ matrix.python }}
5759 - name : Install UV
5860 uses : astral-sh/setup-uv@v7
61+ with :
62+ enable-cache : true
5963 - name : Install system dependencies
6064 run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
6165 - name : Install
62- run : make install-dependencies
66+ run : make install
6367 - name : Run linters
6468 run : make lint
6569 - name : Run unit tests with coverage
@@ -69,45 +73,130 @@ jobs:
6973
7074 integration-test :
7175 runs-on : ubuntu-latest
72- strategy :
73- matrix :
74- python : ['3.10', '3.11', '3.12', '3.13']
75-
7676 steps :
7777 - uses : actions/checkout@v6
7878 - uses : actions/setup-python@v6
7979 with :
80- python-version : ${{ matrix.python }}
80+ python-version : ' 3.12 '
8181 - name : Install UV
8282 uses : astral-sh/setup-uv@v7
83+ with :
84+ enable-cache : true
8385 - name : Install system dependencies
8486 run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
8587 - name : Install
8688 run : make install
87-
8889 - name : Run integration tests with coverage
8990 run : COVERAGE=1 make test-integration
9091 - name : Show debug logs
9192 if : ${{ failure() }}
92- run : docker compose -f dev/docker-compose.yml logs
93+ run : docker compose -f dev/docker-compose-integration.yml logs
94+ - name : Upload coverage data
95+ uses : actions/upload-artifact@v4
96+ with :
97+ name : coverage-integration
98+ path : .coverage*
99+ include-hidden-files : true
93100
101+ integration-test-s3 :
102+ runs-on : ubuntu-latest
103+ steps :
104+ - uses : actions/checkout@v6
105+ - uses : actions/setup-python@v6
106+ with :
107+ python-version : ' 3.12'
108+ - name : Install UV
109+ uses : astral-sh/setup-uv@v7
110+ with :
111+ enable-cache : true
112+ - name : Install system dependencies
113+ run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
114+ - name : Install
115+ run : make install
94116 - name : Run s3 integration tests with coverage
95117 run : COVERAGE=1 make test-s3
96118 - name : Show debug logs
97119 if : ${{ failure() }}
98120 run : docker compose -f dev/docker-compose.yml logs
121+ - name : Upload coverage data
122+ uses : actions/upload-artifact@v4
123+ with :
124+ name : coverage-s3
125+ path : .coverage*
126+ include-hidden-files : true
99127
128+ integration-test-adls :
129+ runs-on : ubuntu-latest
130+ steps :
131+ - uses : actions/checkout@v6
132+ - uses : actions/setup-python@v6
133+ with :
134+ python-version : ' 3.12'
135+ - name : Install UV
136+ uses : astral-sh/setup-uv@v7
137+ with :
138+ enable-cache : true
139+ - name : Install system dependencies
140+ run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
141+ - name : Install
142+ run : make install
100143 - name : Run adls integration tests with coverage
101144 run : COVERAGE=1 make test-adls
102145 - name : Show debug logs
103146 if : ${{ failure() }}
104147 run : docker compose -f dev/docker-compose-azurite.yml logs
148+ - name : Upload coverage data
149+ uses : actions/upload-artifact@v4
150+ with :
151+ name : coverage-adls
152+ path : .coverage*
153+ include-hidden-files : true
105154
155+ integration-test-gcs :
156+ runs-on : ubuntu-latest
157+ steps :
158+ - uses : actions/checkout@v6
159+ - uses : actions/setup-python@v6
160+ with :
161+ python-version : ' 3.12'
162+ - name : Install UV
163+ uses : astral-sh/setup-uv@v7
164+ with :
165+ enable-cache : true
166+ - name : Install system dependencies
167+ run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
168+ - name : Install
169+ run : make install
106170 - name : Run gcs integration tests with coverage
107171 run : COVERAGE=1 make test-gcs
108172 - name : Show debug logs
109173 if : ${{ failure() }}
110174 run : docker compose -f dev/docker-compose-gcs-server.yml logs
175+ - name : Upload coverage data
176+ uses : actions/upload-artifact@v4
177+ with :
178+ name : coverage-gcs
179+ path : .coverage*
180+ include-hidden-files : true
111181
182+ integration-coverage-report :
183+ runs-on : ubuntu-latest
184+ needs : [integration-test, integration-test-s3, integration-test-adls, integration-test-gcs]
185+ steps :
186+ - uses : actions/checkout@v6
187+ - uses : actions/setup-python@v6
188+ with :
189+ python-version : ' 3.12'
190+ - name : Install UV
191+ uses : astral-sh/setup-uv@v7
192+ with :
193+ enable-cache : true
194+ - name : Install dependencies
195+ run : uv sync --group dev
196+ - name : Download all coverage artifacts
197+ uses : actions/download-artifact@v7
198+ with :
199+ pattern : coverage-*
200+ merge-multiple : true
112201 - name : Generate coverage report (75%) # Coverage threshold should only increase over time — never decrease it!
113202 run : COVERAGE_FAIL_UNDER=75 make coverage-report
0 commit comments