niceify build script
This commit is contained in:
parent
df0a145f3b
commit
f21d20e08c
2 changed files with 33 additions and 4 deletions
101
scripts/publish.sh
Executable file
101
scripts/publish.sh
Executable file
|
@ -0,0 +1,101 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Function to display help text
|
||||
show_help() {
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo
|
||||
echo "Description:"
|
||||
echo " This script automates the process of bumping the version, building a Docker image,"
|
||||
echo " pushing it to the registry, and optionally deploying to production."
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Display this help message and exit"
|
||||
echo " -d, --deploy Deploy to production after building and pushing"
|
||||
echo " --major Bump the major version (x.0.0)"
|
||||
echo " --minor Bump the minor version (0.x.0)"
|
||||
echo " --patch Bump the patch version (0.0.x) [default]"
|
||||
echo
|
||||
echo "Examples:"
|
||||
echo " $0 # Bump patch version, build and push"
|
||||
echo " $0 --minor # Bump minor version, build and push"
|
||||
echo " $0 --major -d # Bump major version, build, push and deploy"
|
||||
echo " $0 --patch --deploy # Bump patch version, build, push and deploy"
|
||||
echo
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
DEPLOY=false
|
||||
VERSION_TYPE="patch" # Default to patch version bump
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
-h|--help) show_help; exit 0 ;;
|
||||
-d|--deploy) DEPLOY=true ;;
|
||||
--major) VERSION_TYPE="major" ;;
|
||||
--minor) VERSION_TYPE="minor" ;;
|
||||
--patch) VERSION_TYPE="patch" ;;
|
||||
*) echo "Unknown option: $arg"; echo "Usage: $0 [-h|--help] [-d|--deploy] [--major|--minor|--patch]"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# CONFIGURATION
|
||||
REGISTRY="docker.botris.dev"
|
||||
USERNAME="johnbotris"
|
||||
IMAGE_NAME="femto-webapp"
|
||||
|
||||
# Add this before the docker build line
|
||||
export VITE_API_URL="https://api.botris.social"
|
||||
|
||||
# Step 0: Ensure clean working directory
|
||||
if [[ -n $(git status --porcelain) ]]; then
|
||||
echo "❌ Uncommitted changes detected. Please commit or stash them before running this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 1: Store current version to revert if needed
|
||||
OLD_VERSION=$(node -p "require('./package.json').version")
|
||||
echo "🔍 Current version: $OLD_VERSION"
|
||||
|
||||
# Step 2: Bump version without Git tag/commit
|
||||
echo "🚀 Bumping $VERSION_TYPE version..."
|
||||
yarn version --$VERSION_TYPE --no-git-tag-version
|
||||
NEW_VERSION=$(node -p "require('./package.json').version")
|
||||
echo "📦 New version: $NEW_VERSION"
|
||||
|
||||
# Step 3: Attempt Docker build
|
||||
echo "🔧 Building Docker image..."
|
||||
|
||||
if ! docker build --build-arg VITE_API_URL="$VITE_API_URL" -t $IMAGE_NAME .; then
|
||||
echo "❌ Docker build failed. Reverting version bump..."
|
||||
git checkout -- package.json yarn.lock
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 4: Tag and push Docker image
|
||||
FULL_IMAGE="$REGISTRY/$USERNAME/$IMAGE_NAME"
|
||||
echo "🏷️ Tagging Docker image..."
|
||||
docker tag $IMAGE_NAME $FULL_IMAGE:$NEW_VERSION
|
||||
docker tag $IMAGE_NAME $FULL_IMAGE:latest
|
||||
|
||||
echo "📤 Pushing Docker images..."
|
||||
docker push $FULL_IMAGE:$NEW_VERSION
|
||||
docker push $FULL_IMAGE:latest
|
||||
|
||||
# Step 5: Commit version bump & tag
|
||||
echo "✅ Committing and tagging version bump..."
|
||||
git add package.json yarn.lock
|
||||
git commit -m "v$NEW_VERSION"
|
||||
git tag "v$NEW_VERSION"
|
||||
git push origin main
|
||||
git push origin "v$NEW_VERSION"
|
||||
|
||||
echo "🎉 Release v$NEW_VERSION complete."
|
||||
|
||||
# Step 6: Deploy if flag is set
|
||||
if [ "$DEPLOY" = true ]; then
|
||||
echo "🚀 Deploying to production..."
|
||||
ssh john@botris.social 'bash /home/john/docker/femto/update.sh'
|
||||
echo "✅ Deployment complete."
|
||||
fi
|
Loading…
Add table
Add a link
Reference in a new issue