feat(dev): add devcontainer and task bootstrap for local, Codespaces, and Droid Computers - #717
Draft
ajalon1 wants to merge 6 commits into
Draft
feat(dev): add devcontainer and task bootstrap for local, Codespaces, and Droid Computers#717ajalon1 wants to merge 6 commits into
ajalon1 wants to merge 6 commits into
Conversation
|
👋 Thanks so much for contributing to the DataRobot community! As a quick heads-up on how our team handles reviews: if you're still iterating on Once everything is finalized and you're ready for feedback, just click "Ready for review" |
Add .devcontainer/devcontainer.json pinning Go 1.26 with Task installed via devcontainer feature, and a task bootstrap Taskfile task that verifies the Go version, installs tools, sets up hooks, and builds the CLI in one command. Remove superseded Cloud Template setup scripts and docs, replacing .factory/README.md with Droid Computers guidance. Update docs/development/setup.md and AGENTS.md to reference the new task and devcontainer option for local and cloud development. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Replace single post-create.sh with split lifecycle commands: updateContentCommand runs sync-go.sh (with sudo for non-root user) to upgrade Go to match go.mod, and postCreateCommand runs task bootstrap directly. Set waitFor to postCreateCommand so tools wait for setup to complete before connecting. Add devcontainer-lock.json for feature version pinning. Add docs/development/devcontainer.md covering local development (VS Code, Zed, CLI), GitHub Codespaces, Factory Droid Computers, lifecycle hooks, and troubleshooting. Update mkdocs.yml and development README navigation. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add ghcr.io/va-h/devcontainers-features/uv:1 to install uv (Astral's fast Python package manager) in the devcontainer. This enables 'task docs-serve' which runs 'uv sync' and 'uv run mkdocs serve' for local documentation preview without a separate Python setup. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add ghcr.io/devcontainers/features/docker-outside-of-docker:1 to provide Docker access inside the container via the host's Docker daemon. This enables 'task copyright' which runs 'docker run' to apply license headers via Apache Skywalking Eyes. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add ghcr.io/devcontainers/features/github-cli:1 to install the GitHub CLI (gh) in the devcontainer. This enables fork management, PR creation, and review workflows from inside the container without needing a separate local install. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
ajalon1
force-pushed
the
aj/get-droid-computers-working
branch
from
August 1, 2026 21:19
3db3738 to
f58fc34
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RATIONALE
Standardize the development environment across local machines, GitHub Codespaces, Droid Computers, and CI. A single devcontainer plus
task bootstrapgives every environment the same Go toolchain, lint/test tooling, and git hooks with zero manual setup.Droid Computers supersede Factory Cloud Templates, so the old
.factory/Cloud Template guide and setup scripts are removed in favor of the devcontainer workflow. Prior art: @tsdaemon set up a devcontainer for the app starter template.CHANGES
.devcontainer/devcontainer.json— Go 1.26 (bookworm) image with 4 features:go-task(Taskfile),uv(Python/uv for docs preview),docker-outside-of-docker(task copyright), andgithub-cli(gh). VS Code Go extension with format-on-save and organize-imports. Lifecycle hooks:updateContentCommandrunssync-go.sh,postCreateCommandrunstask bootstrap..devcontainer/sync-go.sh— upgrades the image's Go toolchain to the exact version required bygo.modwhen they differ.Taskfile.yaml— newtask bootstrap: verifies Go version, installs tools, wires up lefthook git hooks, and builds./dist/dr.docs/development/devcontainer.md;docs/development/setup.mdand README updated; mkdocs nav entry added..factory/cleanup — removed Cloud Template guide and setup scripts superseded by Droid Computers; README rewritten accordingly.TESTING
@devcontainers/cli(not a bare-repo worktree — see known limitations)task bootstrapruns and./dist/dr self versionworksKnown limitations (observed while testing from a bare-repo worktree in Zed):
fatal: not a git repositoryinside the container: the worktree's.gitfile points to a host path that is not mounted into the container. Use a normal clone../dist/dr: cannot execute binary file: Exec format error:dist/is bind-mounted and shared with the host, so a macOS-built binary won't run in the Linux container (and vice versa). Rebuild withtask buildin whichever environment you're using.TODO
PR Automation
Comment-Commands: Trigger CI by commenting on the PR:
/trigger-smoke-testor/trigger-test-smoke- Run smoke tests/trigger-install-testor/trigger-test-install- Run installation testsLabels: Apply labels to trigger workflows:
run-smoke-testsorgo- Run smoke tests on demand (only works for non-forked PRs)Important
For Forked PRs: The
run-smoke-testslabel won't work. A required Smoke Tests check will block merge until a maintainer acts:/approve-smoke-teststo run smoke tests (results will set the check)/skip-smoke-teststo bypass the check without running testsPlease comment requesting a maintainer review if you need smoke tests to run.