Skip to content

Commit 3d856f4

Browse files
committed
fix(container): export runtime project env for ssh
1 parent 210d8fb commit 3d856f4

3 files changed

Lines changed: 31 additions & 0 deletions

File tree

packages/container/src/core/templates-entrypoint.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
renderEntrypointHeader,
99
renderEntrypointInputRc,
1010
renderEntrypointPackageCache,
11+
renderEntrypointProjectRuntimeEnv,
1112
renderEntrypointSshd,
1213
renderEntrypointZshShell,
1314
renderEntrypointZshUserRc
@@ -39,6 +40,7 @@ import {
3940
export const renderEntrypoint = (config: TemplateConfig): string =>
4041
[
4142
renderEntrypointHeader(config),
43+
renderEntrypointProjectRuntimeEnv(),
4244
renderEntrypointDnsRepair(),
4345
renderEntrypointPackageCache(config),
4446
renderEntrypointDockerGitBootstrap(config),

packages/container/src/core/templates-entrypoint/base.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,21 @@ docker_git_upsert_ssh_env() {
6363
chown 1000:1000 "$SSH_ENV_PATH" || true
6464
}`
6565

66+
export const renderEntrypointProjectRuntimeEnv = (): string =>
67+
String.raw`# Publish runtime project identity into login and SSH environments.
68+
DOCKER_GIT_PROJECT_PROFILE="/etc/profile.d/docker-git-project.sh"
69+
{
70+
printf "export TARGET_DIR=%q\n" "$TARGET_DIR"
71+
printf "export REPO_URL=%q\n" "$REPO_URL"
72+
printf "export REPO_REF=%q\n" "$REPO_REF"
73+
printf "export FORK_REPO_URL=%q\n" "$FORK_REPO_URL"
74+
} > "$DOCKER_GIT_PROJECT_PROFILE"
75+
chmod 0644 "$DOCKER_GIT_PROJECT_PROFILE"
76+
docker_git_upsert_ssh_env "TARGET_DIR" "$TARGET_DIR"
77+
docker_git_upsert_ssh_env "REPO_URL" "$REPO_URL"
78+
docker_git_upsert_ssh_env "REPO_REF" "$REPO_REF"
79+
docker_git_upsert_ssh_env "FORK_REPO_URL" "$FORK_REPO_URL"`
80+
6681
export const renderEntrypointPackageCache = (config: TemplateConfig): string =>
6782
`# Keep package manager caches inside the project home volume
6883
PACKAGE_CACHE_ROOT="/home/${config.sshUser}/.docker-git/.cache/packages"

packages/container/tests/core/templates.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,20 @@ describe("renderEntrypoint clone cache", () => {
456456
expect(entrypoint).not.toContain('if [[ ! -s "$CODEX_HINT_PATH" ]]; then')
457457
})
458458

459+
it("publishes runtime project identity before Codex resume hints", () => {
460+
const entrypoint = renderEntrypoint(makeTemplateConfig())
461+
462+
const projectProfileIndex = entrypoint.indexOf('DOCKER_GIT_PROJECT_PROFILE="/etc/profile.d/docker-git-project.sh"')
463+
const resumeHintIndex = entrypoint.indexOf('CODEX_HINT_PATH="/etc/profile.d/zz-codex-resume.sh"')
464+
465+
expect(projectProfileIndex).toBeGreaterThanOrEqual(0)
466+
expect(resumeHintIndex).toBeGreaterThan(projectProfileIndex)
467+
expect(entrypoint).toContain('printf "export REPO_REF=%q\\n" "$REPO_REF"')
468+
expect(entrypoint).toContain('printf "export REPO_URL=%q\\n" "$REPO_URL"')
469+
expect(entrypoint).toContain('docker_git_upsert_ssh_env "REPO_REF" "$REPO_REF"')
470+
expect(entrypoint).toContain('docker_git_upsert_ssh_env "REPO_URL" "$REPO_URL"')
471+
})
472+
459473
it("preserves branch/tag-only clone-cache refspecs for generated configs", () => {
460474
fc.assert(
461475
fc.property(generatedTemplateConfigArbitrary, (config) => {

0 commit comments

Comments
 (0)