Skip to content

feat: pre-build tessellation base image to speed up E2E CI (~40% faster)#105

Closed
ottobot-ai wants to merge 1 commit into
mainfrom
feat/tessellation-base-image
Closed

feat: pre-build tessellation base image to speed up E2E CI (~40% faster)#105
ottobot-ai wants to merge 1 commit into
mainfrom
feat/tessellation-base-image

Conversation

@ottobot-ai

Copy link
Copy Markdown
Collaborator

Summary

Pre-builds Tessellation GL0/GL1 JARs into a Docker image to reduce E2E CI time from ~16 min to ~8-10 min (~40% improvement).

Implements spec from PR #101. TDD tests from PR #102.

Changes

New: .github/workflows/build-tessellation-base.yml

Builds tessellation dagL0/dagL1 assembly JARs (with patches), publishes ghcr.io/ottobot-ai/tessellation-base:v4.0.0-rc.2 + :latest. Triggers on push to build.sbt, project/**, e2e-test/patches/**, tessellation-base.Dockerfile. Also supports manual workflow_dispatch.

New: tessellation-base.Dockerfile

Minimal alpine image containing only GL0/GL1 assembly JARs. ml0/cl1/dl1 intentionally excluded — they change every PR and are built from source.

Updated: .github/workflows/e2e.yml

Pulls pre-built base image, extracts JARs via docker create + docker cp to tessellation target dirs, then runs just up with SKIP_ASSEMBLY=true PUBLISH=false. Tessellation source still cloned (needed for metagraph build context). Metagraph JARs still built from source.

New: modules/ci/

43 TDD tests from PR #102 (test/tessellation-base-image-tdd). File-content tests (workflow structure, Dockerfile checks) now PASS. Runtime tests (CI timing, GHCR image availability) remain red until image is first published.

Acceptance Criteria

  • AC1: build workflow publishes to ghcr.io/ottobot-ai/tessellation-base:v4.0.0-rc.2
  • AC2: Dockerfile creates minimal JAR-only image (alpine)
  • AC3: E2E CI ≤10 min (needs first image build + run to measure)
  • AC4: SKIP_ASSEMBLY=true + PUBLISH=false in e2e.yml
  • AC5: JAR extraction via docker create + docker cp
  • AC6: Tessellation build skipped in logs (needs first run)
  • AC7: Metagraph still built from source (--metagraph flag unchanged)
  • AC8: Image publicly accessible (needs first build)
  • AC9: Build workflow triggers on version-related file changes

Action Required After Merge

Trigger build-tessellation-base.yml manually (workflow_dispatch) to publish the initial image to GHCR. All subsequent E2E runs will then use the pre-built image automatically.

Trello

📋 Pre-build tessellation/ottochain Docker images → Code Review

Related PRs

Implements spec from PR #101. Reduces E2E CI time from ~16 min to ~8-10 min
by pre-building tessellation GL0/GL1 JARs and using SKIP_ASSEMBLY=true.

Changes:
- New .github/workflows/build-tessellation-base.yml
  Builds tessellation assembly JARs and publishes to
  ghcr.io/ottobot-ai/tessellation-base:v{VERSION}.
  Triggers on push to paths: build.sbt, project/**, patches/, Dockerfile.
  Also supports manual dispatch.

- New tessellation-base.Dockerfile
  Minimal alpine image containing only GL0/GL1 assembly JARs.
  ML0/CL1/DL1 (OttoChain) intentionally excluded — built per-PR from source.

- Updated .github/workflows/e2e.yml
  Pulls pre-built base image, extracts JARs via docker create+cp to
  tessellation target directories, then runs just up with
  SKIP_ASSEMBLY=true PUBLISH=false.

- Added modules/ci with TDD tests (43 tests from PR #102).
  File-content tests now pass (workflow/Dockerfile structure verified).
  Runtime tests (CI timing, actual image pull) remain in TDD red phase
  until image is built and pushed to GHCR.

Trello: https://trello.com/c/69967833a7f71628ede9e523
Spec: PR #101
Tests: PR #102 (test/tessellation-base-image-tdd)
@ottobot-ai

Copy link
Copy Markdown
Collaborator Author

Moving to feature branch feat/ci-base-image on ottobot-ai/ottochain for agent iteration. Will submit rollup PR to upstream when ready.

@ottobot-ai ottobot-ai closed this Feb 26, 2026
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.

1 participant