| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.version=24.04 |
| ADD file:8c609c85109d07bf47cf268a175b3be8bbe34fc0c41d15d99b090d099f4dc837 in / |
| CMD ["/bin/bash"] |
| ARG SOPS_VERSION=3.12.2 |
| ARG SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 |
| ARG AGE_VERSION=1.3.1 |
| ARG AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates curl git gosu jq openssh-client python3 python3-pip python3-venv ripgrep && rm -rf /var/lib/apt/lists/* && pip install --break-system-packages httpx openai pyyaml pydantic 'sqlalchemy[asyncio]>=2.0' 'cryptography>=42.0' 'PyJWT>=2.8' 'pydantic-settings>=2' 'asyncpg>=0.29' 'fastapi>=0.110' 'uvicorn>=0.29' 'docker>=7.0' 'kubernetes>=31.0' 'packaging>=24.0' 'pytest>=8.0' 'pytest-asyncio>=0.23' 'hypothesis>=6.0' uv # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c curl -fsSL "https://github.com/getsops/sops/releases/download/v${SOPS_VERSION}/sops-v${SOPS_VERSION}.linux.amd64" -o /usr/local/bin/sops && echo "${SOPS_SHA256} /usr/local/bin/sops" | sha256sum -c - && chmod +x /usr/local/bin/sops # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c curl -fsSL "https://github.com/FiloSottile/age/releases/download/v${AGE_VERSION}/age-v${AGE_VERSION}-linux-amd64.tar.gz" -o /tmp/age.tar.gz && echo "${AGE_SHA256} /tmp/age.tar.gz" | sha256sum -c - && tar -xzf /tmp/age.tar.gz -C /tmp && mv /tmp/age/age /usr/local/bin/age && mv /tmp/age/age-keygen /usr/local/bin/age-keygen && rm -rf /tmp/age /tmp/age.tar.gz # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c userdel -r ubuntu 2>/dev/null || true # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c useradd -m -s /bin/bash agent # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c mkdir -p /workspace /project && chown agent:agent /workspace /project # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c install -d -o agent -g agent -m 0770 /variables # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c printf '%s\n' '#!/usr/bin/env python3' '"""wfvar shim — /usr/local/bin/wfvar delegates to the package CLI."""' 'import os, sys' 'sys.path.insert(0, "/opt/agent")' 'from variables.cli import main as _wfvar_main' 'if __name__ == "__main__":' ' raise SystemExit(_wfvar_main())' > /usr/local/bin/wfvar && chmod +x /usr/local/bin/wfvar # buildkit |
| COPY sdk/python/control-plane/ /tmp/cp-sdk/ # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c pip install --break-system-packages /tmp/cp-sdk/ && rm -rf /tmp/cp-sdk/ # buildkit |
| COPY entrypoint/ /opt/agent/ # buildkit |
| COPY lib/ /opt/agent/lib/ # buildkit |
| COPY images/base/uid-wrapper.sh /usr/local/bin/uid-wrapper.sh # buildkit |
| COPY images/base/claude-wrapper.sh /opt/agent/claude-wrapper.sh # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c chmod +x /usr/local/bin/uid-wrapper.sh /opt/agent/claude-wrapper.sh # buildkit |
| COPY scripts/workflow/ /opt/agent/scripts/workflow/ # buildkit |
| RUN |4 SOPS_VERSION=3.12.2 SOPS_SHA256=14e2e1ba3bef31e74b70cf0b674f6443c80f6c5f3df15d05ffc57c34851b4998 AGE_VERSION=1.3.1 AGE_SHA256=bdc69c09cbdd6cf8b1f333d372a1f58247b3a33146406333e30c0f26e8f51377 /bin/sh -c chmod +x /opt/agent/scripts/workflow/* # buildkit |
| WORKDIR /workspace |
| ENTRYPOINT ["uid-wrapper.sh" "python3" "/opt/agent/entrypoint.py"] |
| COPY images/fake-agent/fake_runner.py /opt/agent/entrypoint.py # buildkit |
| COPY images/fake-agent/responses/ /opt/agent/fake-responses/ # buildkit |
| ENV FAKE_RESPONSES_DIR=/opt/agent/fake-responses |