Previously I added a blog on deploying a laravel application on Hostinger. This is an extension on this.
This is the previous article. - Effortless Laravel Deployment on Hostinger Using Git: A Step-by-Step Guide
GitHub Actions is a powerful automation tool that allows you to streamline your development workflow. When you push a change to a GitHub repository branch, GitHub can automatically trigger a workflow to deploy that branch to your server. This seamless process ensures continuous integration and deployment without manual intervention.
Creating a Deployment Script for GitHub Actions
Let's create a deploy.sh file and add all the necessary laravel related commands here.
First login via SSH and go to your site location
cd /home/youruser/domains/yourdomain.hostingersite.com
Then create deploy.sh file.
nano deploy.sh
Add this to file
#!/bin/bash
# Define a function to check the status of the last executed command
check_status() {
if [ $? -eq 0 ]; then
echo "✅ $1 succeeded."
else
echo "❌ $1 failed."
exit 1
fi
}
composer2 install --no-interaction
check_status "Composer Install"
npm install
check_status "NPM Install"
npm run build
check_status "NPM Run Build"
# Run migrations
php artisan migrate --force
check_status "PHP Artisan Migrate"
# Run database seeders
php artisan db:seed --force
check_status "PHP Artisan DB Seed"
# Clear caches
php artisan config:clear
check_status "PHP Artisan Config Clear"
php artisan cache:clear
check_status "PHP Artisan Cache Clear"
php artisan view:clear
check_status "PHP Artisan View Clear"
php artisan route:clear
check_status "PHP Artisan Route Clear"
# Rebuild caches
php artisan config:cache
check_status "PHP Artisan Config Cache"
php artisan route:cache
check_status "PHP Artisan Route Cache"
php artisan view:cache
check_status "PHP Artisan View Cache"
echo "✅ Deployment complete."
You will see all the Laravel commands here.
Create the GitHub Actions workflow file
Let's create a GitHub Actions workflow file that automates the deployment of your project to a Hostinger server whenever changes are pushed to a particular branch
Add this file to you github repo .github\workflows\maindeploy.yml. And add this content
name: Deploy to Hostinger Server
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install sshpass (if using password authentication)
run: sudo apt-get install -y sshpass
- name: Deploy to Hostinger via SSH with custom port
env:
HOSTINGER_IP: ${{ secrets.HOSTINGER_IP }}
HOSTINGER_PORT: ${{ secrets.HOSTINGER_PORT }}
HOSTINGER_USERNAME: ${{ secrets.HOSTINGER_USERNAME }}
HOSTINGER_PASSWORD: ${{ secrets.HOSTINGER_PASSWORD }}
run: |
# Specify custom port with -P for scp
sshpass -p "$HOSTINGER_PASSWORD" scp -P $HOSTINGER_PORT -o StrictHostKeyChecking=no -r * $HOSTINGER_USERNAME@$HOSTINGER_IP:/home/youruser/domains/yourdomain.hostingersite.com
# Specify custom port with -p for ssh
sshpass -p "$HOSTINGER_PASSWORD" ssh -p $HOSTINGER_PORT -o StrictHostKeyChecking=no $HOSTINGER_USERNAME@$HOSTINGER_IP "cd /home/youruser/domains/yourdomain.hostingersite.com && bash deploy.sh"
You can see "/home/youruser/domains/yourdomain.hostingersite.com" in two places. You must change this to your actual location. More about this you can find in first video.
And remember that here you are using default main branch. if you need change the branch here
on:
push:
branches:
- main
Add repository secret values
You can see this section
env:
HOSTINGER_IP: ${{ secrets.HOSTINGER_IP }}
HOSTINGER_PORT: ${{ secrets.HOSTINGER_PORT }}
HOSTINGER_USERNAME: ${{ secrets.HOSTINGER_USERNAME }}
HOSTINGER_PASSWORD: ${{ secrets.HOSTINGER_PASSWORD }}
You must add these values as github repository secrets. Let me show how. First go to repository and got to Settings -> Secrets and variables -> Actions and you can add these values.
That's it and when you see the actions tab you can see the action status.
Thanks and that's all you have to do.
Top comments (0)