2424 - ' packages/cubejs-mysql-driver/**'
2525 - ' packages/cubejs-postgres-driver/**'
2626 - ' packages/cubejs-snowflake-driver/**'
27+ - ' packages/cubejs-vertica-driver/**'
2728
2829 # To test SQL API Push down
2930 - ' packages/cubejs-backend-native/**'
4950 - ' packages/cubejs-mysql-driver/**'
5051 - ' packages/cubejs-postgres-driver/**'
5152 - ' packages/cubejs-snowflake-driver/**'
53+ - ' packages/cubejs-vertica-driver/**'
5254
5355 # To test SQL API Push down
5456 - ' packages/cubejs-backend-native/**'
8486 name : Build native Linux ${{ matrix.node-version }} ${{ matrix.target }} Python ${{ matrix.python-version }}
8587 strategy :
8688 matrix :
87- node-version : [ 18 ]
89+ node-version : [ 20 ]
8890 python-version : [ "fallback" ]
8991 target : [ "x86_64-unknown-linux-gnu" ]
9092 fail-fast : false
@@ -109,7 +111,7 @@ jobs:
109111 - name : Install Yarn
110112 run : npm install -g yarn
111113 - name : Set Yarn version
112- run : yarn policies set-version v1.22.19
114+ run : yarn policies set-version v1.22.22
113115 - name : Install cargo-cp-artifact
114116 run :
npm install -g [email protected] 115117 - uses : Swatinem/rust-cache@v2
@@ -144,6 +146,8 @@ jobs:
144146 if : (needs['latest-tag-sha'].outputs.sha != github.sha)
145147 runs-on : ubuntu-20.04
146148 timeout-minutes : 30
149+ env :
150+ DOCKERHUB_USERNAME : ${{ secrets.DOCKERHUB_USERNAME }}
147151 steps :
148152 - name : Check out the repo
149153 uses : actions/checkout@v4
@@ -154,6 +158,7 @@ jobs:
154158 with :
155159 username : ${{ secrets.DOCKERHUB_USERNAME }}
156160 password : ${{ secrets.DOCKERHUB_TOKEN }}
161+ if : (env.DOCKERHUB_USERNAME != '')
157162 - name : Set up QEMU
158163 uses : docker/setup-qemu-action@v3
159164 - name : Download native build
@@ -167,40 +172,79 @@ jobs:
167172 context : .
168173 file : ./packages/cubejs-docker/testing-drivers.Dockerfile
169174 tags : cubejs/cube:testing-drivers
170- push : true
175+ push : ${{ (env.DOCKERHUB_USERNAME != '') }}
176+ - name : Save Docker image as artifact
177+ run : |
178+ IMAGE_TAG=cubejs/cube:testing-drivers
179+ docker save -o image.tar $IMAGE_TAG
180+ gzip image.tar
181+ continue-on-error : true
182+ - name : Upload Docker image artifact
183+ uses : actions/upload-artifact@v4
184+ with :
185+ name : docker-image
186+ path : image.tar.gz
171187
172188 tests :
173189 runs-on : ubuntu-20.04
174190 timeout-minutes : 30
175191 needs : [latest-tag-sha, build]
176192 if : (needs['latest-tag-sha'].outputs.sha != github.sha)
193+ env :
194+ CLOUD_DATABASES : >
195+ athena-export-bucket-s3
196+ bigquery-export-bucket-gcs
197+ clickhouse-export-bucket-s3
198+ databricks-jdbc
199+ databricks-jdbc-export-bucket-s3
200+ databricks-jdbc-export-bucket-azure
201+ redshift
202+ redshift-export-bucket-s3
203+ snowflake
204+ snowflake-export-bucket-s3
205+ snowflake-export-bucket-azure
206+ snowflake-export-bucket-azure-via-storage-integration
207+ snowflake-export-bucket-gcs
208+ # As per docs:
209+ # Secrets cannot be directly referenced in if: conditionals. Instead, consider setting
210+ # secrets as job-level environment variables, then referencing the environment variables
211+ # to conditionally run steps in the job.
212+ DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY : ${{ secrets.DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY }}
177213 strategy :
178214 matrix :
179215 node :
180- - 18 .x
216+ - 20 .x
181217 database :
182- - athena
183- - bigquery
218+ - athena-export-bucket-s3
219+ - bigquery-export-bucket-gcs
184220 - clickhouse
221+ - clickhouse-export-bucket-s3
185222 - databricks-jdbc
186- - databricks-jdbc-export-bucket
223+ - databricks-jdbc-export-bucket-s3
224+ - databricks-jdbc-export-bucket-azure
187225 - mssql
188226 - mysql
189227 - postgres
228+ - redshift
229+ - redshift-export-bucket-s3
190230 - snowflake
231+ - snowflake-export-bucket-s3
232+ - snowflake-export-bucket-azure
233+ - snowflake-export-bucket-azure-via-storage-integration
234+ - snowflake-export-bucket-gcs
191235 fail-fast : false
192236
193237 steps :
194238 - name : Checkout
195239 uses : actions/checkout@v4
196240
197- - name : Install Node.js 18 .x
241+ - name : Install Node.js 20 .x
198242 uses : actions/setup-node@v4
199243 with :
200- node-version : 18 .x
244+ node-version : 20 .x
201245
202246 - name : Configure `yarn`
203- run : yarn policies set-version v1.22.19
247+ run : yarn policies set-version v1.22.22
204248
205249 - name : Get yarn cache directory path
206250 id : yarn-cache-dir-path
@@ -237,7 +281,22 @@ jobs:
237281 cd packages/cubejs-testing-drivers
238282 yarn tsc
239283
284+ - name : Download Docker image artifact
285+ uses : actions/download-artifact@v4
286+ with :
287+ name : docker-image
288+
289+ - name : Load Docker image into Docker Daemon
290+ run : |
291+ gunzip image.tar.gz
292+ docker load -i image.tar
293+
240294 - name : Run tests
295+ uses : nick-fields/retry@v3
296+ # It's enough to test for any one secret because they are set all at once or not set all
297+ if : |
298+ (contains(env.CLOUD_DATABASES, matrix.database) && env.DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY != '') ||
299+ (!contains(env.CLOUD_DATABASES, matrix.database))
241300 env :
242301 # Athena
243302 DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY : ${{ secrets.DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY }}
@@ -246,16 +305,34 @@ jobs:
246305 # BigQuery
247306 DRIVERS_TESTS_CUBEJS_DB_BQ_CREDENTIALS : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_BQ_CREDENTIALS }}
248307
308+ # GCS
309+ DRIVERS_TESTS_CUBEJS_DB_EXPORT_GCS_CREDENTIALS : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_EXPORT_GCS_CREDENTIALS }}
310+
311+ # Azure
312+ DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AZURE_KEY : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AZURE_KEY }}
313+ DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AZURE_SAS_TOKEN : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AZURE_SAS_TOKEN }}
314+
249315 # Databricks
250316 DRIVERS_TESTS_CUBEJS_DB_DATABRICKS_URL : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_DATABRICKS_URL }}
251317 DRIVERS_TESTS_CUBEJS_DB_DATABRICKS_TOKEN : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_DATABRICKS_TOKEN }}
252318 DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AWS_KEY : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AWS_KEY }}
253319 DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AWS_SECRET : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_EXPORT_BUCKET_AWS_SECRET }}
254320
321+ # Redshift
322+ DRIVERS_TESTS_CUBEJS_DB_REDSHIFT_HOST : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_REDSHIFT_HOST }}
323+ DRIVERS_TESTS_CUBEJS_DB_REDSHIFT_USER : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_REDSHIFT_USER }}
324+ DRIVERS_TESTS_CUBEJS_DB_REDSHIFT_PASS : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_REDSHIFT_PASS }}
325+
255326 # Snowflake
256327 DRIVERS_TESTS_CUBEJS_DB_SNOWFLAKE_USER : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_SNOWFLAKE_USER }}
257328 DRIVERS_TESTS_CUBEJS_DB_SNOWFLAKE_PASS : ${{ secrets.DRIVERS_TESTS_CUBEJS_DB_SNOWFLAKE_PASS }}
258- run : |
259- cd ./packages/cubejs-testing-drivers
260- export DEBUG=testcontainers
261- yarn ${{ matrix.database }}-full
329+ with :
330+ max_attempts : 3
331+ retry_on : error
332+ retry_wait_seconds : 15
333+ timeout_minutes : 20
334+ command : |
335+ cd ./packages/cubejs-testing-drivers
336+ export DEBUG=testcontainers
337+ yarn ${{ matrix.database }}-full
338+
0 commit comments