Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions templates/devcontainer/Dockerfile.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ RUN apt-get update \
&& apt-get update \
&& apt-get install -y --no-install-recommends nodejs \
&& ln -sf /usr/bin/fdfind /usr/local/bin/fd \
&& rm -rf /var/lib/apt/lists/*
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb

RUN ARCH=$(dpkg --print-architecture) \
&& curl -fsSL "https://github.com/dandavison/delta/releases/download/${GIT_DELTA_VERSION}/git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" -o /tmp/git-delta.deb \
Expand All @@ -53,7 +54,8 @@ ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python \
UV_TOOL_DIR=/opt/uv/tools \
UV_TOOL_BIN_DIR=/usr/local/bin \
UV_LINK_MODE=copy
RUN uv python install 3.13 \
RUN --mount=type=cache,target=/root/.cache/uv \
uv python install 3.13 \
&& ln -sf "$(uv python find 3.13)" /usr/local/bin/python3 \
&& ln -sf /usr/local/bin/python3 /usr/local/bin/python \
&& uv tool install ast-grep-cli
Expand Down Expand Up @@ -101,7 +103,8 @@ RUN ARCH_RAW="$(dpkg --print-architecture)" \

# Always-on security tooling: semgrep (SAST), gitleaks + trufflehog (secrets).
# SCA is handled by vet/pmg above; this layer covers code-pattern and secret scans.
RUN uv tool install semgrep \
RUN --mount=type=cache,target=/root/.cache/uv \
uv tool install semgrep \
&& curl -fsSL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh \
| sh -s -- -b /usr/local/bin

Expand Down Expand Up @@ -226,20 +229,23 @@ RUN if [ -n "$AIDC_TOOLCHAINS" ]; then \
go) \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends golang-go && \
GOBIN=/home/vscode/.local/bin go install github.com/securego/gosec/v2/cmd/gosec@latest ;; \
GOBIN=/home/vscode/.local/bin GOPATH=/tmp/gopath GOCACHE=/tmp/go-build go install github.com/securego/gosec/v2/cmd/gosec@latest && \
rm -rf /tmp/gopath /tmp/go-build ;; \
rust) \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --default-toolchain stable --profile minimal --no-modify-path && \
mkdir -p /home/vscode/.local/bin && \
ln -sf "$HOME/.cargo/bin/cargo" /home/vscode/.local/bin/cargo && \
ln -sf "$HOME/.cargo/bin/rustc" /home/vscode/.local/bin/rustc && \
ln -sf "$HOME/.cargo/bin/rustup" /home/vscode/.local/bin/rustup && \
"$HOME/.cargo/bin/cargo" install cargo-audit --locked && \
ln -sf "$HOME/.cargo/bin/cargo-audit" /home/vscode/.local/bin/cargo-audit ;; \
CARGO_TARGET_DIR=/tmp/cargo-target "$HOME/.cargo/bin/cargo" install cargo-audit --locked && \
ln -sf "$HOME/.cargo/bin/cargo-audit" /home/vscode/.local/bin/cargo-audit && \
rm -rf /tmp/cargo-target "$HOME/.cargo/registry" "$HOME/.cargo/git" ;; \
ruby) \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends ruby-full && \
sudo gem install --no-document bundler-audit ;; \
sudo gem install --no-document bundler-audit && \
sudo rm -rf /var/lib/gems/*/cache ;; \
java) \
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends default-jdk ;; \
Expand All @@ -255,6 +261,7 @@ RUN if [ -n "$AIDC_TOOLCHAINS" ]; then \
UV_TOOL_BIN_DIR="$HOME/.local/bin" \
UV_TOOL_DIR="$HOME/.local/share/uv-tools" \
uv tool install bandit && \
uv cache clean && \
echo "aidc: python 3.13 already in base (uv-managed); bandit installed" ;; \
*) \
echo "aidc: unknown toolchain '$tc' (skipped)" >&2 ;; \
Expand All @@ -281,11 +288,13 @@ RUN if [ -n "$AIDC_SECURITY_TOOLS" ]; then \
checkov) \
UV_TOOL_BIN_DIR="$HOME/.local/bin" \
UV_TOOL_DIR="$HOME/.local/share/uv-tools" \
uv tool install checkov ;; \
uv tool install checkov && \
uv cache clean ;; \
bandit) \
UV_TOOL_BIN_DIR="$HOME/.local/bin" \
UV_TOOL_DIR="$HOME/.local/share/uv-tools" \
uv tool install bandit ;; \
uv tool install bandit && \
uv cache clean ;; \
*) \
echo "aidc: unknown security tool '$tool' (skipped)" >&2 ;; \
esac; \
Expand Down