Skip to content

docs: add tessellation base image spec for CI optimization#101

Closed
ottobot-ai wants to merge 1 commit into
scasplte2:mainfrom
ottobot-ai:docs/tessellation-base-image-spec
Closed

docs: add tessellation base image spec for CI optimization#101
ottobot-ai wants to merge 1 commit into
scasplte2:mainfrom
ottobot-ai:docs/tessellation-base-image-spec

Conversation

@ottobot-ai

Copy link
Copy Markdown
Collaborator

Summary

Specifies pre-building tessellation JARs into a Docker image to reduce E2E CI time from ~16 min to ~10 min (~40% improvement).

Key Decisions

Decision Choice Rationale
Pre-built scope Tessellation JARs only (gl0/gl1/keytool/wallet) Metagraph JARs change every PR
Image visibility Public Tessellation is Apache 2.0; simplifies e2e.yml
Trigger mechanism Manual dispatch + auto on patch changes Version bumps are infrequent
Phase 2 sbt cache Separate card Ship Phase 1, measure, then assess

Architecture

  1. New build-tessellation-base.yml workflow builds tessellation JARs and publishes to GHCR
  2. New tessellation-base.Dockerfile creates minimal JAR-only image
  3. Updated e2e.yml extracts JARs via docker create + docker cp pattern with SKIP_ASSEMBLY=true

Acceptance Criteria

  • AC1: New build workflow publishes ghcr.io/ottobot-ai/tessellation-base:v4.0.0-rc.2
  • AC2: Dockerfile creates minimal JAR-only image
  • AC3: E2E CI completes in ≤10 minutes (5 consecutive runs)
  • AC4: e2e.yml uses SKIP_ASSEMBLY=true + PUBLISH=false
  • AC5: JAR extraction via docker create + docker cp
  • AC6: Tessellation build skipped (verified in CI logs)
  • AC7: Metagraph JARs still built from source
  • AC8: Pre-built image publicly accessible
  • AC9: Build workflow triggers on patch file changes

Trello Card

Pre-build tessellation/ottochain Docker images

Related

  • @research feasibility analysis: HIGH confidence
  • Real CI data: 5 runs at 15-17 min → target ~8-10 min

Specifies pre-building tessellation JARs into a Docker image to reduce
E2E CI time from ~16 min to ~10 min (~40% improvement).

Key decisions:
- Only tessellation JARs pre-built (gl0/gl1/keytool/wallet)
- Metagraph JARs (ml0/cl1/dl1) still built from source every PR
- SKIP_ASSEMBLY=true + PUBLISH=false in e2e.yml
- JAR-only scratch image, extracted via docker create + docker cp
- Public image (no auth required for pulls)
- Manual dispatch + auto-rebuild on patch changes

Phase 2 (sbt incremental cache) deferred to separate card.

Resolves: Pre-build tessellation/ottochain Docker images (Trello #69967833)
@ottobot-ai ottobot-ai requested a review from scasplte2 February 25, 2026 00:18
ottobot-ai added a commit that referenced this pull request Feb 25, 2026
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