Skip to content

Instantly share code, notes, and snippets.

@hendisantika
Created June 14, 2024 01:17
Show Gist options
  • Save hendisantika/8aeed8dde4f381bbb544efa9c2ffbbfb to your computer and use it in GitHub Desktop.
Save hendisantika/8aeed8dde4f381bbb544efa9c2ffbbfb to your computer and use it in GitHub Desktop.
Laravel Deployment to DEV & PROD Server
name: Development Deployment via Rsync
on:
push:
branches:
- master
env:
ENV_DEV: ${{ vars.ENV_DEV }}
ENV_GITHUB: ${{ vars.ENV_GITHUB }}
jobs:
deployment:
name: Development deployment
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.head_ref }}
fetch-depth: 2
- name: Use Node.js
uses: actions/setup-node@v3
- name: Pull environment form variable
run: |
echo "$ENV_DEV" > .env
echo "$ENV_GITHUB" > .env_github
- id: dotenv_github
name: Read dotenv file for github env
uses: falti/dotenv-action@v1.0.4
with:
path: '.env_github'
export-variables: true
log-variables: false
mask-variables: true
keys-case: 'bypass'
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: 'just-a-placeholder-so-we-dont-get-errors'
- name: Adding Known Hosts
run: |
printenv
ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts
- name: Set Owner to Login User
run: |
ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $LOGIN_USER:$LOGIN_USER $PATH_DEPLOY"
- name: Deploy to Server
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rlgoDzvc -i --delete"
SOURCE: "./"
REMOTE_HOST: $SERVER_IP
REMOTE_USER: $SERVER_USERNAME
TARGET: $PATH_DEPLOY
EXCLUDE: "/vendor/, /node_modules/, /storage/, /.github/, /thunder-tests/, /docker/, /.fly/, /.dockerignore, /.env.example "
- name: Setup Application
run: |
ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY/storage/framework/views"
ssh $SERVER_USERNAME@$SERVER_IP "cd $PATH_DEPLOY; composer install;"
ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan migrate --force"
ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize:clear"
ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize"
ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan cache:clear"
- name: Setup Security
run: |
ssh $SERVER_USERNAME@$SERVER_IP "rm -rf $PATH_DEPLOY/.git"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $NGINX_USER:$NGINX_USER $PATH_DEPLOY"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/framework/"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/logs/"
name: Production Deployment via Rsync
on:
push:
tags:
- v[0-9]+.[0-9]+.[0-9]+
env:
ENV_PROD: ${{ vars.ENV_PROD }}
ENV_GITHUB: ${{ vars.ENV_GITHUB }}
jobs:
deployment:
name: Production deployment
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.head_ref }}
fetch-depth: 2
- name: Use Node.js
uses: actions/setup-node@v3
- name: Pull environment form variable
run: |
echo "$ENV_PROD" > .env
echo "$ENV_GITHUB" > .env_github
- id: dotenv_github
name: Read dotenv file for github env
uses: falti/dotenv-action@v1.0.4
with:
path: '.env_github'
export-variables: true
log-variables: false
mask-variables: true
keys-case: 'bypass'
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: 'just-a-placeholder-so-we-dont-get-errors'
- name: Adding Known Hosts
run: |
printenv
ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts
- name: Set Owner to Login User
run: |
ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $LOGIN_USER:$LOGIN_USER $PATH_DEPLOY"
- name: Deploy to Server
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-rlgoDzvc -i --delete"
SOURCE: "./"
REMOTE_HOST: $SERVER_IP
REMOTE_USER: $SERVER_USERNAME
TARGET: $PATH_DEPLOY
EXCLUDE: "/vendor/, /node_modules/, /storage/app, /.github/, /thunder-tests/, /docker/, /.fly/, /.dockerignore, /.env.example "
- name: Setup Application
run: |
ssh $SERVER_USERNAME@$SERVER_IP "cd $PATH_DEPLOY; composer install;"
ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan migrate --force"
ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize:clear"
- name: Setup Security
run: |
ssh $SERVER_USERNAME@$SERVER_IP "rm -rf $PATH_DEPLOY/.git"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $NGINX_USER:$NGINX_USER $PATH_DEPLOY"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/logs"
ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/framework"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment