6262 required : false
6363 default : ' ~failing'
6464 type : string
65+ hole-punch-transport-ignore :
66+ description : ' [Hole-punch] Ignore transports (pipe-separated patterns)'
67+ required : false
68+ default : ' ws|webrtc-direct'
69+ type : string
6570 hole-punch-force-matrix-rebuild :
6671 description : ' [Hole-punch] Force test matrix regeneration'
6772 required : false
124129 required : false
125130 default : false
126131 type : boolean
132+ export-docker-images :
133+ description : ' Export Docker images in snapshot (enabled by default on schedule, disabled on manual)'
134+ required : false
135+ default : false
136+ type : boolean
127137
128138jobs :
129139 resolve-transport-parameters :
@@ -195,6 +205,7 @@ jobs:
195205 relay-ignore : ${{ steps.resolve.outputs.relay-ignore }}
196206 router-select : ${{ steps.resolve.outputs.router-select }}
197207 router-ignore : ${{ steps.resolve.outputs.router-ignore }}
208+ transport-ignore : ${{ steps.resolve.outputs.transport-ignore }}
198209 force-matrix-rebuild : ${{ steps.resolve.outputs.force-matrix-rebuild }}
199210 force-image-rebuild : ${{ steps.resolve.outputs.force-image-rebuild }}
200211 debug : ${{ steps.resolve.outputs.debug }}
@@ -217,6 +228,7 @@ jobs:
217228 echo "relay-ignore=${{ github.event.inputs.hole-punch-relay-ignore }}" >> $GITHUB_OUTPUT
218229 echo "router-select=${{ github.event.inputs.hole-punch-router-select }}" >> $GITHUB_OUTPUT
219230 echo "router-ignore=${{ github.event.inputs.hole-punch-router-ignore }}" >> $GITHUB_OUTPUT
231+ echo "transport-ignore=${{ github.event.inputs.hole-punch-transport-ignore }}" >> $GITHUB_OUTPUT
220232 echo "force-matrix-rebuild=${{ github.event.inputs.hole-punch-force-matrix-rebuild }}" >> $GITHUB_OUTPUT
221233 echo "force-image-rebuild=${{ github.event.inputs.hole-punch-force-image-rebuild }}" >> $GITHUB_OUTPUT
222234 echo "debug=${{ github.event.inputs.hole-punch-debug }}" >> $GITHUB_OUTPUT
@@ -233,6 +245,7 @@ jobs:
233245 echo "relay-ignore=" >> $GITHUB_OUTPUT
234246 echo "router-select=" >> $GITHUB_OUTPUT
235247 echo "router-ignore=" >> $GITHUB_OUTPUT
248+ echo "transport-ignore=ws|webrtc-direct" >> $GITHUB_OUTPUT
236249 echo "force-image-rebuild=false" >> $GITHUB_OUTPUT
237250 echo "debug=false" >> $GITHUB_OUTPUT
238251
@@ -331,6 +344,7 @@ jobs:
331344 test-ignore : ' ${{ needs.resolve-transport-parameters.outputs.test-ignore }}'
332345 cache-dir : /srv/cache
333346 snapshot : true
347+ export-docker-images : ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.export-docker-images == 'true' }}
334348 force-matrix-rebuild : ${{ needs.resolve-transport-parameters.outputs.force-matrix-rebuild }}
335349 force-image-rebuild : ${{ needs.resolve-transport-parameters.outputs.force-image-rebuild }}
336350 debug : ${{ needs.resolve-transport-parameters.outputs.debug }}
@@ -353,8 +367,10 @@ jobs:
353367 relay-ignore : ' ${{ needs.resolve-hole-punch-parameters.outputs.relay-ignore }}'
354368 router-select : ' ${{ needs.resolve-hole-punch-parameters.outputs.router-select }}'
355369 router-ignore : ' ${{ needs.resolve-hole-punch-parameters.outputs.router-ignore }}'
370+ transport-ignore : ' ${{ needs.resolve-hole-punch-parameters.outputs.transport-ignore }}'
356371 cache-dir : /srv/cache
357372 snapshot : true
373+ export-docker-images : ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.export-docker-images == 'true' }}
358374 force-matrix-rebuild : ${{ needs.resolve-hole-punch-parameters.outputs.force-matrix-rebuild }}
359375 force-image-rebuild : ${{ needs.resolve-hole-punch-parameters.outputs.force-image-rebuild }}
360376 debug : ${{ needs.resolve-hole-punch-parameters.outputs.debug }}
@@ -378,6 +394,7 @@ jobs:
378394 iterations : ' ${{ needs.resolve-perf-parameters.outputs.iterations }}'
379395 cache-dir : /srv/cache
380396 snapshot : true
397+ export-docker-images : ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.export-docker-images == 'true' }}
381398 force-matrix-rebuild : ${{ needs.resolve-perf-parameters.outputs.force-matrix-rebuild }}
382399 force-image-rebuild : ${{ needs.resolve-perf-parameters.outputs.force-image-rebuild }}
383400 debug : ${{ needs.resolve-perf-parameters.outputs.debug }}
@@ -396,6 +413,7 @@ jobs:
396413
397414 - name : Download transport test results
398415 if : needs.run-transport-full.result != 'skipped'
416+ continue-on-error : true
399417 uses : actions/download-artifact@v4
400418 with :
401419 pattern : transport-test-results-*
@@ -404,6 +422,7 @@ jobs:
404422
405423 - name : Download hole-punch test results
406424 if : needs.run-hole-punch-full.result != 'skipped'
425+ continue-on-error : true
407426 uses : actions/download-artifact@v4
408427 with :
409428 pattern : hole-punch-test-results-*
@@ -412,6 +431,7 @@ jobs:
412431
413432 - name : Download perf test results
414433 if : needs.run-perf-full.result != 'skipped'
434+ continue-on-error : true
415435 uses : actions/download-artifact@v4
416436 with :
417437 pattern : perf-test-results-*
@@ -449,7 +469,6 @@ jobs:
449469 yq eval '.testResults[0]' "$PERF_YAML" 2>/dev/null || echo "No test results found"
450470 fi
451471
452-
453472 - name : Find result directories and prepare merge
454473 id : find-results
455474 shell : bash
@@ -535,31 +554,34 @@ jobs:
535554 echo "=== Generated YAML content preview ==="
536555 head -100 /tmp/merged-results/daily-full-interop.yml
537556
538- - name : Install AWS CLI
557+ - name : Verify AWS CLI
539558 if : github.event_name != 'workflow_dispatch' || inputs.upload-results
540559 shell : bash
560+ run : aws --version
561+
562+ - name : Configure AWS credentials for Filebase
563+ if : github.event_name != 'workflow_dispatch' || inputs.upload-results
564+ env :
565+ AWS_ACCESS_KEY_ID : ${{ secrets.FILEBASE_ACCESS_KEY }}
566+ AWS_SECRET_ACCESS_KEY : ${{ secrets.FILEBASE_SECRET_KEY }}
567+ AWS_DEFAULT_REGION : us-east-1 # Filebase ignores region, but required
541568 run : |
542- if ! command -v aws &> /dev/null; then
543- echo "Installing AWS CLI..."
544- curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o /tmp/awscliv2.zip
545- unzip -q /tmp/awscliv2.zip -d /tmp/aws-install
546- /tmp/aws-install/aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
547- rm -rf /tmp/awscliv2.zip /tmp/aws-install
548- fi
549- aws --version
569+ echo "AWS credentials exported as env vars"
570+ aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
571+ aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
572+ aws configure set default.region $AWS_DEFAULT_REGION
573+ aws configure list
550574
551575 - name : Upload results to Filebase
552576 if : github.event_name != 'workflow_dispatch' || inputs.upload-results
553577 shell : bash
554578 env :
555- AWS_ACCESS_KEY_ID : ${{ secrets.FILEBASE_ACCESS_KEY_ID }}
556- AWS_SECRET_ACCESS_KEY : ${{ secrets.FILEBASE_SECRET_ACCESS_KEY }}
557- AWS_DEFAULT_REGION : us-east-1
579+ AWS_EC2_METADATA_DISABLED : true
558580 run : |
559581 set -euo pipefail
560582
561583 RESULTS_FILE="/tmp/merged-results/daily-full-interop.yml"
562- BUCKET="test-plans- results"
584+ BUCKET="results"
563585 ENDPOINT="https://s3.filebase.com"
564586 DATE_STAMP=$(date -u +"%Y-%m-%d")
565587
@@ -575,14 +597,16 @@ jobs:
575597
576598 # Upload as date-stamped archive
577599 echo "-> Uploading history/${DATE_STAMP}.yaml..."
578- aws s3 cp "$RESULTS_FILE" "s3://${BUCKET}/history/${DATE_STAMP}.yaml" \
579- --endpoint-url "$ENDPOINT" \
600+ aws --endpoint "$ENDPOINT" \
601+ s3 cp "$RESULTS_FILE" \
602+ "s3://${BUCKET}/history/${DATE_STAMP}.yaml" \
580603 --content-type "application/x-yaml"
581604
582605 # Upload as latest results (overwrite)
583606 echo "-> Uploading results.yaml (latest)..."
584- aws s3 cp "$RESULTS_FILE" "s3://${BUCKET}/results.yaml" \
585- --endpoint-url "$ENDPOINT" \
607+ aws --endpoint "$ENDPOINT" \
608+ s3 cp "$RESULTS_FILE" \
609+ "s3://${BUCKET}/results.yaml" \
586610 --content-type "application/x-yaml"
587611
588612 echo "Upload complete."
0 commit comments