Skip to content

Update IBKR docs for service suffix #17

Update IBKR docs for service suffix

Update IBKR docs for service suffix #17

name: Sync Cloud Run Env
on:
push:
branches: [ main ]
jobs:
sync-cloud-run-env:
name: Sync Cloud Run Env
runs-on: ubuntu-latest
env:
ENABLE_GITHUB_ENV_SYNC: ${{ vars.ENABLE_GITHUB_ENV_SYNC }}
CLOUD_RUN_REGION: ${{ vars.CLOUD_RUN_REGION }}
CLOUD_RUN_SERVICE: ${{ vars.CLOUD_RUN_SERVICE }}
TELEGRAM_TOKEN_SECRET_NAME: ${{ vars.TELEGRAM_TOKEN_SECRET_NAME }}
STRATEGY_PROFILE: ${{ vars.STRATEGY_PROFILE }}
ACCOUNT_GROUP: ${{ vars.ACCOUNT_GROUP }}
IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME: ${{ vars.IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME }}
IB_GATEWAY_ZONE: ${{ vars.IB_GATEWAY_ZONE }}
IB_GATEWAY_IP_MODE: ${{ vars.IB_GATEWAY_IP_MODE }}
GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }}
NOTIFY_LANG: ${{ vars.NOTIFY_LANG }}
GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
steps:
- name: Check whether env sync is configured
id: config
run: |
set -euo pipefail
if [ "${ENABLE_GITHUB_ENV_SYNC:-}" != "true" ]; then
echo "enabled=false" >> "$GITHUB_OUTPUT"
echo "Skipping Cloud Run env sync because ENABLE_GITHUB_ENV_SYNC is not set to true." >&2
exit 0
fi
required_vars=(
CLOUD_RUN_REGION
CLOUD_RUN_SERVICE
STRATEGY_PROFILE
ACCOUNT_GROUP
IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME
GLOBAL_TELEGRAM_CHAT_ID
NOTIFY_LANG
GCP_SA_KEY
)
missing_vars=()
for var_name in "${required_vars[@]}"; do
if [ -z "${!var_name:-}" ]; then
missing_vars+=("${var_name}")
fi
done
if [ -z "${TELEGRAM_TOKEN_SECRET_NAME:-}" ] && [ -z "${TELEGRAM_TOKEN:-}" ]; then
missing_vars+=("TELEGRAM_TOKEN_SECRET_NAME or TELEGRAM_TOKEN")
fi
if [ "${#missing_vars[@]}" -gt 0 ]; then
echo "enabled=false" >> "$GITHUB_OUTPUT"
echo "Cloud Run env sync is enabled, but these values are missing:" >&2
printf ' - %s\n' "${missing_vars[@]}" >&2
exit 1
fi
echo "enabled=true" >> "$GITHUB_OUTPUT"
- name: Authenticate to Google Cloud
id: auth
if: steps.config.outputs.enabled == 'true'
uses: google-github-actions/auth@v3
with:
credentials_json: ${{ env.GCP_SA_KEY }}
- name: Set up gcloud
if: steps.config.outputs.enabled == 'true'
uses: google-github-actions/setup-gcloud@v3
with:
project_id: ${{ steps.auth.outputs.project_id }}
version: ">= 416.0.0"
- name: Sync Cloud Run environment
if: steps.config.outputs.enabled == 'true'
run: |
set -euo pipefail
env_pairs=(
"GLOBAL_TELEGRAM_CHAT_ID=${GLOBAL_TELEGRAM_CHAT_ID}"
"NOTIFY_LANG=${NOTIFY_LANG}"
"STRATEGY_PROFILE=${STRATEGY_PROFILE}"
"ACCOUNT_GROUP=${ACCOUNT_GROUP}"
"IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME=${IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME}"
)
secret_pairs=()
remove_env_vars=(
"IB_GATEWAY_HOST"
"IB_GATEWAY_PORT"
"TELEGRAM_CHAT_ID"
"IB_CLIENT_ID"
"IB_GATEWAY_INSTANCE_NAME"
"IB_GATEWAY_MODE"
)
remove_secret_vars=()
if [ -n "${TELEGRAM_TOKEN_SECRET_NAME:-}" ]; then
secret_pairs+=("TELEGRAM_TOKEN=${TELEGRAM_TOKEN_SECRET_NAME}:latest")
else
env_pairs+=("TELEGRAM_TOKEN=${TELEGRAM_TOKEN}")
remove_secret_vars+=("TELEGRAM_TOKEN")
fi
if [ -n "${IB_GATEWAY_ZONE:-}" ]; then
env_pairs+=("IB_GATEWAY_ZONE=${IB_GATEWAY_ZONE}")
else
remove_env_vars+=("IB_GATEWAY_ZONE")
fi
if [ -n "${IB_GATEWAY_IP_MODE:-}" ]; then
env_pairs+=("IB_GATEWAY_IP_MODE=${IB_GATEWAY_IP_MODE}")
else
remove_env_vars+=("IB_GATEWAY_IP_MODE")
fi
gcloud_args=(
run services update "${CLOUD_RUN_SERVICE}"
--region "${CLOUD_RUN_REGION}"
--remove-env-vars "$(IFS=,; echo "${remove_env_vars[*]}")"
--update-env-vars "$(IFS=,; echo "${env_pairs[*]}")"
)
if [ "${#remove_secret_vars[@]}" -gt 0 ]; then
gcloud_args+=(--remove-secrets "$(IFS=,; echo "${remove_secret_vars[*]}")")
fi
if [ "${#secret_pairs[@]}" -gt 0 ]; then
gcloud_args+=(--update-secrets "$(IFS=,; echo "${secret_pairs[*]}")")
fi
gcloud "${gcloud_args[@]}"