This commit replaces the previous deployment mechanism with a blue-green strategy to lay the groundwork for zero-downtime deployments. Key changes: Introduces a deploy-blue-green.sh script to manage "blue" and "green" container sets, creating versioned releases. Updates the Anubis gatekeeper template to dynamically route traffic based on the active deployment color, allowing for seamless traffic switching. Modifies Docker Compose files to include color-specific labels and environment variables. Adapts the GitHub Actions workflow to execute the new blue-green deployment process. Removes the old, now-obsolete deployment and health check scripts. Note: Automated rollback on health check failure is not yet implemented. Downgrades can be performed manually by switching the active color.
39 lines
No EOL
1.5 KiB
Bash
Executable file
39 lines
No EOL
1.5 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Parse repository name and generate project paths
|
|
# Usage: ./parse-repository-name.sh GITHUB_REPOSITORY
|
|
|
|
if [ $# -eq 0 ]; then
|
|
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" > /dev/stderr
|
|
|
|
if [[ "$GITHUB_REPOSITORY" == *".git" ]]; then
|
|
if [[ "$GITHUB_REPOSITORY" == "https://"* ]]; then
|
|
echo "GITHUB_REPOSITORY ends in .git and is an HTTPS URI" > /dev/stderr
|
|
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/\.git$//' | cut -d'/' -f4-5 | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
|
elif [[ "$GITHUB_REPOSITORY" == "git@"* ]]; then
|
|
echo "GITHUB_REPOSITORY ends in .git and is an SSH URI" > /dev/stderr
|
|
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/\.git$//' | cut -d':' -f2 | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
|
else
|
|
echo "GITHUB_REPOSITORY ends in .git and is not a URI" > /dev/stderr
|
|
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/\.git$//' | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
|
fi
|
|
else
|
|
echo "GITHUB_REPOSITORY is not a URI" > /dev/stderr
|
|
REPO=$(echo "$GITHUB_REPOSITORY" | sed 's/[^a-zA-Z0-9\/-]/-/g')
|
|
fi
|
|
|
|
REPO_NAME_ONLY=$(echo "$REPO" | cut -d'/' -f2)
|
|
REPO_PROJECT_PATH="/srv/${REPO_NAME_ONLY}"
|
|
|
|
# Output in format that can be sourced - using printf %q for proper escaping
|
|
printf "export REPO=%q\n" "$REPO"
|
|
printf "export REPO_NAME_ONLY=%q\n" "$REPO_NAME_ONLY"
|
|
printf "export REPO_PROJECT_PATH=%q\n" "$REPO_PROJECT_PATH" |