diff --git a/.woodpecker/deploy.yml b/.woodpecker/deploy.yml index 5dc1abf..8252443 100644 --- a/.woodpecker/deploy.yml +++ b/.woodpecker/deploy.yml @@ -256,12 +256,22 @@ steps: # MCPO_API_KEY, OAUTH_CLIENT_ID, WEBUI_URL, and other non-secret config — are # left completely untouched. MCPO_API_KEY migration is deferred to a # follow-up; this step never reads or writes it. + # + # IMPORTANT: ai.yaml's litellm service references ${AI_AWS_ACCESS_KEY_ID} / + # ${AI_AWS_SECRET_ACCESS_KEY} (AI_-prefixed) and renders them into the + # container as plain AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY (see commit + # 37ed671a, "Change AWS keys to use Woodpecker Secrets"). So ai.env must be + # written with the AI_-prefixed key names, NOT the plain ones — writing + # plain AWS_ACCESS_KEY_ID here would leave ${AI_AWS_ACCESS_KEY_ID} + # unresolved at compose-render time (empty), silently breaking Bedrock auth. + # All other migrated vars in ai.yaml use plain (unprefixed) names, so only + # these two lines need the AI_ prefix. ssh -o StrictHostKeyChecking=no root@$${SWARM_MANAGER_IP} "FILE=/volume1/docker/compose-files/ai/ai.env TMP=\$FILE.tmp.\$\$ - grep -vE '^(AWS_ACCESS_KEY_ID|AWS_SECRET_ACCESS_KEY|LITELLM_MASTER_KEY|LITELLM_SALT_KEY|POSTGRES_PASSWORD|DATABASE_URL|WEBUI_SECRET_KEY|OPEN_WEBUI_DATABASE_URL|OAUTH_CLIENT_SECRET)=' \$FILE > \$TMP 2>/dev/null || touch \$TMP + grep -vE '^(AI_AWS_ACCESS_KEY_ID|AI_AWS_SECRET_ACCESS_KEY|LITELLM_MASTER_KEY|LITELLM_SALT_KEY|POSTGRES_PASSWORD|DATABASE_URL|WEBUI_SECRET_KEY|OPEN_WEBUI_DATABASE_URL|OAUTH_CLIENT_SECRET)=' \$FILE > \$TMP 2>/dev/null || touch \$TMP { cat \$TMP - printf 'AWS_ACCESS_KEY_ID=%s\n' '$${AI_AWS_ACCESS_KEY_ID}' - printf 'AWS_SECRET_ACCESS_KEY=%s\n' '$${AI_AWS_SECRET_ACCESS_KEY}' + printf 'AI_AWS_ACCESS_KEY_ID=%s\n' '$${AI_AWS_ACCESS_KEY_ID}' + printf 'AI_AWS_SECRET_ACCESS_KEY=%s\n' '$${AI_AWS_SECRET_ACCESS_KEY}' printf 'LITELLM_MASTER_KEY=%s\n' '$${AI_LITELLM_MASTER_KEY}' printf 'LITELLM_SALT_KEY=%s\n' '$${AI_LITELLM_SALT_KEY}' printf 'POSTGRES_PASSWORD=%s\n' '$${AI_LITELLM_DB_PASSWORD}'