Skip to content

Instantly share code, notes, and snippets.

@dirumahrafif
Last active December 27, 2025 03:01
Show Gist options
  • Select an option

  • Save dirumahrafif/b045fd561131375a602eadce4931b51a to your computer and use it in GitHub Desktop.

Select an option

Save dirumahrafif/b045fd561131375a602eadce4931b51a to your computer and use it in GitHub Desktop.
Github action untuk deploy aplikasi Laravel dirumahrafif
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/ssh-action@v1.0.3
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 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"
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
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
@fajaramikom

Copy link
Copy Markdown

mantapppp terimakasih pak, bermanfaat

@aurelioo29

Copy link
Copy Markdown

sangat bermanfaat, muncul juga pas lgi di cari

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment