[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