fix stripe image build
Build & Push / Pipeline Tests (push) Successful in 1m45s
Test / Type Check (all packages) (push) Successful in 53s
Build & Push / Build & Push Docker Image (push) Failing after 33s
Test / API Unit Tests (push) Successful in 1m7s
Test / Homepage Unit Tests (push) Successful in 50s
Test / Carplace Unit Tests (push) Successful in 47s
Test / Admin Unit Tests (push) Successful in 43s
Test / Dashboard Unit Tests (push) Successful in 43s
Test / API Integration Tests (push) Successful in 1m6s

This commit is contained in:
root
2026-07-29 09:15:06 -04:00
parent b944ff554c
commit dc04ef07b9
6 changed files with 93 additions and 6 deletions
+2 -1
View File
@@ -87,8 +87,9 @@ MAIL_REPLY_TO_ADDRESS=rentaldrivego@gmail.com
MAIL_REPLY_TO_NAME=RentalDriveGo MAIL_REPLY_TO_NAME=RentalDriveGo
# Stripe subscription checkout # Stripe subscription checkout
# STRIPE_API_KEY must be a Stripe secret/restricted key (sk_ or rk_). # STRIPE_API_KEY must be a live Stripe secret/restricted key (sk_live_ or rk_live_).
# STRIPE_WEBHOOK_SECRET must be a Stripe webhook signing secret (whsec_). # STRIPE_WEBHOOK_SECRET must be a Stripe webhook signing secret (whsec_).
# Gitea deploys can override these from STRIPE_API_KEY and STRIPE_WEBHOOK_SECRET secrets.
STRIPE_API_KEY=placeholder STRIPE_API_KEY=placeholder
STRIPE_WEBHOOK_SECRET=placeholder STRIPE_WEBHOOK_SECRET=placeholder
+7
View File
@@ -428,6 +428,8 @@ jobs:
IMAGE_TAG: ${{ gitea.sha }} IMAGE_TAG: ${{ gitea.sha }}
ENV_DOCKER_PRODUCTION: ${{ secrets.ENV_DOCKER_PRODUCTION }} ENV_DOCKER_PRODUCTION: ${{ secrets.ENV_DOCKER_PRODUCTION }}
ENV_DOCKER_PRODUCTION_B64: ${{ secrets.ENV_DOCKER_PRODUCTION_B64 }} ENV_DOCKER_PRODUCTION_B64: ${{ secrets.ENV_DOCKER_PRODUCTION_B64 }}
STRIPE_API_KEY: ${{ secrets.STRIPE_API_KEY }}
STRIPE_WEBHOOK_SECRET: ${{ secrets.STRIPE_WEBHOOK_SECRET }}
REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
@@ -443,6 +445,8 @@ jobs:
SSH_OPTIONS="-i $HOME/.ssh/id_rsa -o BatchMode=yes -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=$HOME/.ssh/known_hosts" SSH_OPTIONS="-i $HOME/.ssh/id_rsa -o BatchMode=yes -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=$HOME/.ssh/known_hosts"
ENV_DOCKER_PRODUCTION_B64_CLEAN="$(printf '%s' "$ENV_DOCKER_PRODUCTION_B64" | tr -d '[:space:]')" ENV_DOCKER_PRODUCTION_B64_CLEAN="$(printf '%s' "$ENV_DOCKER_PRODUCTION_B64" | tr -d '[:space:]')"
ENV_DOCKER_PRODUCTION_RAW_B64="$(printf '%s' "$ENV_DOCKER_PRODUCTION" | base64 | tr -d '\n')" ENV_DOCKER_PRODUCTION_RAW_B64="$(printf '%s' "$ENV_DOCKER_PRODUCTION" | base64 | tr -d '\n')"
STRIPE_API_KEY_B64="$(printf '%s' "$STRIPE_API_KEY" | base64 | tr -d '\n')"
STRIPE_WEBHOOK_SECRET_B64="$(printf '%s' "$STRIPE_WEBHOOK_SECRET" | base64 | tr -d '\n')"
REGISTRY_USERNAME="${REGISTRY_USERNAME:-${REGISTRY_USER:-}}" REGISTRY_USERNAME="${REGISTRY_USERNAME:-${REGISTRY_USER:-}}"
REGISTRY_PASSWORD="${REGISTRY_PASSWORD:-${REGISTRY_TOKEN:-}}" REGISTRY_PASSWORD="${REGISTRY_PASSWORD:-${REGISTRY_TOKEN:-}}"
REGISTRY_PASSWORD_B64="$(printf '%s' "$REGISTRY_PASSWORD" | base64 | tr -d '\n')" REGISTRY_PASSWORD_B64="$(printf '%s' "$REGISTRY_PASSWORD" | base64 | tr -d '\n')"
@@ -464,6 +468,9 @@ jobs:
cp '$DEPLOY_ROOT/.env.docker.production' '$REMOTE_BUILD_DIR/.env.docker.production' cp '$DEPLOY_ROOT/.env.docker.production' '$REMOTE_BUILD_DIR/.env.docker.production'
chmod 600 '$REMOTE_BUILD_DIR/.env.docker.production' chmod 600 '$REMOTE_BUILD_DIR/.env.docker.production'
cd '$REMOTE_BUILD_DIR' cd '$REMOTE_BUILD_DIR'
export STRIPE_API_KEY_B64='$STRIPE_API_KEY_B64'
export STRIPE_WEBHOOK_SECRET_B64='$STRIPE_WEBHOOK_SECRET_B64'
bash scripts/apply-env-secret-overrides.sh .env.docker.production STRIPE_API_KEY STRIPE_WEBHOOK_SECRET
export APP_IMAGE='$DEPLOY_REGISTRY_HOST/$IMAGE_REPOSITORY' export APP_IMAGE='$DEPLOY_REGISTRY_HOST/$IMAGE_REPOSITORY'
export IMAGE_TAG='$IMAGE_TAG' export IMAGE_TAG='$IMAGE_TAG'
export REGISTRY_HOST='$DEPLOY_REGISTRY_HOST' export REGISTRY_HOST='$DEPLOY_REGISTRY_HOST'
+2 -1
View File
@@ -86,6 +86,7 @@ MAIL_REPLY_TO_ADDRESS=rentaldrivego@gmail.com
MAIL_REPLY_TO_NAME=RentalDriveGo MAIL_REPLY_TO_NAME=RentalDriveGo
# Stripe subscription checkout # Stripe subscription checkout
# Prefer a restricted API key (rk_) with the minimum Billing/Checkout permissions. # Prefer a live restricted API key (rk_live_) with the minimum Billing/Checkout permissions.
# Gitea deploys can override these from STRIPE_API_KEY and STRIPE_WEBHOOK_SECRET secrets.
STRIPE_API_KEY=placeholder STRIPE_API_KEY=placeholder
STRIPE_WEBHOOK_SECRET=placeholder STRIPE_WEBHOOK_SECRET=placeholder
+2 -2
View File
@@ -233,8 +233,8 @@ validate_prod_env_file() {
exit 1 exit 1
fi fi
if [[ "${stripe_api_key}" != sk_* && "${stripe_api_key}" != rk_* ]]; then if [[ "${stripe_api_key}" != sk_live_* && "${stripe_api_key}" != rk_live_* ]]; then
echo "Invalid STRIPE_API_KEY in ${ENV_FILE}. It must start with sk_ or rk_." >&2 echo "Invalid STRIPE_API_KEY in ${ENV_FILE}. It must start with sk_live_ or rk_live_ for production billing." >&2
exit 1 exit 1
fi fi
+78
View File
@@ -0,0 +1,78 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
Usage:
apply-env-secret-overrides.sh <env-file> <KEY> [KEY...]
For each KEY, this script reads KEY_B64 from the environment, base64-decodes it,
and upserts KEY=<decoded value> in <env-file>. Empty KEY_B64 values are ignored.
EOF
}
if [[ $# -lt 2 ]]; then
usage >&2
exit 1
fi
env_file="$1"
shift
if [[ ! -f "${env_file}" ]]; then
echo "Missing env file: ${env_file}" >&2
exit 1
fi
upsert_env_value() {
local key="$1"
local value="$2"
local tmp_file
tmp_file="$(mktemp "${env_file}.tmp.XXXXXX")"
awk -v key="${key}" -v value="${value}" '
BEGIN {
updated = 0
}
/^[[:space:]]*#/ || index($0, "=") == 0 {
print
next
}
{
name = $1
sub(/=.*/, "", name)
sub(/^[[:space:]]*export[[:space:]]+/, "", name)
gsub(/^[[:space:]]+|[[:space:]]+$/, "", name)
if (name == key) {
print key "=" value
updated = 1
next
}
print
}
END {
if (!updated) {
print key "=" value
}
}
' "${env_file}" > "${tmp_file}"
mv "${tmp_file}" "${env_file}"
}
for key in "$@"; do
encoded_var="${key}_B64"
encoded_value="${!encoded_var:-}"
if [[ -z "${encoded_value}" ]]; then
continue
fi
if ! decoded_value="$(printf '%s' "${encoded_value}" | base64 -d)"; then
echo "Invalid base64 value in ${encoded_var}" >&2
exit 1
fi
upsert_env_value "${key}" "${decoded_value}"
done
+2 -2
View File
@@ -228,8 +228,8 @@ validate_prod_env_file() {
exit 1 exit 1
fi fi
if [[ "${stripe_api_key}" != sk_* && "${stripe_api_key}" != rk_* ]]; then if [[ "${stripe_api_key}" != sk_live_* && "${stripe_api_key}" != rk_live_* ]]; then
echo "Invalid STRIPE_API_KEY in ${ENV_FILE}. It must start with sk_ or rk_." >&2 echo "Invalid STRIPE_API_KEY in ${ENV_FILE}. It must start with sk_live_ or rk_live_ for production billing." >&2
exit 1 exit 1
fi fi