Compare commits

..

7 Commits

Author SHA1 Message Date
Chris Farhood 1b0fd73d9b Merge pull request #55 from farhoodliquor/fix/init-home-before-git-config
fix(init-repo): create $HOME before git config on fresh volumes
2026-03-18 23:28:50 -04:00
Chris Farhood ed0ca39976 Merge pull request #57 from farhoodliquor/fix/update-cpfarhood-to-farhoodliquor
fix: replace stale cpfarhood references with farhoodliquor
2026-03-18 23:25:48 -04:00
Nick "Goose" Bradshaw 55c2afaeb1 fix: replace all stale cpfarhood references with farhoodliquor
After repo transfer from cpfarhood to farhoodliquor org, update all
references across docs, CI workflows, Makefile, Helm chart configs,
and memory files.

Closes #56

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 02:13:40 +00:00
DevContainer User d3365a71f6 feat: bump dependencies and add kubectl, k9s, Flux CLI
Update pinned versions: Node.js 22→24 LTS, Helm 3.17→4.1, Go 1.23→1.26.
Add kubectl, k9s, and Flux CLI to the container image.
Update MCP sidecars: kubernetes v0.0.59, flux-operator v0.45.0,
mcp-helm v1.3.3, homeassistant 7.1.0.
Bump chart version to 2.7.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 15:00:54 +00:00
DevContainer User 70e74ab2d2 fix(init-repo): create $HOME before git config on fresh volumes
git config --global writes to $HOME/.gitconfig, but on a fresh PVC
$HOME (/config/userdata) doesn't exist yet. This causes the script to
fail with "could not lock config file" and exit due to set -e, leaving
the container in a crash loop with a black screen.

Move the mkdir -p $HOME + chown to the top of the script so it runs
before any git operations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:47:30 +00:00
github-actions[bot] 673554b393 chore(release): 2.6.0 [skip ci] 2026-03-11 12:05:49 +00:00
DevContainer User 609752e7dc fix: use Eclipse snapshots API for jdtls download
The jdtls GitHub repo has no release assets and the Eclipse milestones
directory listing is JS-rendered. Use snapshots/latest.txt which provides
a reliable tarball filename for automated downloads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:05:21 +00:00
14 changed files with 62 additions and 43 deletions
+3 -3
View File
@@ -4,7 +4,7 @@
### 1️⃣ For Releases → **Unified Release**
Use this for all version releases:
1. Go to [Actions → Unified Release](https://github.com/cpfarhood/devcontainer/actions/workflows/release-unified.yaml)
1. Go to [Actions → Unified Release](https://github.com/farhoodliquor/devcontainer/actions/workflows/release-unified.yaml)
2. Click "Run workflow"
3. Either:
- Enter specific version (e.g., `0.2.1`), OR
@@ -15,12 +15,12 @@ Use this for all version releases:
- ✅ Updates chart version
- ✅ Creates git tag
- ✅ Builds Docker image with all proper tags
- ✅ Publishes Helm chart to GitHub Pages (`https://cpfarhood.github.io/devcontainer`)
- ✅ Publishes Helm chart to GitHub Pages (`https://farhoodliquor.github.io/devcontainer`)
- ✅ Creates GitHub Release with changelog
### 2️⃣ For Quick Fixes → **Quick Fix Build**
Use this for emergency fixes without version changes:
1. Go to [Actions → Quick Fix Build](https://github.com/cpfarhood/devcontainer/actions/workflows/quick-fix.yaml)
1. Go to [Actions → Quick Fix Build](https://github.com/farhoodliquor/devcontainer/actions/workflows/quick-fix.yaml)
2. Click "Run workflow"
3. Enter tag (default: `latest`)
4. Click "Run workflow"
+4 -4
View File
@@ -130,7 +130,7 @@ jobs:
<body>
<h1>Dev Container Helm Chart Repository</h1>
<p>Add this repository to Helm:</p>
<pre>helm repo add devcontainer https://cpfarhood.github.io/devcontainer</pre>
<pre>helm repo add devcontainer https://farhoodliquor.github.io/devcontainer</pre>
<p>Install the chart:</p>
<pre>helm install mydev devcontainer/devcontainer --set name=mydev</pre>
</body>
@@ -144,9 +144,9 @@ jobs:
# Copy chart package and rebuild index
cp "$CHART_TGZ" "$PAGES_DIR/"
if [ -f "$PAGES_DIR/index.yaml" ]; then
helm repo index "$PAGES_DIR" --url https://cpfarhood.github.io/devcontainer --merge "$PAGES_DIR/index.yaml"
helm repo index "$PAGES_DIR" --url https://farhoodliquor.github.io/devcontainer --merge "$PAGES_DIR/index.yaml"
else
helm repo index "$PAGES_DIR" --url https://cpfarhood.github.io/devcontainer
helm repo index "$PAGES_DIR" --url https://farhoodliquor.github.io/devcontainer
fi
# Commit and push
@@ -181,7 +181,7 @@ jobs:
### Helm Chart
\`\`\`bash
helm repo add devcontainer https://cpfarhood.github.io/devcontainer
helm repo add devcontainer https://farhoodliquor.github.io/devcontainer
helm repo update
helm install mydev devcontainer/devcontainer --version ${VERSION} --set name=mydev
\`\`\`
+1 -1
View File
@@ -95,4 +95,4 @@ Use this template for future releases:
- Vulnerability fixes
```
[Unreleased]: https://github.com/cpfarhood/devcontainer/compare/v1.0.0...HEAD
[Unreleased]: https://github.com/farhoodliquor/devcontainer/compare/v1.0.0...HEAD
+5 -5
View File
@@ -21,7 +21,7 @@ The stack is primarily **Bash scripts + YAML** — there is no Node.js package,
```bash
make build # Build Docker image
make build REGISTRY=ghcr.io/myuser IMAGE_TAG=v1.0 # Custom registry/tag
docker build -t ghcr.io/cpfarhood/devcontainer:latest . # Direct build
docker build -t ghcr.io/farhoodliquor/devcontainer:latest . # Direct build
```
### Running Locally
@@ -70,7 +70,7 @@ Container start
| File | Purpose |
|------|---------|
| `Dockerfile` | Image definition — installs Chrome, VSCode, Helm, gh CLI, kubeseal, Claude Code, OpenCode, Crush, LSP servers (pyright, typescript-language-server, gopls, clangd, rust-analyzer, lua-language-server, jdtls, kotlin-language-server, intelephense); creates non-root user (UID 1000) |
| `Dockerfile` | Image definition — installs Chrome, VSCode, Helm, gh CLI, kubectl, k9s, Flux CLI, kubeseal, Claude Code, OpenCode, Crush, LSP servers (pyright, typescript-language-server, gopls, clangd, rust-analyzer, lua-language-server, jdtls, kotlin-language-server, intelephense); creates non-root user (UID 1000) |
| `scripts/init-repo.sh` | Configures git credentials, clones GitHub repo(s), generates multi-root workspace file |
| `scripts/startapp.sh` | Calls init-repo.sh then opens VSCode in the workspace |
| `chart/` | Helm chart for Kubernetes deployment |
@@ -197,11 +197,11 @@ helm install my-devcontainer ./chart -f custom-values.yaml
### CI/CD
- **`build-and-push.yaml`** — Builds and pushes to GHCR on every push to `main`, version tags (`v*`), and PRs. Tags: `latest` (main), semver, branch name, commit SHA.
- **`release-unified.yaml`** — Manual release workflow: bumps chart version, builds Docker image, publishes Helm chart to GitHub Pages (`https://cpfarhood.github.io/devcontainer`), and creates GitHub Release.
- **`release-unified.yaml`** — Manual release workflow: bumps chart version, builds Docker image, publishes Helm chart to GitHub Pages (`https://farhoodliquor.github.io/devcontainer`), and creates GitHub Release.
- **`dependabot.yml`** — Weekly updates for GitHub Actions and Docker base image.
Image registry: `ghcr.io/cpfarhood/devcontainer`
Helm repo: `https://cpfarhood.github.io/devcontainer`
Image registry: `ghcr.io/farhoodliquor/devcontainer`
Helm repo: `https://farhoodliquor.github.io/devcontainer`
## Kubernetes Notes
+3 -3
View File
@@ -15,7 +15,7 @@ This guide provides step-by-step instructions for deploying the Antigravity Dev
### 1. Clone the Repository
```bash
git clone https://github.com/cpfarhood/devcontainer.git
git clone https://github.com/farhoodliquor/devcontainer.git
cd devcontainer
```
@@ -433,5 +433,5 @@ kubectl run backup --image=busybox --restart=Never --rm -i --tty \
## Support
For issues or questions:
- GitHub Issues: https://github.com/cpfarhood/devcontainer/issues
- Documentation: https://github.com/cpfarhood/devcontainer
- GitHub Issues: https://github.com/farhoodliquor/devcontainer/issues
- Documentation: https://github.com/farhoodliquor/devcontainer
+22 -6
View File
@@ -60,7 +60,7 @@ exec /usr/bin/google-chrome-stable \\\n\
chmod +x /usr/local/bin/google-chrome
# Install Node.js LTS via NodeSource
ARG NODE_MAJOR=22
ARG NODE_MAJOR=24
RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/* && \
@@ -91,7 +91,7 @@ RUN CRUSH_VERSION=$(curl -sL https://api.github.com/repos/charmbracelet/crush/re
rm -rf /tmp/crush*
# Install Helm CLI for Kubernetes chart management
ARG HELM_VERSION=3.17.1
ARG HELM_VERSION=4.1.3
RUN curl -fsSL "https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz" | \
tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm && \
chmod +x /usr/local/bin/helm
@@ -117,13 +117,30 @@ RUN KUBESEAL_VERSION=$(curl -sL https://api.github.com/repos/bitnami-labs/sealed
tar -xz -C /usr/local/bin kubeseal && \
chmod +x /usr/local/bin/kubeseal
# Install kubectl CLI for Kubernetes cluster management
RUN KUBECTL_VERSION=$(curl -sL https://dl.k8s.io/release/stable.txt) && \
curl -fsSL "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" -o /usr/local/bin/kubectl && \
chmod +x /usr/local/bin/kubectl
# Install k9s terminal UI for Kubernetes
RUN K9S_VERSION=$(curl -sL https://api.github.com/repos/derailed/k9s/releases/latest | jq -r '.tag_name') && \
curl -fsSL "https://github.com/derailed/k9s/releases/download/${K9S_VERSION}/k9s_Linux_amd64.tar.gz" | \
tar -xz -C /usr/local/bin k9s && \
chmod +x /usr/local/bin/k9s
# Install Flux CLI for GitOps operations
RUN FLUX_VERSION=$(curl -sL https://api.github.com/repos/fluxcd/flux2/releases/latest | jq -r '.tag_name' | sed 's/^v//') && \
curl -fsSL "https://github.com/fluxcd/flux2/releases/download/v${FLUX_VERSION}/flux_${FLUX_VERSION}_linux_amd64.tar.gz" | \
tar -xz -C /usr/local/bin flux && \
chmod +x /usr/local/bin/flux
# ── LSP servers for Claude Code language intelligence ──
# npm-based LSP servers: Python (pyright), TypeScript/JavaScript, PHP
RUN npm install -g pyright typescript-language-server typescript intelephense
# Install Go runtime and gopls LSP server
ARG GO_VERSION=1.23.6
ARG GO_VERSION=1.26.1
RUN curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar -xz -C /usr/local && \
/usr/local/go/bin/go install golang.org/x/tools/gopls@latest && \
mv /root/go/bin/gopls /usr/local/bin/gopls && \
@@ -161,10 +178,9 @@ RUN KLS_VERSION=$(curl -sL https://api.github.com/repos/fwcd/kotlin-language-ser
rm /tmp/kls.zip
# Install jdtls (Java LSP) — Eclipse JDT Language Server
RUN JDTLS_VERSION=$(curl -sL https://api.github.com/repos/eclipse-jdtls/eclipse.jdt.ls/releases/latest | jq -r '.tag_name' | sed 's/^v//') && \
JDTLS_URL=$(curl -sL https://api.github.com/repos/eclipse-jdtls/eclipse.jdt.ls/releases/latest | jq -r '.assets[] | select(.name | endswith(".tar.gz")) | .browser_download_url' | head -1) && \
RUN JDTLS_TARBALL=$(curl -sL https://download.eclipse.org/jdtls/snapshots/latest.txt) && \
mkdir -p /opt/jdtls && \
curl -fsSL "$JDTLS_URL" | tar -xz -C /opt/jdtls && \
curl -fsSL "https://download.eclipse.org/jdtls/snapshots/${JDTLS_TARBALL}" | tar -xz -C /opt/jdtls && \
printf '#!/bin/bash\nexec java -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -jar /opt/jdtls/plugins/org.eclipse.equinox.launcher_*.jar -configuration /opt/jdtls/config_linux "$@"\n' > /usr/local/bin/jdtls && \
chmod +x /usr/local/bin/jdtls
+2 -2
View File
@@ -1,7 +1,7 @@
.PHONY: build push run stop clean help
# Variables
REGISTRY ?= ghcr.io/cpfarhood
REGISTRY ?= ghcr.io/farhoodliquor
IMAGE_NAME ?= devcontainer
IMAGE_TAG ?= latest
FULL_IMAGE = $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)
@@ -99,7 +99,7 @@ help:
@echo " helm-port-forward - Port forward to localhost"
@echo ""
@echo "Variables:"
@echo " REGISTRY - Docker registry (default: ghcr.io/cpfarhood)"
@echo " REGISTRY - Docker registry (default: ghcr.io/farhoodliquor)"
@echo " IMAGE_NAME - Image name (default: devcontainer)"
@echo " IMAGE_TAG - Image tag (default: latest)"
@echo " RELEASE_NAME - Helm release name (default: mydev)"
+6 -6
View File
@@ -1,6 +1,6 @@
# Dev Container
![Build and Push](https://github.com/cpfarhood/devcontainer/actions/workflows/build-and-push.yaml/badge.svg)
![Build and Push](https://github.com/farhoodliquor/devcontainer/actions/workflows/build-and-push.yaml/badge.svg)
A containerized cloud development environment with web-based GUI access, featuring:
- **VSCode or Google Antigravity** via browser-based VNC (port 5800)
@@ -18,7 +18,7 @@ A containerized cloud development environment with web-based GUI access, featuri
```bash
# Add the Helm repository
helm repo add devcontainer https://cpfarhood.github.io/devcontainer
helm repo add devcontainer https://farhoodliquor.github.io/devcontainer
helm repo update
# Deploy with one command
@@ -131,7 +131,7 @@ The Helm chart uses a logical organization with these main sections:
| `ide.type` | `vscode` | IDE to launch — `vscode`, `antigravity`, or `none` (see below) |
| `ssh.enabled` | `false` | Also start an OpenSSH server on port 22 (additive, any IDE) |
| `fileManager.enabled` | `false` | Enable the built-in web file manager for upload/download |
| `image.repository` | `ghcr.io/cpfarhood/devcontainer` | Container image |
| `image.repository` | `ghcr.io/farhoodliquor/devcontainer` | Container image |
| `image.tag` | `latest` | Image tag |
### IDE choice
@@ -418,7 +418,7 @@ docker run -d \
-e GITHUB_TOKEN="ghp_..." \
-e VNC_PASSWORD="changeme" \
-v $(pwd)/home:/home \
ghcr.io/cpfarhood/devcontainer:latest
ghcr.io/farhoodliquor/devcontainer:latest
```
---
@@ -426,8 +426,8 @@ docker run -d \
## Building
```bash
docker build -t ghcr.io/cpfarhood/devcontainer:latest .
docker push ghcr.io/cpfarhood/devcontainer:latest
docker build -t ghcr.io/farhoodliquor/devcontainer:latest .
docker push ghcr.io/farhoodliquor/devcontainer:latest
```
The image is also built and pushed automatically by CI on every push to `main` and on version tags (`v*`).
+1 -1
View File
@@ -37,7 +37,7 @@ Complete reference for all configurable values in the Antigravity Dev Container
### image.repository
- **Type:** String
- **Default:** `ghcr.io/cpfarhood/devcontainer`
- **Default:** `ghcr.io/farhoodliquor/devcontainer`
- **Description:** Container image repository
### image.tag
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
name: devcontainer
description: Dev Container with AI coding agents and MCP sidecars
type: application
version: 2.5.0
version: 2.7.0
appVersion: "latest"
keywords:
- development
+1 -1
View File
@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://github.com/cpfarhood/devcontainer/chart/values.schema.json",
"$id": "https://github.com/farhoodliquor/devcontainer/chart/values.schema.json",
"title": "Dev Container Helm Chart Values Schema",
"description": "Schema for validating values.yaml in the Dev Container Helm chart",
"type": "object",
+5 -5
View File
@@ -7,7 +7,7 @@ name: ""
# Container image configuration
image:
repository: ghcr.io/cpfarhood/devcontainer
repository: ghcr.io/farhoodliquor/devcontainer
tag: latest
pullPolicy: Always
@@ -93,7 +93,7 @@ mcp:
enabled: true
image:
repository: quay.io/containers/kubernetes_mcp_server
tag: v0.0.57
tag: v0.0.59
port: 8080
resources:
requests:
@@ -108,7 +108,7 @@ mcp:
enabled: true
image:
repository: ghcr.io/controlplaneio-fluxcd/flux-operator-mcp
tag: v0.41.1
tag: v0.45.0
port: 8081
resources:
requests:
@@ -124,7 +124,7 @@ mcp:
enabled: false
image:
repository: ghcr.io/zekker6/mcp-helm
tag: v1.3.1
tag: v1.3.3
port: 8012
resources:
requests:
@@ -139,7 +139,7 @@ mcp:
enabled: false # Requires HOMEASSISTANT_URL and HOMEASSISTANT_TOKEN
image:
repository: ghcr.io/homeassistant-ai/ha-mcp
tag: "6.7.1"
tag: "7.1.0"
port: 8087
resources:
requests:
+1 -1
View File
@@ -1,7 +1,7 @@
# Antigravity Dev Container - Session Notes
## Key Architecture Facts
- Image: `ghcr.io/cpfarhood/devcontainer:latest` (repo name is `devcontainer`, not `antigravity`)
- Image: `ghcr.io/farhoodliquor/devcontainer:latest` (repo name is `devcontainer`, not `antigravity`)
- Deployed via Helm chart (`chart/`), not kustomize anymore
- Service must NOT be headless (`clusterIP: None`) — Cilium gateway can't route to headless services
- `SECURE_CONNECTION=0` — TLS is terminated at the gateway, not the app
+7 -4
View File
@@ -4,6 +4,13 @@ set -e
echo "=== Repository Initialization ==="
# Ensure home directory exists on the PVC before any git operations
# (git config --global writes to $HOME/.gitconfig, which fails on a fresh volume)
RUN_UID="${USER_ID:-1000}"
RUN_GID="${GROUP_ID:-1000}"
mkdir -p "$HOME"
chown "$RUN_UID:$RUN_GID" "$HOME"
# Set up basic git configuration
echo "Configuring git user settings..."
# Use environment variables if provided, otherwise use defaults
@@ -142,10 +149,6 @@ if [ ${#REPOS[@]} -eq 0 ]; then
chown -R "$RUN_UID:$RUN_GID" "$WORKSPACE_DIR"
fi
# Ensure home directory exists on the PVC (may be absent on a fresh volume)
mkdir -p "$HOME"
chown "$RUN_UID:$RUN_GID" "$HOME"
# Seed Claude Code settings if missing (disable auto-updater in Docker)
if [ ! -f "$HOME/.claude/settings.json" ]; then
mkdir -p "$HOME/.claude"