From 9ec07ff7a1dd6bd575748cba1c9e48c47c142bcb Mon Sep 17 00:00:00 2001 From: Sharang Parnerkar Date: Sun, 12 Jul 2026 21:52:38 +0000 Subject: [PATCH] fix(ci): authenticate tramiton fetch in dashboard + mcp image builds (#147) --- .gitea/workflows/ci.yml | 10 ++++++++-- Dockerfile.dashboard | 11 ++++++++++- Dockerfile.mcp | 11 ++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index d8ec3a1..fdd8072 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -217,13 +217,16 @@ jobs: image: docker:27-cli steps: - name: Build, push and trigger orca redeploy + env: + TRAMITON_FETCH_TOKEN: ${{ secrets.TRAMITON_FETCH_TOKEN }} run: | apk add --no-cache git curl openssl git init && git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" git fetch --depth=1 origin "${GITHUB_SHA}" && git checkout FETCH_HEAD IMAGE=registry.meghsakha.com/compliance-dashboard echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login registry.meghsakha.com -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin - docker build -f Dockerfile.dashboard -t "$IMAGE:latest" -t "$IMAGE:${GITHUB_SHA}" . + DOCKER_BUILDKIT=1 docker build --secret id=tramiton_token,env=TRAMITON_FETCH_TOKEN \ + -f Dockerfile.dashboard -t "$IMAGE:latest" -t "$IMAGE:${GITHUB_SHA}" . docker push "$IMAGE:latest" && docker push "$IMAGE:${GITHUB_SHA}" PAYLOAD=$(printf '{"ref":"refs/heads/main","repository":{"full_name":"sharang/compliance-scanner-agent"},"head_commit":{"id":"%s","message":"deploy dashboard"}}' "${GITHUB_SHA}") SIG=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "${{ secrets.ORCA_WEBHOOK_SECRET }}" | awk '{print $2}') @@ -259,13 +262,16 @@ jobs: image: docker:27-cli steps: - name: Build, push and trigger orca redeploy + env: + TRAMITON_FETCH_TOKEN: ${{ secrets.TRAMITON_FETCH_TOKEN }} run: | apk add --no-cache git curl openssl git init && git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" git fetch --depth=1 origin "${GITHUB_SHA}" && git checkout FETCH_HEAD IMAGE=registry.meghsakha.com/compliance-mcp echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login registry.meghsakha.com -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin - docker build -f Dockerfile.mcp -t "$IMAGE:latest" -t "$IMAGE:${GITHUB_SHA}" . + DOCKER_BUILDKIT=1 docker build --secret id=tramiton_token,env=TRAMITON_FETCH_TOKEN \ + -f Dockerfile.mcp -t "$IMAGE:latest" -t "$IMAGE:${GITHUB_SHA}" . docker push "$IMAGE:latest" && docker push "$IMAGE:${GITHUB_SHA}" PAYLOAD=$(printf '{"ref":"refs/heads/main","repository":{"full_name":"sharang/compliance-scanner-agent"},"head_commit":{"id":"%s","message":"deploy mcp"}}' "${GITHUB_SHA}") SIG=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "${{ secrets.ORCA_WEBHOOK_SECRET }}" | awk '{print $2}') diff --git a/Dockerfile.dashboard b/Dockerfile.dashboard index ff4ad93..69b39bb 100644 --- a/Dockerfile.dashboard +++ b/Dockerfile.dashboard @@ -7,7 +7,16 @@ ARG DOCS_URL=/docs WORKDIR /app COPY . . ENV DOCS_URL=${DOCS_URL} -RUN dx build --release --package compliance-dashboard +# compliance-agent (a workspace member) depends on the private tramiton-core git +# repo, so the workspace resolve needs it even to build the dashboard. +# Authenticate the fetch with a PAT passed as a BuildKit secret. +RUN --mount=type=secret,id=tramiton_token \ + if [ -s /run/secrets/tramiton_token ]; then \ + git config --global \ + url."https://sharang:$(cat /run/secrets/tramiton_token)@gitea.meghsakha.com/".insteadOf \ + "ssh://git@gitea.meghsakha.com:22222/"; \ + fi && \ + CARGO_NET_GIT_FETCH_WITH_CLI=true dx build --release --package compliance-dashboard FROM debian:bookworm-slim RUN apt-get update && apt-get install -y ca-certificates libssl3 && rm -rf /var/lib/apt/lists/* diff --git a/Dockerfile.mcp b/Dockerfile.mcp index 209f243..881e0b5 100644 --- a/Dockerfile.mcp +++ b/Dockerfile.mcp @@ -2,7 +2,16 @@ FROM rust:1.94-bookworm AS builder WORKDIR /app COPY . . -RUN cargo build --release -p compliance-mcp +# compliance-agent (a workspace member) depends on the private tramiton-core git +# repo, so the workspace resolve needs it even to build the mcp binary. +# Authenticate the fetch with a PAT passed as a BuildKit secret. +RUN --mount=type=secret,id=tramiton_token \ + if [ -s /run/secrets/tramiton_token ]; then \ + git config --global \ + url."https://sharang:$(cat /run/secrets/tramiton_token)@gitea.meghsakha.com/".insteadOf \ + "ssh://git@gitea.meghsakha.com:22222/"; \ + fi && \ + CARGO_NET_GIT_FETCH_WITH_CLI=true cargo build --release -p compliance-mcp FROM debian:bookworm-slim RUN apt-get update && apt-get install -y ca-certificates libssl3 && rm -rf /var/lib/apt/lists/*