6767 - name : Generate coverage report (85%) # Coverage threshold should only increase over time — never decrease it!
6868 run : COVERAGE_FAIL_UNDER=85 make coverage-report
6969
70+ build-docker-images :
71+ runs-on : ubuntu-latest
72+ steps :
73+ - uses : actions/checkout@v6
74+
75+ - name : Set up Docker Buildx
76+ uses : docker/setup-buildx-action@v3
77+
78+ - name : Build and cache Spark image
79+ uses : docker/build-push-action@v6
80+ with :
81+ context : dev/spark
82+ tags : pyiceberg-spark:latest
83+ cache-from : type=gha,scope=spark
84+ cache-to : type=gha,mode=max,scope=spark
85+
86+ - name : Build and cache Hive image
87+ uses : docker/build-push-action@v6
88+ with :
89+ context : dev/hive
90+ tags : pyiceberg-hive:latest
91+ cache-from : type=gha,scope=hive
92+ cache-to : type=gha,mode=max,scope=hive
93+
7094 integration-test :
7195 runs-on : ubuntu-latest
96+ needs : build-docker-images
7297 strategy :
7398 matrix :
7499 python : ['3.10', '3.11', '3.12', '3.13']
@@ -88,23 +113,21 @@ jobs:
88113 - name : Set up Docker Buildx
89114 uses : docker/setup-buildx-action@v3
90115
91- - name : Build and cache Spark image
116+ - name : Build Spark image (from cache)
92117 uses : docker/build-push-action@v6
93118 with :
94119 context : dev/spark
95120 load : true
96121 tags : pyiceberg-spark:latest
97122 cache-from : type=gha,scope=spark
98- cache-to : type=gha,mode=max,scope=spark
99123
100- - name : Build and cache Hive image
124+ - name : Build Hive image (from cache)
101125 uses : docker/build-push-action@v6
102126 with :
103127 context : dev/hive
104128 load : true
105129 tags : pyiceberg-hive:latest
106130 cache-from : type=gha,scope=hive
107- cache-to : type=gha,mode=max,scope=hive
108131
109132 - name : Run integration tests with coverage
110133 run : COVERAGE=1 make test-integration
0 commit comments