Created
June 14, 2024 01:17
-
-
Save hendisantika/8aeed8dde4f381bbb544efa9c2ffbbfb to your computer and use it in GitHub Desktop.
Laravel Deployment to DEV & PROD Server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/[email protected] | |
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/" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/[email protected] | |
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