Skip to content

Conversation

@bussyjd
Copy link
Collaborator

@bussyjd bussyjd commented Oct 30, 2025

Summary

Optimizes Docker image builds and automates tracking of upstream a16z/helios releases.

Changes

  • Multi-stage Dockerfile: Reduces image size by ~9MB (161MB → 152MB) and layer count (17 → 13)
  • Version-specific builds: Docker images now contain the exact helios version matching the tag
  • Automated release tracking: Checks for new upstream releases every 6 hours
  • Dual registry publishing: Pushes to both Docker Hub (obolnetwork/helios) and GHCR (ghcr.io/obolnetwork/helios)
  • Updated dependencies: All GitHub Actions updated to latest versions (checkout@v5, build-push-action@v6, etc.)

How it works

  1. Every 6 hours, checks a16z/helios for new releases
  2. If new release found, creates matching git tag in ObolNetwork/helios
  3. Builds multi-platform Docker images (amd64/arm64) with specific helios version
  4. Publishes with version tag (e.g., 0.10.1) and latest

@bussyjd bussyjd requested a review from OisinKyne October 30, 2025 15:58
@bussyjd bussyjd changed the title Optimize Docker workflow with upstream release tracking Optimizes Docker image builds and automates tracking of upstream a16z/helios releases. Oct 30, 2025
Copy link

@OisinKyne OisinKyne left a comment

Choose a reason for hiding this comment

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

Looks like it works to me. We could plausibly delete basically everything in this repo bar these two files if i understand how they work correctly.

# Set a default entrypoint
ENTRYPOINT ["helios"]
ENTRYPOINT ["helios"]
CMD ["--help"]

Choose a reason for hiding this comment

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

won't this CMD prevent the image from starting normally unless you know to override it with an empty cmd?

Comment on lines +11 to +27
REPO="a16z/helios" && \
if [ -z "$HELIOS_VERSION" ] || [ "$HELIOS_VERSION" = "latest" ]; then \
TAG=$(curl -s https://api.github.com/repos/$REPO/releases/latest | grep -o '"tag_name": "[^"]*' | grep -o '[^"]*$'); \
else \
TAG="$HELIOS_VERSION"; \
fi && \
PLATFORM="linux" && \
case "$TARGETARCH" in \
amd64) ARCHITECTURE="amd64" ;; \
arm64) ARCHITECTURE="arm64" ;; \
arm) ARCHITECTURE="armv7" ;; \
*) ARCHITECTURE="amd64" ;; \
esac && \
TARBALL_URL="https://github.com/$REPO/releases/download/${TAG}/helios_${PLATFORM}_${ARCHITECTURE}.tar.gz" && \
echo "Downloading helios ${TAG} for ${PLATFORM}_${ARCHITECTURE}" && \
mkdir -p /helios && \
curl -L "$TARBALL_URL" | tar -xzC /helios

Choose a reason for hiding this comment

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

If we do this, do we need to keep the rest of the repo at all? like this repo could basically just be this dockerfile and some github actions?

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.

3 participants