Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1b0fd73d9b | |||
| ed0ca39976 | |||
| 55c2afaeb1 | |||
| d3365a71f6 | |||
| 70e74ab2d2 | |||
| 673554b393 | |||
| 609752e7dc | |||
| fcd959ae1f | |||
| 149120ff6c | |||
| 50770b6e5f | |||
| 01d5ebbdb8 | |||
| d5338ab836 | |||
| a378c0f913 |
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
### 1️⃣ For Releases → **Unified Release**
|
### 1️⃣ For Releases → **Unified Release**
|
||||||
Use this for all version releases:
|
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"
|
2. Click "Run workflow"
|
||||||
3. Either:
|
3. Either:
|
||||||
- Enter specific version (e.g., `0.2.1`), OR
|
- Enter specific version (e.g., `0.2.1`), OR
|
||||||
@@ -15,12 +15,12 @@ Use this for all version releases:
|
|||||||
- ✅ Updates chart version
|
- ✅ Updates chart version
|
||||||
- ✅ Creates git tag
|
- ✅ Creates git tag
|
||||||
- ✅ Builds Docker image with all proper tags
|
- ✅ 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
|
- ✅ Creates GitHub Release with changelog
|
||||||
|
|
||||||
### 2️⃣ For Quick Fixes → **Quick Fix Build**
|
### 2️⃣ For Quick Fixes → **Quick Fix Build**
|
||||||
Use this for emergency fixes without version changes:
|
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"
|
2. Click "Run workflow"
|
||||||
3. Enter tag (default: `latest`)
|
3. Enter tag (default: `latest`)
|
||||||
4. Click "Run workflow"
|
4. Click "Run workflow"
|
||||||
|
|||||||
@@ -56,5 +56,7 @@ jobs:
|
|||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
no-cache: true
|
build-args: CACHE_BUST=${{ github.sha }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
|
|||||||
@@ -96,7 +96,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
no-cache: true
|
build-args: CACHE_BUST=${{ github.sha }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
tags: |
|
tags: |
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.tag }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.tag }}
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.version }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.version }}
|
||||||
@@ -128,7 +130,7 @@ jobs:
|
|||||||
<body>
|
<body>
|
||||||
<h1>Dev Container Helm Chart Repository</h1>
|
<h1>Dev Container Helm Chart Repository</h1>
|
||||||
<p>Add this repository to Helm:</p>
|
<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>
|
<p>Install the chart:</p>
|
||||||
<pre>helm install mydev devcontainer/devcontainer --set name=mydev</pre>
|
<pre>helm install mydev devcontainer/devcontainer --set name=mydev</pre>
|
||||||
</body>
|
</body>
|
||||||
@@ -142,9 +144,9 @@ jobs:
|
|||||||
# Copy chart package and rebuild index
|
# Copy chart package and rebuild index
|
||||||
cp "$CHART_TGZ" "$PAGES_DIR/"
|
cp "$CHART_TGZ" "$PAGES_DIR/"
|
||||||
if [ -f "$PAGES_DIR/index.yaml" ]; then
|
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
|
else
|
||||||
helm repo index "$PAGES_DIR" --url https://cpfarhood.github.io/devcontainer
|
helm repo index "$PAGES_DIR" --url https://farhoodliquor.github.io/devcontainer
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Commit and push
|
# Commit and push
|
||||||
@@ -179,7 +181,7 @@ jobs:
|
|||||||
|
|
||||||
### Helm Chart
|
### Helm Chart
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
helm repo add devcontainer https://cpfarhood.github.io/devcontainer
|
helm repo add devcontainer https://farhoodliquor.github.io/devcontainer
|
||||||
helm repo update
|
helm repo update
|
||||||
helm install mydev devcontainer/devcontainer --version ${VERSION} --set name=mydev
|
helm install mydev devcontainer/devcontainer --version ${VERSION} --set name=mydev
|
||||||
\`\`\`
|
\`\`\`
|
||||||
|
|||||||
+1
-1
@@ -95,4 +95,4 @@ Use this template for future releases:
|
|||||||
- Vulnerability fixes
|
- Vulnerability fixes
|
||||||
```
|
```
|
||||||
|
|
||||||
[Unreleased]: https://github.com/cpfarhood/devcontainer/compare/v1.0.0...HEAD
|
[Unreleased]: https://github.com/farhoodliquor/devcontainer/compare/v1.0.0...HEAD
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ The stack is primarily **Bash scripts + YAML** — there is no Node.js package,
|
|||||||
```bash
|
```bash
|
||||||
make build # Build Docker image
|
make build # Build Docker image
|
||||||
make build REGISTRY=ghcr.io/myuser IMAGE_TAG=v1.0 # Custom registry/tag
|
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
|
### Running Locally
|
||||||
@@ -70,7 +70,7 @@ Container start
|
|||||||
|
|
||||||
| File | Purpose |
|
| File | Purpose |
|
||||||
|------|---------|
|
|------|---------|
|
||||||
| `Dockerfile` | Image definition — installs Chrome, VSCode, Helm, gh CLI, kubeseal, Claude Code, OpenCode, Crush; 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/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 |
|
| `scripts/startapp.sh` | Calls init-repo.sh then opens VSCode in the workspace |
|
||||||
| `chart/` | Helm chart for Kubernetes deployment |
|
| `chart/` | Helm chart for Kubernetes deployment |
|
||||||
@@ -197,11 +197,11 @@ helm install my-devcontainer ./chart -f custom-values.yaml
|
|||||||
### CI/CD
|
### 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.
|
- **`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.
|
- **`dependabot.yml`** — Weekly updates for GitHub Actions and Docker base image.
|
||||||
|
|
||||||
Image registry: `ghcr.io/cpfarhood/devcontainer`
|
Image registry: `ghcr.io/farhoodliquor/devcontainer`
|
||||||
Helm repo: `https://cpfarhood.github.io/devcontainer`
|
Helm repo: `https://farhoodliquor.github.io/devcontainer`
|
||||||
|
|
||||||
## Kubernetes Notes
|
## Kubernetes Notes
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -15,7 +15,7 @@ This guide provides step-by-step instructions for deploying the Antigravity Dev
|
|||||||
### 1. Clone the Repository
|
### 1. Clone the Repository
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/cpfarhood/devcontainer.git
|
git clone https://github.com/farhoodliquor/devcontainer.git
|
||||||
cd devcontainer
|
cd devcontainer
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -433,5 +433,5 @@ kubectl run backup --image=busybox --restart=Never --rm -i --tty \
|
|||||||
## Support
|
## Support
|
||||||
|
|
||||||
For issues or questions:
|
For issues or questions:
|
||||||
- GitHub Issues: https://github.com/cpfarhood/devcontainer/issues
|
- GitHub Issues: https://github.com/farhoodliquor/devcontainer/issues
|
||||||
- Documentation: https://github.com/cpfarhood/devcontainer
|
- Documentation: https://github.com/farhoodliquor/devcontainer
|
||||||
+78
-1
@@ -1,5 +1,8 @@
|
|||||||
FROM jlesage/baseimage-gui:ubuntu-22.04-v4
|
FROM jlesage/baseimage-gui:ubuntu-22.04-v4
|
||||||
|
|
||||||
|
# Bust cache for all layers below (base image pull is still cached)
|
||||||
|
ARG CACHE_BUST
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV APP_NAME="Dev Container" \
|
ENV APP_NAME="Dev Container" \
|
||||||
KEEP_APP_RUNNING=1 \
|
KEEP_APP_RUNNING=1 \
|
||||||
@@ -56,6 +59,13 @@ exec /usr/bin/google-chrome-stable \\\n\
|
|||||||
"$@"\n' > /usr/local/bin/google-chrome && \
|
"$@"\n' > /usr/local/bin/google-chrome && \
|
||||||
chmod +x /usr/local/bin/google-chrome
|
chmod +x /usr/local/bin/google-chrome
|
||||||
|
|
||||||
|
# Install Node.js LTS via NodeSource
|
||||||
|
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/* && \
|
||||||
|
node --version && npm --version
|
||||||
|
|
||||||
# Install Claude Code native binary (npm wrapper breaks remote control)
|
# Install Claude Code native binary (npm wrapper breaks remote control)
|
||||||
RUN curl -fsSL https://claude.ai/install.sh | bash && \
|
RUN curl -fsSL https://claude.ai/install.sh | bash && \
|
||||||
cp /root/.local/bin/claude /usr/local/bin/claude && \
|
cp /root/.local/bin/claude /usr/local/bin/claude && \
|
||||||
@@ -81,7 +91,7 @@ RUN CRUSH_VERSION=$(curl -sL https://api.github.com/repos/charmbracelet/crush/re
|
|||||||
rm -rf /tmp/crush*
|
rm -rf /tmp/crush*
|
||||||
|
|
||||||
# Install Helm CLI for Kubernetes chart management
|
# 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" | \
|
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 && \
|
tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm && \
|
||||||
chmod +x /usr/local/bin/helm
|
chmod +x /usr/local/bin/helm
|
||||||
@@ -107,6 +117,73 @@ RUN KUBESEAL_VERSION=$(curl -sL https://api.github.com/repos/bitnami-labs/sealed
|
|||||||
tar -xz -C /usr/local/bin kubeseal && \
|
tar -xz -C /usr/local/bin kubeseal && \
|
||||||
chmod +x /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.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 && \
|
||||||
|
rm -rf /root/go
|
||||||
|
ENV PATH="/usr/local/go/bin:${PATH}"
|
||||||
|
|
||||||
|
# Install clangd LSP server (C/C++)
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y clangd && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install rust-analyzer LSP server (Rust) — standalone binary, no full toolchain needed
|
||||||
|
RUN RUST_ANALYZER_VERSION=$(curl -sL https://api.github.com/repos/rust-lang/rust-analyzer/releases/latest | jq -r '.tag_name') && \
|
||||||
|
curl -fsSL "https://github.com/rust-lang/rust-analyzer/releases/download/${RUST_ANALYZER_VERSION}/rust-analyzer-x86_64-unknown-linux-gnu.gz" | \
|
||||||
|
gunzip > /usr/local/bin/rust-analyzer && \
|
||||||
|
chmod +x /usr/local/bin/rust-analyzer
|
||||||
|
|
||||||
|
# Install lua-language-server (Lua)
|
||||||
|
RUN LUA_LS_VERSION=$(curl -sL https://api.github.com/repos/LuaLS/lua-language-server/releases/latest | jq -r '.tag_name') && \
|
||||||
|
mkdir -p /opt/lua-language-server && \
|
||||||
|
curl -fsSL "https://github.com/LuaLS/lua-language-server/releases/download/${LUA_LS_VERSION}/lua-language-server-${LUA_LS_VERSION}-linux-x64.tar.gz" | \
|
||||||
|
tar -xz -C /opt/lua-language-server && \
|
||||||
|
ln -s /opt/lua-language-server/bin/lua-language-server /usr/local/bin/lua-language-server
|
||||||
|
|
||||||
|
# Install JDK for Java/Kotlin LSP servers
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y openjdk-17-jdk-headless && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install kotlin-language-server
|
||||||
|
RUN KLS_VERSION=$(curl -sL https://api.github.com/repos/fwcd/kotlin-language-server/releases/latest | jq -r '.tag_name') && \
|
||||||
|
curl -fsSL "https://github.com/fwcd/kotlin-language-server/releases/download/${KLS_VERSION}/server.zip" -o /tmp/kls.zip && \
|
||||||
|
unzip -o /tmp/kls.zip -d /opt/kotlin-language-server && \
|
||||||
|
ln -s /opt/kotlin-language-server/server/bin/kotlin-language-server /usr/local/bin/kotlin-language-server && \
|
||||||
|
rm /tmp/kls.zip
|
||||||
|
|
||||||
|
# Install jdtls (Java LSP) — Eclipse JDT Language Server
|
||||||
|
RUN JDTLS_TARBALL=$(curl -sL https://download.eclipse.org/jdtls/snapshots/latest.txt) && \
|
||||||
|
mkdir -p /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
|
||||||
|
|
||||||
# Install VSCode (using Microsoft's current recommended setup)
|
# Install VSCode (using Microsoft's current recommended setup)
|
||||||
RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg && \
|
RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg && \
|
||||||
install -D -o root -g root -m 644 /tmp/microsoft.gpg /usr/share/keyrings/microsoft.gpg && \
|
install -D -o root -g root -m 644 /tmp/microsoft.gpg /usr/share/keyrings/microsoft.gpg && \
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.PHONY: build push run stop clean help
|
.PHONY: build push run stop clean help
|
||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
REGISTRY ?= ghcr.io/cpfarhood
|
REGISTRY ?= ghcr.io/farhoodliquor
|
||||||
IMAGE_NAME ?= devcontainer
|
IMAGE_NAME ?= devcontainer
|
||||||
IMAGE_TAG ?= latest
|
IMAGE_TAG ?= latest
|
||||||
FULL_IMAGE = $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)
|
FULL_IMAGE = $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)
|
||||||
@@ -99,7 +99,7 @@ help:
|
|||||||
@echo " helm-port-forward - Port forward to localhost"
|
@echo " helm-port-forward - Port forward to localhost"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "Variables:"
|
@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_NAME - Image name (default: devcontainer)"
|
||||||
@echo " IMAGE_TAG - Image tag (default: latest)"
|
@echo " IMAGE_TAG - Image tag (default: latest)"
|
||||||
@echo " RELEASE_NAME - Helm release name (default: mydev)"
|
@echo " RELEASE_NAME - Helm release name (default: mydev)"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Dev Container
|
# Dev Container
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A containerized cloud development environment with web-based GUI access, featuring:
|
A containerized cloud development environment with web-based GUI access, featuring:
|
||||||
- **VSCode or Google Antigravity** via browser-based VNC (port 5800)
|
- **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
|
```bash
|
||||||
# Add the Helm repository
|
# 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
|
helm repo update
|
||||||
|
|
||||||
# Deploy with one command
|
# 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) |
|
| `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) |
|
| `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 |
|
| `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 |
|
| `image.tag` | `latest` | Image tag |
|
||||||
|
|
||||||
### IDE choice
|
### IDE choice
|
||||||
@@ -418,7 +418,7 @@ docker run -d \
|
|||||||
-e GITHUB_TOKEN="ghp_..." \
|
-e GITHUB_TOKEN="ghp_..." \
|
||||||
-e VNC_PASSWORD="changeme" \
|
-e VNC_PASSWORD="changeme" \
|
||||||
-v $(pwd)/home:/home \
|
-v $(pwd)/home:/home \
|
||||||
ghcr.io/cpfarhood/devcontainer:latest
|
ghcr.io/farhoodliquor/devcontainer:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -426,8 +426,8 @@ docker run -d \
|
|||||||
## Building
|
## Building
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t ghcr.io/cpfarhood/devcontainer:latest .
|
docker build -t ghcr.io/farhoodliquor/devcontainer:latest .
|
||||||
docker push ghcr.io/cpfarhood/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*`).
|
The image is also built and pushed automatically by CI on every push to `main` and on version tags (`v*`).
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ Complete reference for all configurable values in the Antigravity Dev Container
|
|||||||
|
|
||||||
### image.repository
|
### image.repository
|
||||||
- **Type:** String
|
- **Type:** String
|
||||||
- **Default:** `ghcr.io/cpfarhood/devcontainer`
|
- **Default:** `ghcr.io/farhoodliquor/devcontainer`
|
||||||
- **Description:** Container image repository
|
- **Description:** Container image repository
|
||||||
|
|
||||||
### image.tag
|
### image.tag
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ apiVersion: v2
|
|||||||
name: devcontainer
|
name: devcontainer
|
||||||
description: Dev Container with AI coding agents and MCP sidecars
|
description: Dev Container with AI coding agents and MCP sidecars
|
||||||
type: application
|
type: application
|
||||||
version: 2.4.0
|
version: 2.7.0
|
||||||
appVersion: "latest"
|
appVersion: "latest"
|
||||||
keywords:
|
keywords:
|
||||||
- development
|
- development
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$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",
|
"title": "Dev Container Helm Chart Values Schema",
|
||||||
"description": "Schema for validating values.yaml in the Dev Container Helm chart",
|
"description": "Schema for validating values.yaml in the Dev Container Helm chart",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
|||||||
+5
-5
@@ -7,7 +7,7 @@ name: ""
|
|||||||
|
|
||||||
# Container image configuration
|
# Container image configuration
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/cpfarhood/devcontainer
|
repository: ghcr.io/farhoodliquor/devcontainer
|
||||||
tag: latest
|
tag: latest
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ mcp:
|
|||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: quay.io/containers/kubernetes_mcp_server
|
repository: quay.io/containers/kubernetes_mcp_server
|
||||||
tag: v0.0.57
|
tag: v0.0.59
|
||||||
port: 8080
|
port: 8080
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -108,7 +108,7 @@ mcp:
|
|||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/controlplaneio-fluxcd/flux-operator-mcp
|
repository: ghcr.io/controlplaneio-fluxcd/flux-operator-mcp
|
||||||
tag: v0.41.1
|
tag: v0.45.0
|
||||||
port: 8081
|
port: 8081
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -124,7 +124,7 @@ mcp:
|
|||||||
enabled: false
|
enabled: false
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/zekker6/mcp-helm
|
repository: ghcr.io/zekker6/mcp-helm
|
||||||
tag: v1.3.1
|
tag: v1.3.3
|
||||||
port: 8012
|
port: 8012
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -139,7 +139,7 @@ mcp:
|
|||||||
enabled: false # Requires HOMEASSISTANT_URL and HOMEASSISTANT_TOKEN
|
enabled: false # Requires HOMEASSISTANT_URL and HOMEASSISTANT_TOKEN
|
||||||
image:
|
image:
|
||||||
repository: ghcr.io/homeassistant-ai/ha-mcp
|
repository: ghcr.io/homeassistant-ai/ha-mcp
|
||||||
tag: "6.7.1"
|
tag: "7.1.0"
|
||||||
port: 8087
|
port: 8087
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# Antigravity Dev Container - Session Notes
|
# Antigravity Dev Container - Session Notes
|
||||||
|
|
||||||
## Key Architecture Facts
|
## 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
|
- Deployed via Helm chart (`chart/`), not kustomize anymore
|
||||||
- Service must NOT be headless (`clusterIP: None`) — Cilium gateway can't route to headless services
|
- 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
|
- `SECURE_CONNECTION=0` — TLS is terminated at the gateway, not the app
|
||||||
|
|||||||
@@ -4,6 +4,13 @@ set -e
|
|||||||
|
|
||||||
echo "=== Repository Initialization ==="
|
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
|
# Set up basic git configuration
|
||||||
echo "Configuring git user settings..."
|
echo "Configuring git user settings..."
|
||||||
# Use environment variables if provided, otherwise use defaults
|
# 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"
|
chown -R "$RUN_UID:$RUN_GID" "$WORKSPACE_DIR"
|
||||||
fi
|
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)
|
# Seed Claude Code settings if missing (disable auto-updater in Docker)
|
||||||
if [ ! -f "$HOME/.claude/settings.json" ]; then
|
if [ ! -f "$HOME/.claude/settings.json" ]; then
|
||||||
mkdir -p "$HOME/.claude"
|
mkdir -p "$HOME/.claude"
|
||||||
|
|||||||
Reference in New Issue
Block a user