The CRS-served harnesses still carried `secrets_files: [{encrypted: true}]`
which now hard-fails on H-SECRET-1 ("SOPS-encrypted secrets_files entries
are no longer permitted") in the dispatcher's harness validator. Sync the
8 provider harnesses with the agent-runtimes copies: same `secrets_required`
shape, same `init.sh` (ESO-mounted file paths), same `bin/` wrappers.
Use bare `account_ref: "<provider>"` (not `<provider>.cp:cp` — that
scope-kind isn't valid per SR-DISP-1-FIELD).
Provider key names follow the per-provider schema as emitted by the CP
provisioner: minimax/airouter/z-ai → api_key; gitea-https/gitea-admin →
{token,base_url,username}; gitea-ssh* → {host,private_key}.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
28 lines
1.0 KiB
Bash
Executable File
28 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# gitea-ssh init: copy the ESO-mounted SSH key to the path the harness-init
|
|
# `~/.ssh/config` expects.
|
|
#
|
|
# The harness-init dispatcher writes `~/.ssh/config` with
|
|
# IdentityFile /home/agent/.ssh/gitea-oreillyit-nz-ai-enablement
|
|
# so the key must end up at that path with mode 0600 owned by agent.
|
|
#
|
|
# The ESO mount at /run/agent/secrets/gitea-ssh/private_key is read-only
|
|
# (V1VolumeMount(read_only=True)), so chmod against it would fail with EROFS.
|
|
# install(1) handles permissions/ownership atomically against the destination.
|
|
#
|
|
# Per M22 Phase 9 file-only delivery (H-SECRET-4): no credential value enters
|
|
# an env var.
|
|
set -euo pipefail
|
|
|
|
SSH_KEY_SRC="/run/agent/secrets/gitea-ssh/private_key"
|
|
SSH_KEY_DST="/home/agent/.ssh/gitea-oreillyit-nz-ai-enablement"
|
|
|
|
if [ ! -r "$SSH_KEY_SRC" ]; then
|
|
echo "ERROR: SSH key not found at $SSH_KEY_SRC — ESO ExternalSecret not Ready?" >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p /home/agent/.ssh
|
|
install -m 0600 -o agent -g agent "$SSH_KEY_SRC" "$SSH_KEY_DST"
|
|
echo "gitea-ssh: SSH key staged at $SSH_KEY_DST (0600 agent:agent)"
|