Skip to content

Instantly share code, notes, and snippets.

@dirumahrafif
Last active August 14, 2025 14:32
Show Gist options
  • Save dirumahrafif/b045fd561131375a602eadce4931b51a to your computer and use it in GitHub Desktop.
Save dirumahrafif/b045fd561131375a602eadce4931b51a to your computer and use it in GitHub Desktop.

Revisions

  1. dirumahrafif revised this gist Jun 27, 2025. 1 changed file with 12 additions and 15 deletions.
    27 changes: 12 additions & 15 deletions github-action.yml
    Original file line number Diff line number Diff line change
    @@ -26,13 +26,6 @@ jobs:
    CONTAINER="laravel_app"
    BRANCH="deploy-github"
    echo "APP_PORT=${{ secrets.APP_PORT }}" >> "$DIR/.env.deploy"
    echo "DB_ROOT_PASSWORD=${{ secrets.DB_ROOT_PASSWORD }}" >> "$DIR/.env.deploy"
    echo "DB_HOST=${{ secrets.DB_HOST }}" >> "$DIR/.env.deploy"
    echo "DB_NAME=${{ secrets.DB_NAME }}" >> "$DIR/.env.deploy"
    echo "DB_USERNAME=${{ secrets.DB_USERNAME }}" >> "$DIR/.env.deploy"
    echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> "$DIR/.env.deploy"
    echo "Cek git"
    if ! command -v git &>/dev/null; then
    echo "Install git..."
    @@ -69,26 +62,30 @@ jobs:
    echo "Menyimpan .env untuk Laravel"
    echo "${{ secrets.LARAVEL_ENV }}" > ${{ secrets.VPS_PATH }}/${{ secrets.LARAVEL_DIR }}/.env
    echo "Menyiapkan environment variables untuk Docker Compose"
    echo "APP_PORT=${{ secrets.APP_PORT }}" >> "$DIR/.env.deploy"
    echo "DB_ROOT_PASSWORD=${{ secrets.DB_ROOT_PASSWORD }}" >> "$DIR/.env.deploy"
    echo "DB_HOST=${{ secrets.DB_HOST }}" >> "$DIR/.env.deploy"
    echo "DB_NAME=${{ secrets.DB_NAME }}" >> "$DIR/.env.deploy"
    echo "DB_USERNAME=${{ secrets.DB_USERNAME }}" >> "$DIR/.env.deploy"
    echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> "$DIR/.env.deploy"
    echo "Masuk direktori $DIR";
    cd $DIR
    echo "Restart Docker Compose"
    UID=$(id -u) GID=$(id -g) docker compose down
    UID=$(id -u) GID=$(id -g) docker compose --env-file .env.deploy up -d --build
    docker compose down
    docker compose --env-file .env.deploy up -d --build
    echo "Menunggu Laravel siap..."
    until docker exec $CONTAINER php artisan --version > /dev/null 2>&1; do
    echo "Menunggu Laravel container..."
    docker container start $CONTAINER
    sleep 2
    done
    docker logs $CONTAINER
    echo "Laravel siap!"
    echo "Laravel siap!"
    echo "composer install"
    docker exec $CONTAINER composer install --optimize-autoloader --no-dev
    echo "buat key"
    docker exec $CONTAINER php artisan key:generate
    echo "artisan migrate"
    docker exec $CONTAINER php artisan migrate --force
  2. dirumahrafif revised this gist Jun 27, 2025. 1 changed file with 9 additions and 2 deletions.
    11 changes: 9 additions & 2 deletions github-action.yml
    Original file line number Diff line number Diff line change
    @@ -26,6 +26,13 @@ jobs:
    CONTAINER="laravel_app"
    BRANCH="deploy-github"
    echo "APP_PORT=${{ secrets.APP_PORT }}" >> "$DIR/.env.deploy"
    echo "DB_ROOT_PASSWORD=${{ secrets.DB_ROOT_PASSWORD }}" >> "$DIR/.env.deploy"
    echo "DB_HOST=${{ secrets.DB_HOST }}" >> "$DIR/.env.deploy"
    echo "DB_NAME=${{ secrets.DB_NAME }}" >> "$DIR/.env.deploy"
    echo "DB_USERNAME=${{ secrets.DB_USERNAME }}" >> "$DIR/.env.deploy"
    echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> "$DIR/.env.deploy"
    echo "Cek git"
    if ! command -v git &>/dev/null; then
    echo "Install git..."
    @@ -59,15 +66,15 @@ jobs:
    git pull origin $BRANCH
    fi
    echo "Menyimpan .env"
    echo "Menyimpan .env untuk Laravel"
    echo "${{ secrets.LARAVEL_ENV }}" > ${{ secrets.VPS_PATH }}/${{ secrets.LARAVEL_DIR }}/.env
    echo "Masuk direktori $DIR";
    cd $DIR
    echo "Restart Docker Compose"
    UID=$(id -u) GID=$(id -g) docker compose down
    UID=$(id -u) GID=$(id -g) docker compose up -d --build
    UID=$(id -u) GID=$(id -g) docker compose --env-file .env.deploy up -d --build
    echo "Menunggu Laravel siap..."
    until docker exec $CONTAINER php artisan --version > /dev/null 2>&1; do
  3. dirumahrafif created this gist Jun 27, 2025.
    87 changes: 87 additions & 0 deletions github-action.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,87 @@
    name: Deploy Laravel to VPS

    on:
    push:
    branches:
    - '*'

    jobs:
    deploy:
    name: CI/CD to VPS
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Repo
    uses: actions/checkout@v4

    - name: Deploy to VPS via SSH
    uses: appleboy/[email protected]
    with:
    host: ${{ secrets.VPS_HOST }}
    username: ${{ secrets.VPS_USER }}
    key: ${{ secrets.VPS_SSH_KEY }}
    script: |
    REPO="https://${{ secrets.GIT_TOKEN }}@github.com/dirumahrafif/laravel-docker.git"
    DIR="${{ secrets.VPS_PATH }}"
    CONTAINER="laravel_app"
    BRANCH="deploy-github"
    echo "Cek git"
    if ! command -v git &>/dev/null; then
    echo "Install git..."
    sudo apt-get update && sudo apt-get install -y git
    fi
    echo "Cek docker"
    if ! command -v docker &>/dev/null; then
    echo "Install docker..."
    curl -fsSL https://get.docker.com | sh
    sudo usermod -aG docker $USER
    fi
    echo "Cek docker compose"
    if ! docker compose version &>/dev/null; then
    echo "Install docker compose plugin..."
    mkdir -p ~/.docker/cli-plugins
    curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \
    -o ~/.docker/cli-plugins/docker-compose
    chmod +x ~/.docker/cli-plugins/docker-compose
    fi
    echo "Clone atau pull repo"
    if [ ! -d "$DIR/.git" ]; then
    echo "Clone repo..."
    git clone --branch $BRANCH $REPO $DIR
    else
    echo "Pull update..."
    cd $DIR
    git reset --hard HEAD
    git pull origin $BRANCH
    fi
    echo "Menyimpan .env"
    echo "${{ secrets.LARAVEL_ENV }}" > ${{ secrets.VPS_PATH }}/${{ secrets.LARAVEL_DIR }}/.env
    echo "Masuk direktori $DIR";
    cd $DIR
    echo "Restart Docker Compose"
    UID=$(id -u) GID=$(id -g) docker compose down
    UID=$(id -u) GID=$(id -g) docker compose up -d --build
    echo "Menunggu Laravel siap..."
    until docker exec $CONTAINER php artisan --version > /dev/null 2>&1; do
    echo "Menunggu Laravel container..."
    sleep 2
    done
    docker logs $CONTAINER
    echo "Laravel siap!"
    echo "composer install"
    docker exec $CONTAINER composer install --optimize-autoloader --no-dev
    echo "buat key"
    docker exec $CONTAINER php artisan key:generate
    echo "artisan migrate"
    docker exec $CONTAINER php artisan migrate --force