Skip to content

ci: warm dataset cache directly and decouple Docker smoke test from test suites - #1275

Open
ale18V wants to merge 4 commits into
ci/selective-pr-checksfrom
ci/decouple-datasets-and-docker
Open

ale18V wants to merge 4 commits into
ci/selective-pr-checksfrom
ci/decouple-datasets-and-docker

Conversation

@ale18V

@ale18V ale18V commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

What & why

Currently in verify.yml:

  1. download-datasets restores datasets/ from actions/cache@v5, and then re-zips and re-uploads the entire folder to actions/upload-artifact@v7 on every single CI run so test jobs can pull it with actions/download-artifact.
  2. build waits on download-datasets (needs: [download-datasets, static-analysis]) even though _build.yml never downloads or uses datasets/.
  3. build-server-docker (~2m11s) is bundled inside _build.yml alongside build-topological (~1m06s), forcing all 14 test jobs in _test.yml to sit idle for an extra ~1 minute waiting for the Docker smoke test even though all-builds is already ready and no test job uses the Docker image.

Changes

  • Warm-only dataset cache (.github/actions/download-datasets/action.yml & pull-dataset-artifacts/action.yml):
    • Use lookup-only: true on actions/cache@v5 in download-datasets so cache hits complete in seconds without downloading or re-uploading a duplicate workflow artifact.
    • Restore datasets/ directly from actions/cache/restore@v5 (with fail-on-cache-miss: true) in pull-dataset-artifacts.
  • Remove unnecessary sequential dependencies (.github/workflows/verify.yml & _build.yml):
    • Move download-datasets from build.needs to test.needs.
    • Move build-server-docker out of _build.yml into verify.yml (needs: [static-analysis]) so it runs in parallel with build and test instead of blocking test startup.

@ale18V
ale18V requested a review from JulienVig October 29, 2026 12:49

@JulienVig JulienVig left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea to reduce unecessary dependencies! I think we can push this further for the Docker smoke test. However it looks like some dependencies are missing for it in ci-paths.yml .

Looking at the past CI runs it looks like the speedup is pretty unsignificant compared the timing of test/server. It doesn't cost anything to parallelize more but maybe we should focus our efforts on splitting test/server in several parallel jobs?

steps:
- uses: actions/checkout@v7
- uses: docker/setup-buildx-action@v4
- run: docker build .

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this duplicate build step needed?

Comment thread .github/ci-paths.yml
Comment on lines +34 to +37
server_docker:
- "Dockerfile"
- ".dockerignore"
- "server/**"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These dependencies look too narrow no? the Dockerfile depends on discojs, discojs-node and isomorphic-webrtc, you could add *discojs-node as dependency.

discojs_node: ${{ needs.affected.outputs.discojs_node == 'true' }}
discojs_web: ${{ needs.affected.outputs.discojs_web == 'true' }}
server: ${{ needs.affected.outputs.server == 'true' }}
server_docker: ${{ needs.affected.outputs.server_docker == 'true' }}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

putting the docker smoke test here means that we wait for static analysis, all builds, dataset downloads before running the test. What about putting it in a separate test that only needs affected?

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants