add deploy config
Deploy Search Typesense / deploy (push) Successful in 51s
Details
Deploy Search Typesense / deploy (push) Successful in 51s
Details
This commit is contained in:
parent
4a50969892
commit
60eb8b5e0a
|
|
@ -0,0 +1,79 @@
|
||||||
|
name: Deploy Search Typesense
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- staging
|
||||||
|
- production
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# Route each branch to a specific directory and PM2 environment
|
||||||
|
- name: Setup Environment Variables
|
||||||
|
run: |
|
||||||
|
if [[ "${{ github.ref_name }}" == "production" ]]; then
|
||||||
|
TARGET="/var/www/search.carpa.com"
|
||||||
|
echo "PM2_ENV=production" >> $GITHUB_ENV
|
||||||
|
elif [[ "${{ github.ref_name }}" == "staging" ]]; then
|
||||||
|
TARGET="/var/www/dev.search.carpa.com"
|
||||||
|
echo "PM2_ENV=staging" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
|
||||||
|
PM2_NAME="search-${{ github.ref_name }}"
|
||||||
|
|
||||||
|
echo "TARGET_DIR=$TARGET" >> $GITHUB_ENV
|
||||||
|
echo "PM2_NAME=$PM2_NAME" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
echo "NUXT_PUBLIC_FEEDBACK_WEBHOOK=${{ secrets.NUXT_PUBLIC_FEEDBACK_WEBHOOK }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_RECAPTCHA_SITE_KEY=${{ secrets.NUXT_PUBLIC_RECAPTCHA_SITE_KEY }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_FEEDBACK_MAX_PER_HOUR=${{ secrets.NUXT_PUBLIC_FEEDBACK_MAX_PER_HOUR }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_FEEDBACK_MAX_PER_SESSION=${{ secrets.NUXT_PUBLIC_FEEDBACK_MAX_PER_SESSION }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_FEEDBACK_COOLDOWN_SEC=${{ secrets.NUXT_PUBLIC_FEEDBACK_COOLDOWN_SEC }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_FEEDBACK_MIN_SECONDS=${{ secrets.NUXT_PUBLIC_FEEDBACK_MIN_SECONDS }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_FEEDBACK_TOKEN=${{ secrets.NUXT_FEEDBACK_TOKEN }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_TYPESENSE_URL=${{ secrets.NUXT_PUBLIC_TYPESENSE_URL }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_TYPESENSE_API_KEY=${{ secrets.NUXT_PUBLIC_TYPESENSE_API_KEY }}" >> $GITHUB_ENV
|
||||||
|
echo "NUXT_PUBLIC_ENTRELINEAS_DEV_KEY=${{ secrets.NUXT_PUBLIC_ENTRELINEAS_DEV_KEY }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '24'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build Nuxt Application
|
||||||
|
run: npm run build
|
||||||
|
env:
|
||||||
|
NITRO_PRESET: node-server
|
||||||
|
|
||||||
|
- name: Copy Build Files to Vultr
|
||||||
|
uses: appleboy/scp-action@master
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.VPS_HOST }}
|
||||||
|
username: ${{ secrets.VPS_USER }}
|
||||||
|
key: ${{ secrets.VPS_SSH_KEY }}
|
||||||
|
port: 22
|
||||||
|
source: ".output/*,package.json,ecosystem.config.cjs"
|
||||||
|
target: "${{ env.TARGET_DIR }}"
|
||||||
|
|
||||||
|
- name: Restart PM2 on Vultr
|
||||||
|
uses: appleboy/ssh-action@master
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.VPS_HOST }}
|
||||||
|
username: ${{ secrets.VPS_USER }}
|
||||||
|
key: ${{ secrets.VPS_SSH_KEY }}
|
||||||
|
port: 22
|
||||||
|
script: |
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
cd ${{ env.TARGET_DIR }}
|
||||||
|
PM2_NAME=${{ env.PM2_NAME }} pm2 reload ${{ env.PM2_NAME }} --env ${{ env.PM2_ENV }} || \
|
||||||
|
PM2_NAME=${{ env.PM2_NAME }} pm2 start ecosystem.config.cjs --env ${{ env.PM2_ENV }}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
module.exports = {
|
||||||
|
apps: [
|
||||||
|
{
|
||||||
|
// You can append the PM2_ENV dynamically in the script if you want unique names in the PM2 list,
|
||||||
|
// or rely on the directory path to keep them separate.
|
||||||
|
name: process.env.PM2_NAME || 'SearchTs',
|
||||||
|
// port: '3000',
|
||||||
|
// exec_mode: 'cluster',
|
||||||
|
// instances: 'max',
|
||||||
|
script: './.output/server/index.mjs',
|
||||||
|
|
||||||
|
// Triggered by 'staging' branch
|
||||||
|
env_staging: {
|
||||||
|
NODE_ENV: 'staging',
|
||||||
|
PORT: 3005
|
||||||
|
},
|
||||||
|
|
||||||
|
// Triggered by 'production' branch
|
||||||
|
env_production: {
|
||||||
|
NODE_ENV: 'production',
|
||||||
|
PORT: 3010
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue