Skip to content

Add Dev Containers for local IDE and Codespaces - #2539

Draft
dadoonet wants to merge 7 commits into
mainfrom
cursor/add-devcontainers-ab5d
Draft

Add Dev Containers for local IDE and Codespaces#2539
dadoonet wants to merge 7 commits into
mainfrom
cursor/add-devcontainers-ab5d

Conversation

@dadoonet

@dadoonet dadoonet commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a shared Dev Container configuration so contributors can develop FSCrawler in VS Code, Cursor, or GitHub Codespaces with JDK 25, Maven, Docker-outside-of-Docker, and Elasticsearch via Elastic start-local (ES-only by default).

Status: Implementation complete (Tasks 1–4).

Changes

.devcontainer/

  • devcontainer.json — Microsoft Java 25 image, Maven, Docker-outside-of-Docker, port forwards for Elasticsearch (9200) and optional Kibana (5601), Java/Maven VS Code extensions, postCreateCommand.
  • post-create.sh — Ensures IGNORE_ME/ exists; skips start-local if Elasticsearch is already up; otherwise bootstraps or reuses start-local under IGNORE_ME/elastic-start-local/ with password changeme and version from pom.xml (--esonly); warms Maven with dependency:go-offline; prints IT command using ES_LOCAL_API_KEY.
  • extract-es-version.sh — Reads <elasticsearch.version> from root pom.xml (xmllint or sed fallback).

Documentation

  • docs/source/dev/build.md — Codespaces badge, Dev Containers / Codespaces section (prerequisites, post-create behavior, build/IT commands, optional Kibana).

Design & plan

  • Spec: docs/superpowers/specs/2026-09-04-devcontainers-design.md
  • Plan: docs/superpowers/plans/2026-09-04-devcontainers.md

Verification (automated)

All checks passed on branch cursor/add-devcontainers-ab5d:

test -f .devcontainer/devcontainer.json
test -x .devcontainer/post-create.sh
test -x .devcontainer/extract-es-version.sh
./.devcontainer/extract-es-version.sh | grep -E '^[0-9]+\.[0-9]+\.[0-9]+'   # → 9.5.2
python3 -c 'import json; json.load(open(".devcontainer/devcontainer.json"))'
bash -n .devcontainer/post-create.sh

Test plan

  • extract-es-version.sh prints <elasticsearch.version> from root pom.xml (9.5.2)
  • Validate devcontainer.json JSON
  • bash -n on post-create.sh
  • Doc checks for Codespaces badge + Dev Containers section
  • Smoke (manual): Reopen in Container / Codespaces — post-create starts ES on :9200 and warms Maven deps

Spec coverage

Requirement Done
Shared local + Codespaces config
JDK 25 + Maven + DooD
start-local ES-only under IGNORE_ME/
ES version from pom.xml
Maven dependency:go-offline
Fail-fast if Docker unavailable
Skip start-local if ES already up
Docs + Codespaces badge
Optional Kibana documented (not auto-started)
No versioned ES compose in .devcontainer/
Open in Web Open in Cursor 

cursoragent and others added 7 commits September 4, 2026 15:49
- Capture approved architecture: JDK 25, DooD, start-local ES-only
- Document Codespaces + local Dev Containers workflow and docs scope

Co-authored-by: David Pilato <david@pilato.fr>
- Task breakdown for extract script, post-create, JSON, and docs
- Include verification steps and spec coverage map

Co-authored-by: David Pilato <david@pilato.fr>
…ocal

- Read root pom.xml property for Dev Container post-create
- Support xmllint with sed fallback

Co-authored-by: David Pilato <david@pilato.fr>
- Start ES-only via Elastic start-local under IGNORE_ME/
- Fail fast when Docker is unavailable; skip if ES already up
- Run mvn dependency:go-offline and print IT hints

Co-authored-by: David Pilato <david@pilato.fr>
- Use microsoft/devcontainers java:25 with Maven and DooD
- Forward ES 9200 and optional Kibana 5601
- Wire postCreateCommand to start-local + Maven warm-up

Co-authored-by: David Pilato <david@pilato.fr>
- Add Codespaces badge to build guide
- Describe post-create, start-local ES-only, IT flags, optional Kibana

Co-authored-by: David Pilato <david@pilato.fr>
- Skip start-local when ES is already up, then continue Maven warm-up
- Exit non-zero on Docker/start-local failure instead of masking it

Co-authored-by: David Pilato <david@pilato.fr>
@sonarqubecloud

sonarqubecloud Bot commented Sep 4, 2026

Copy link
Copy Markdown

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.

2 participants