-
Notifications
You must be signed in to change notification settings - Fork 100
feat: Add source variant builds to server.yml workflow #1536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This change adds source variant builds alongside the existing binary builds for all server images (python, java, golang). Source builds support custom tools via dynamic module loading, while binary builds remain optimized for production use. Changes: - Add source target to build matrix (12 jobs total: 3 variants × 2 targets × 2 architectures) - Update merge-manifests job to handle source variants - Update consolidate-build-info to track target information - Update PR description to document binary vs source targets This addresses issue #1531 by providing source mode images that support custom tools, while maintaining binary mode images for production deployments. Closes #1531 Co-authored-by: openhands <openhands@all-hands.dev>
|
Looks like there are a few issues preventing this PR from being merged!
If you'd like me to help, just leave a comment, like Feel free to include any additional details that might help me get this PR into a better state. You can manage your notification settings |
|
@OpenHands please fix the failing actions on PR #1536 at branch |
|
I'm on it! xingyaoww can track my progress at all-hands.dev |
The merge-manifests job was failing because it expected tags in the format
`{sha}-{variant}-source-{arch}` (e.g., 050f42f-golang-source-amd64), but
build.py was generating tags with the target suffix after the arch suffix
(e.g., 050f42f-golang-amd64-source).
Changes:
- Remove -source suffix from CUSTOM_TAGS in workflow since build.py handles it
- Update build.py to place target suffix before arch suffix in all_tags
- Update consolidate-build-info to construct KEY with target suffix
Co-authored-by: openhands <openhands@all-hands.dev>
SummaryI fixed the failing "Agent Server" GitHub Actions workflow on PR #1536. The issue was in the "Merge Multi-Arch Manifests" jobs for Root CauseThe merge-manifests job expected image tags in the format This happened because:
Changes Made
VerificationTested the fix locally:
The changes have been pushed to the |
|
[Automatic Post]: I have assigned @rbren as a reviewer based on git blame information. Thanks in advance for the help! |
Summary
This PR adds source variant builds alongside the existing binary builds for all server images (python, java, golang). This addresses issue #1531 where custom tools do not work with binary agent server builds.
Problem
When the agent server is bundled into a binary executable using PyInstaller (the
binarytarget in the Dockerfile), custom tools cannot be dynamically imported at runtime because:Solution
Add
sourcevariant builds that use the Python source with a full interpreter, which supports custom tools via dynamic module loading (importlib.import_module()).Changes
Image Tags
After this change, users can choose between:
ghcr.io/openhands/agent-server:<sha>-python- Binary build (production)ghcr.io/openhands/agent-server:<sha>-python-source- Source build (supports custom tools)Closes #1531
Checklist
@xingyaoww can click here to continue refining the PR
Agent Server images for this PR
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
golang:1.21-bookwormeclipse-temurin:17-jdknikolaik/python-nodejs:python3.12-nodejs22nikolaik/python-nodejs:python3.12-nodejs22eclipse-temurin:17-jdkgolang:1.21-bookwormPull (multi-arch manifest)
Run
All tags pushed for this build
About Multi-Architecture Support
2280f38-python) is a multi-arch manifest supporting both amd64 and arm642280f38-python-amd64) are also available if neededBinary vs Source Targets