Skip to content

PoC: Local onboarding flow for circleci init#1201

Open
Fab10-CircleCi wants to merge 1 commit intomainfrom
feat/local-init-onboarding
Open

PoC: Local onboarding flow for circleci init#1201
Fab10-CircleCi wants to merge 1 commit intomainfrom
feat/local-init-onboarding

Conversation

@Fab10-CircleCi
Copy link
Copy Markdown

Summary

  • When run without authentication, circleci init now scans the repo, detects the tech stack, runs tests locally in Docker, generates .circleci/config.yml, and suggests CI optimizations
  • Auto-detects auth state: no token = local-only flow, with token = local flow then offers remote project creation
  • Uses chunk-cli/envbuilder for stack detection and Dockerfile generation (builds on PR Import envbuilder #1198)

What it does (Phase 1 steps 2-8)

  1. Scan & detect — language, dependencies, test commands, CircleCI convenience image
  2. Build & test in Docker — hidden behind timed spinners, only shows output on failure
  3. Generate config — valid CircleCI 2.1 .circleci/config.yml (only if tests pass)
  4. Suggest optimizations — caching, linting, parallelism based on detected stack

New flags

  • --local — force local-only mode even when authenticated
  • --skip-docker — skip Docker build/test steps
  • --skip-config — skip config generation
  • --verbose — stream full Docker output for troubleshooting
  • --dir — scan a different directory

Files changed

  • cmd/onboard.gonew — core local onboarding logic
  • cmd/init.gomodified — wires local flow as pre-step, restructures auth gating
  • go.mod / go.summodified — adds chunk-cli dependency

Test plan

  • circleci init --local --skip-docker --dir <project> — detects stack, generates config
  • circleci init --local --dir <project> — full flow with Docker build + test
  • circleci init --local --verbose --dir <project> — streams Docker output
  • Test with Go, Python, JS/TS projects
  • Test with unknown stack (empty dir)
  • Verify config not generated when Docker build/tests fail

🤖 Generated with Claude Code

When run without authentication, `circleci init` now scans the
repository, detects the tech stack, runs tests locally in Docker,
generates a .circleci/config.yml, and suggests CI optimizations.

- Add cmd/onboard.go with the full local onboarding flow (steps 2-8)
- Modify cmd/init.go to auto-detect auth state and gate local vs remote flow
- Use envbuilder from chunk-cli for stack detection and Dockerfile generation
- Hide Docker output behind timed spinners, show tail on failure
- Generate valid CircleCI 2.1 config from detected environment
- Add --verbose flag to stream Docker output for troubleshooting
- Only generate config when tests pass (or Docker is skipped)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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