Files
Wdipl-react/.gitea/workflows/deploy.yml
Rajendra Reddy 6141017742
Some checks failed
Deployment / deploy (push) Has been cancelled
Update .gitea/workflows/deploy.yml
2026-04-16 08:19:17 +00:00

140 lines
5.7 KiB
YAML

name: Deployment
on:
push:
branches:
- beta
- testing
- staging
- production
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code in Runner
uses: actions/checkout@v3
- name: Branch and Folder Selection for Deployment
run: |
BRANCH_NAME=${{ gitea.ref_name }}
case $BRANCH_NAME in
beta)
echo "PROJECT_FOLDER=/home/user/app-beta" >> $GITHUB_ENV
echo "AUTH_TYPE=passwd" >> $GITHUB_ENV
echo "PM2_ID=app-beta[3000]" >> $GITHUB_ENV
echo "HOST=${{ secrets.BETA_SERVER_HOST }}" >> $GITHUB_ENV
echo "USERNAME=${{ secrets.BETA_SERVER_USERNAME }}" >> $GITHUB_ENV
echo "PASSWORD=${{ secrets.BETA_SERVER_PASSWORD }}" >> $GITHUB_ENV
echo "PORT=${{ secrets.BETA_SERVER_PORT }}" >> $GITHUB_ENV
;;
testing)
echo "PROJECT_FOLDER=/home/user/app-testing" >> $GITHUB_ENV
echo "AUTH_TYPE=passwd" >> $GITHUB_ENV
echo "PM2_ID=app-testing[3001]" >> $GITHUB_ENV
echo "HOST=${{ secrets.BETA_SERVER_HOST }}" >> $GITHUB_ENV
echo "USERNAME=${{ secrets.BETA_SERVER_USERNAME }}" >> $GITHUB_ENV
echo "PASSWORD=${{ secrets.BETA_SERVER_PASSWORD }}" >> $GITHUB_ENV
echo "PORT=${{ secrets.BETA_SERVER_PORT }}" >> $GITHUB_ENV
;;
staging)
echo "PROJECT_FOLDER=/var/www/app-staging" >> $GITHUB_ENV
echo "AUTH_TYPE=key" >> $GITHUB_ENV
echo "PM2_ID=app-staging[4000]" >> $GITHUB_ENV
echo "HOST=${{ secrets.STAGING_SERVER_HOST }}" >> $GITHUB_ENV
echo "USERNAME=${{ secrets.STAGING_SERVER_USERNAME }}" >> $GITHUB_ENV
echo "PORT=${{ secrets.STAGING_SERVER_PORT }}" >> $GITHUB_ENV
;;
production)
echo "PROJECT_FOLDER=/home/reactjs/Wdipl-react" >> $GITHUB_ENV
echo "AUTH_TYPE=passwd" >> $GITHUB_ENV
#echo "PM2_ID=wdipl_frontend[3001]" >> $GITHUB_ENV
echo "HOST=${{ secrets.PRODUCTION_SERVER_HOST }}" >> $GITHUB_ENV
echo "USERNAME=${{ secrets.PRODUCTION_SERVER_USERNAME }}" >> $GITHUB_ENV
echo "PASSWORD=${{ secrets.PRODUCTION_SERVER_PASSWORD }}" >> $GITHUB_ENV
echo "PORT=${{ secrets.PRODUCTION_SERVER_PORT }}" >> $GITHUB_ENV
;;
*)
echo "Unknown Branch"
exit 1
;;
esac
echo "BRANCH_NAME=${{ gitea.ref_name }}" >> $GITHUB_ENV
echo "SELECTED BRANCH : $BRANCH_NAME"
echo "SELECTED FOLDER : $PROJECT_FOLDER"
- name: Deployment via SSH (Password)
if: env.AUTH_TYPE == 'passwd'
uses: appleboy/ssh-action@v1
with:
host: ${{ env.HOST }}
username: ${{ env.USERNAME }}
password: ${{ env.PASSWORD }}
port: ${{ env.PORT }}
envs: BRANCH_NAME,PROJECT_FOLDER,PM2_ID
script: |
set -xe
# PM2_ID supports names like: app-name[port]
# Always wrap in quotes to avoid shell issues
echo $BRANCH_NAME
echo $PROJECT_FOLDER
cd $PROJECT_FOLDER
git fetch
git reset --hard origin/$BRANCH_NAME
git pull origin $BRANCH_NAME
echo "Latest commits:"
git log --oneline -5
echo "Installing dependencies..."
npm i && npm run build
#echo "Reloading PM2..."
#pm2 reload "$PM2_ID"
echo "Recent Logs:"
pm2 logs "$PM2_ID" --lines 50 --nostream
- name: Deployment via SSH (Key)
if: env.AUTH_TYPE == 'key'
uses: appleboy/ssh-action@v1
with:
host: ${{ env.HOST }}
username: ${{ env.USERNAME }}
key: ${{ gitea.ref_name == 'production' && secrets.PRODUCTION_SERVER_KEY || secrets.STAGING_SERVER_KEY }}
port: ${{ env.PORT }}
envs: BRANCH_NAME,PROJECT_FOLDER,PM2_ID
script: |
set -xe
echo $BRANCH_NAME
echo $PROJECT_FOLDER
cd $PROJECT_FOLDER
git fetch
git reset --hard origin/$BRANCH_NAME
git pull origin $BRANCH_NAME
echo "Latest commits:"
git log --oneline -5
echo "Installing dependencies..."
npm i && npm run build
echo "Reloading PM2..."
pm2 reload "$PM2_ID"
echo "Recent Logs:"
pm2 logs "$PM2_ID" --lines 50 --nostream