[LINUX] deploy local repository - fourslickz/notes GitHub Wiki
scripts
nano deploy_repository.sh
#!/bin/bash
# initialize local repo
#
# created at 2025-04-21
# Usage check
if [ -z "$1" ]; then
echo "Usage: $0 <project-name> [branch-name]"
exit 1
fi
# Constants
ORGANIZATION="IT-RIN-AYOSATU"
SSH_USER="pramuka"
# Input variables
PROJECT_NAME="$1"
BRANCH_NAME="${2:-dev}" # Default to 'dev' if not provided
# Derived variables
WEB_ROOT="/var/www/html/qa"
DEPLOY_DIR="$WEB_ROOT/$PROJECT_NAME"
BARE_REPO_DIR="/home/$SSH_USER/qa/${PROJECT_NAME}.qa.git"
CLONE_DIR="/home/$SSH_USER/cicd/dev"
REPO_NAME=$(echo "$PROJECT_NAME" | tr '[:lower:]' '[:upper:]') # e.g. be-service-dewan-kerja -> BE-SERVICE-DEWAN-KERJA
REMOTE_REPO="[email protected]:$ORGANIZATION/$REPO_NAME.git"
LOCAL_REMOTE_NAME="bare-repo-dev"
SSH_URL="ssh://$SSH_USER@localhost:2244/home/$SSH_USER/live/${PROJECT_NAME}.qa.git"
# Create deployment and bare repo directories
mkdir -p "$DEPLOY_DIR"
chown -R $SSH_USER:SSH_USER $DEPLOY_DIR
mkdir -p "$BARE_REPO_DIR"
chown -R $SSH_USER:SSH_USER $DEPLOY_DIR
# Initialize bare repository and setup post-receive hook
cd "$BARE_REPO_DIR"
git init --bare
cat > hooks/post-receive <<EOF
#!/bin/sh
GIT_WORK_TREE=$DEPLOY_DIR git checkout $BRANCH_NAME -f
EOF
chmod +x hooks/post-receive
# Clone repository and add remote
cd "$CLONE_DIR"
git clone "$REMOTE_REPO"
cd "$REPO_NAME"
git remote add "$LOCAL_REMOTE_NAME" "$SSH_URL"
run
bash delopy_repository.sh projectname