fix(deploy): correct env vars, docker compose project names, and workflow outputs
- Standardize environment variable from IS_PROD to PROD across all scripts - Add missing -p flag to docker compose commands for consistent project naming - Fix GitHub Actions workflow to use environment vars instead of job outputs - Consolidate metadata setup and fix artifact naming in build/deploy jobs - Correct service paths in docker-compose_core.yml
This commit is contained in:
parent
f20c4f9474
commit
291231c886
9 changed files with 104 additions and 70 deletions
|
|
@ -16,7 +16,7 @@ source "${SCRIPT_DIR}/retry.sh"
|
|||
: "${ENV_FILE_BASE64:?Error: ENV_FILE_BASE64 not set}"
|
||||
: "${CF_PEM_CERT:?Error: CF_PEM_CERT not set}"
|
||||
: "${CF_PEM_CA:?Error: CF_PEM_CA not set}"
|
||||
: "${IS_PROD:?Error: IS_PROD not set}"
|
||||
: "${PROD:?Error: PROD not set}"
|
||||
|
||||
echo "⚙️ Docker host: $DOCKER_HOST"
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ echo "💾 Copy new files to server"
|
|||
if [ -d "./server" ]; then
|
||||
retry scp -pr ./server/* "deploy:${NEW_RELEASE_PATH}/"
|
||||
else
|
||||
echo "⚠️ No server directory found, erroring out"
|
||||
echo "⚠️ No server directory found, error"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -61,12 +61,12 @@ printf "%s" "$CF_PEM_CA" | ssh deploy "cat > '${NEW_RELEASE_PATH}/certs/ca.pem'
|
|||
echo "🔄 Prepare deployment (stop current containers)"
|
||||
# Copy script to remote and execute with parameters
|
||||
scp "${SCRIPT_DIR}/prepare-deployment.sh" deploy:/tmp/
|
||||
ssh deploy "chmod +x /tmp/prepare-deployment.sh && /tmp/prepare-deployment.sh '${REPO_PROJECT_PATH}' '${IS_PROD}' '${CURRENT_LINK_PATH}'"
|
||||
ssh deploy "chmod +x /tmp/prepare-deployment.sh && /tmp/prepare-deployment.sh '${REPO_PROJECT_PATH}' '${PROD}' '${CURRENT_LINK_PATH}'"
|
||||
ssh deploy "rm -f /tmp/prepare-deployment.sh"
|
||||
|
||||
echo "📝 Save deployment metadata"
|
||||
ssh deploy "echo '${DEPLOYMENT_TIMESTAMP}' > '${NEW_RELEASE_PATH}/.deployment_version'"
|
||||
ssh deploy "echo '${IS_PROD}' > '${NEW_RELEASE_PATH}/.deployment_env'"
|
||||
ssh deploy "echo '${PROD}' > '${NEW_RELEASE_PATH}/.deployment_env'"
|
||||
|
||||
# Save previous version info for potential rollback
|
||||
ssh deploy "if [ -L '${CURRENT_LINK_PATH}' ]; then readlink -f '${CURRENT_LINK_PATH}' > '${NEW_RELEASE_PATH}/.previous_version'; fi"
|
||||
|
|
@ -109,10 +109,10 @@ ssh deploy "ln -sfn '${NEW_RELEASE_PATH}' '${CURRENT_LINK_PATH}'"
|
|||
# fi
|
||||
|
||||
echo "🚀 Start the new containers"
|
||||
if [ "$IS_PROD" = "true" ]; then
|
||||
retry ssh deploy "cd '${CURRENT_LINK_PATH}' && docker compose -f docker-compose_core.yml -f docker-compose_web.yml up -d --no-build"
|
||||
if [ "$PROD" = "true" ]; then
|
||||
retry ssh deploy "cd '${CURRENT_LINK_PATH}' && docker compose -f docker-compose_core.yml -f docker-compose_web.yml -p pkmntrade-club up -d --no-build"
|
||||
else
|
||||
retry ssh deploy "cd '${CURRENT_LINK_PATH}' && docker compose -f docker-compose_core.yml -f docker-compose_web.yml -f docker-compose_staging.yml up -d --no-build"
|
||||
retry ssh deploy "cd '${CURRENT_LINK_PATH}' && docker compose -f docker-compose_core.yml -f docker-compose_web.yml -f docker-compose_staging.yml -p pkmntrade-club up -d --no-build"
|
||||
fi
|
||||
|
||||
echo "🧹 Prune unused Docker resources"
|
||||
|
|
|
|||
|
|
@ -2,22 +2,22 @@
|
|||
set -euo pipefail
|
||||
|
||||
# Generate Docker tags based on git ref and environment
|
||||
# Usage: ./generate-docker-tags.sh IMAGE_BASE GIT_SHA GIT_REF IS_PROD
|
||||
# Usage: ./generate-docker-tags.sh IMAGE_BASE GIT_SHA GIT_REF PROD
|
||||
|
||||
if [ $# -ne 4 ]; then
|
||||
echo "Error: Invalid number of arguments"
|
||||
echo "Usage: $0 IMAGE_BASE GIT_SHA GIT_REF IS_PROD"
|
||||
echo "Error: Invalid number of arguments" > /dev/stderr
|
||||
echo "Usage: $0 IMAGE_BASE GIT_SHA GIT_REF PROD" > /dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IMAGE_BASE="$1"
|
||||
GIT_SHA="$2"
|
||||
GIT_REF="$3"
|
||||
IS_PROD="$4"
|
||||
PROD="$4"
|
||||
|
||||
# Validate inputs
|
||||
if [ -z "$IMAGE_BASE" ] || [ -z "$GIT_SHA" ]; then
|
||||
echo "Error: IMAGE_BASE and GIT_SHA cannot be empty"
|
||||
echo "Error: IMAGE_BASE and GIT_SHA cannot be empty" > /dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ if [[ "$GIT_REF" =~ ^refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)(-.*)?$ ]]; then
|
|||
PATCH="${BASH_REMATCH[3]}"
|
||||
PRERELEASE="${BASH_REMATCH[4]}"
|
||||
|
||||
if [[ -z "$PRERELEASE" ]] && [[ "$IS_PROD" == "true" ]]; then
|
||||
if [[ -z "$PRERELEASE" ]] && [[ "$PROD" == "true" ]]; then
|
||||
echo "${IMAGE_BASE}:latest"
|
||||
echo "${IMAGE_BASE}:stable"
|
||||
[[ "$MAJOR" -gt 0 ]] && echo "${IMAGE_BASE}:v${MAJOR}"
|
||||
|
|
@ -43,7 +43,7 @@ if [[ "$GIT_REF" =~ ^refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)(-.*)?$ ]]; then
|
|||
echo "${IMAGE_BASE}:staging"
|
||||
echo "${IMAGE_BASE}:v${MAJOR}.${MINOR}.${PATCH}-prerelease"
|
||||
fi
|
||||
elif [[ "$IS_PROD" == "false" ]]; then
|
||||
elif [[ "$PROD" == "false" ]]; then
|
||||
echo "${IMAGE_BASE}:latest-staging"
|
||||
echo "${IMAGE_BASE}:staging"
|
||||
fi
|
||||
|
|
@ -2,16 +2,16 @@
|
|||
set -euo pipefail
|
||||
|
||||
# Perform health check and rollback if necessary
|
||||
# Usage: ./health-check-and-rollback.sh REPO_PROJECT_PATH IS_PROD HEALTH_CHECK_URL [MAX_ATTEMPTS]
|
||||
# Usage: ./health-check-and-rollback.sh REPO_PROJECT_PATH PROD HEALTH_CHECK_URL [MAX_ATTEMPTS]
|
||||
|
||||
if [ $# -lt 3 ]; then
|
||||
echo "Error: Invalid number of arguments"
|
||||
echo "Usage: $0 REPO_PROJECT_PATH IS_PROD HEALTH_CHECK_URL [MAX_ATTEMPTS]"
|
||||
echo "Usage: $0 REPO_PROJECT_PATH PROD HEALTH_CHECK_URL [MAX_ATTEMPTS]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_PROJECT_PATH="$1"
|
||||
IS_PROD="$2"
|
||||
PROD="$2"
|
||||
HEALTH_CHECK_URL="$3"
|
||||
MAX_ATTEMPTS="${4:-30}"
|
||||
|
||||
|
|
@ -60,22 +60,22 @@ while [ "$ATTEMPT" -lt "$MAX_ATTEMPTS" ]; do
|
|||
# Stop failed deployment containers
|
||||
cd "$CURRENT_LINK_PATH"
|
||||
echo "Stopping failed deployment containers..."
|
||||
docker compose -f docker-compose_web.yml down || true
|
||||
if [ "$IS_PROD" = "false" ]; then
|
||||
docker compose -f docker-compose_staging.yml down || true
|
||||
docker compose -f docker-compose_web.yml -p pkmntrade-club down || true
|
||||
if [ "$PROD" = "false" ]; then
|
||||
docker compose -f docker-compose_staging.yml -p pkmntrade-club down || true
|
||||
fi
|
||||
docker compose -f docker-compose_core.yml down || true
|
||||
docker compose -f docker-compose_core.yml -p pkmntrade-club down || true
|
||||
|
||||
# Switch symlink back to previous version
|
||||
ln -sfn "$PREVIOUS_VERSION_PATH" "$CURRENT_LINK_PATH"
|
||||
|
||||
# Start previous version containers
|
||||
cd "$CURRENT_LINK_PATH"
|
||||
docker compose -f docker-compose_core.yml up -d --no-build
|
||||
if [ "$IS_PROD" = "true" ]; then
|
||||
docker compose -f docker-compose_web.yml up -d --no-build
|
||||
docker compose -f docker-compose_core.yml -p pkmntrade-club up -d --no-build
|
||||
if [ "$PROD" = "true" ]; then
|
||||
docker compose -f docker-compose_web.yml -p pkmntrade-club up -d --no-build
|
||||
else
|
||||
docker compose -f docker-compose_web.yml -f docker-compose_staging.yml up -d --no-build
|
||||
docker compose -f docker-compose_web.yml -f docker-compose_staging.yml -p pkmntrade-club up -d --no-build
|
||||
fi
|
||||
|
||||
echo "✅ Rollback completed to version: ${PREVIOUS_VERSION}"
|
||||
|
|
|
|||
|
|
@ -71,17 +71,17 @@ case "$COMMAND" in
|
|||
|
||||
# Read environment from target version
|
||||
if [ -f "${TARGET_PATH}/.deployment_env" ]; then
|
||||
IS_PROD=$(cat "${TARGET_PATH}/.deployment_env")
|
||||
PROD=$(cat "${TARGET_PATH}/.deployment_env")
|
||||
else
|
||||
echo "Warning: Could not determine environment, assuming staging"
|
||||
IS_PROD="false"
|
||||
PROD="false"
|
||||
fi
|
||||
|
||||
# Stop current containers
|
||||
if [ -L "$CURRENT_LINK_PATH" ] && [ -d "$CURRENT_LINK_PATH" ]; then
|
||||
cd "$CURRENT_LINK_PATH"
|
||||
docker compose -f docker-compose_web.yml down || true
|
||||
[ "$IS_PROD" = "false" ] && docker compose -f docker-compose_staging.yml down || true
|
||||
[ "$PROD" = "false" ] && docker compose -f docker-compose_staging.yml down || true
|
||||
docker compose -f docker-compose_core.yml down || true
|
||||
fi
|
||||
|
||||
|
|
@ -91,7 +91,7 @@ case "$COMMAND" in
|
|||
# Start containers
|
||||
cd "$CURRENT_LINK_PATH"
|
||||
docker compose -f docker-compose_core.yml up -d --no-build
|
||||
if [ "$IS_PROD" = "true" ]; then
|
||||
if [ "$PROD" = "true" ]; then
|
||||
docker compose -f docker-compose_web.yml up -d --no-build
|
||||
else
|
||||
docker compose -f docker-compose_web.yml -f docker-compose_staging.yml up -d --no-build
|
||||
|
|
|
|||
|
|
@ -5,25 +5,25 @@ set -euo pipefail
|
|||
# Usage: ./parse-repository-name.sh GITHUB_REPOSITORY
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Error: No repository name provided"
|
||||
echo "Usage: $0 GITHUB_REPOSITORY"
|
||||
echo "Error: No repository name provided" > /dev/stderr
|
||||
echo "Usage: $0 GITHUB_REPOSITORY" > /dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GITHUB_REPOSITORY="$1"
|
||||
|
||||
echo "GITHUB_REPOSITORY: $GITHUB_REPOSITORY"
|
||||
echo "GITHUB_REPOSITORY: $GITHUB_REPOSITORY" > /dev/stderr
|
||||
|
||||
if [[ "$GITHUB_REPOSITORY" == *".git" ]]; then
|
||||
if [[ "$GITHUB_REPOSITORY" == "https://"* ]]; then
|
||||
echo "GITHUB_REPOSITORY ends in .git and is a URL"
|
||||
echo "GITHUB_REPOSITORY ends in .git and is a URL" > /dev/stderr
|
||||
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/\.git$//' | cut -d'/' -f4-5 | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
||||
else
|
||||
echo "GITHUB_REPOSITORY ends in .git and is not a URL"
|
||||
echo "GITHUB_REPOSITORY ends in .git and is not a URL" > /dev/stderr
|
||||
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/\.git$//' | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
||||
fi
|
||||
else
|
||||
echo "GITHUB_REPOSITORY is not a URL"
|
||||
echo "GITHUB_REPOSITORY is not a URL" > /dev/stderr
|
||||
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@
|
|||
set -euo pipefail
|
||||
|
||||
# Prepare deployment by stopping containers
|
||||
# Usage: ./prepare-deployment.sh REPO_PROJECT_PATH IS_PROD CURRENT_LINK_PATH
|
||||
# Usage: ./prepare-deployment.sh REPO_PROJECT_PATH PROD CURRENT_LINK_PATH
|
||||
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "Error: Invalid number of arguments"
|
||||
echo "Usage: $0 REPO_PROJECT_PATH IS_PROD CURRENT_LINK_PATH"
|
||||
echo "Usage: $0 REPO_PROJECT_PATH PROD CURRENT_LINK_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_PROJECT_PATH="$1"
|
||||
IS_PROD="$2"
|
||||
PROD="$2"
|
||||
CURRENT_LINK_PATH="$3"
|
||||
|
||||
# Ensure base directory exists
|
||||
|
|
@ -27,15 +27,15 @@ if [ -L "$CURRENT_LINK_PATH" ] && [ -d "$CURRENT_LINK_PATH" ]; then
|
|||
|
||||
# Stop containers
|
||||
if [ -f "docker-compose_web.yml" ]; then
|
||||
docker compose -f docker-compose_web.yml down || true
|
||||
docker compose -f docker-compose_web.yml -p pkmntrade-club down || true
|
||||
fi
|
||||
|
||||
if [ "$IS_PROD" = "false" ] && [ -f "docker-compose_staging.yml" ]; then
|
||||
docker compose -f docker-compose_staging.yml down || true
|
||||
if [ "$PROD" = "false" ] && [ -f "docker-compose_staging.yml" ]; then
|
||||
docker compose -f docker-compose_staging.yml -p pkmntrade-club down || true
|
||||
fi
|
||||
|
||||
if [ -f "docker-compose_core.yml" ]; then
|
||||
docker compose -f docker-compose_core.yml down || true
|
||||
docker compose -f docker-compose_core.yml -p pkmntrade-club down || true
|
||||
fi
|
||||
|
||||
echo "✅ Containers stopped"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue