md file added for reference
This commit is contained in:
91
readme.md
Normal file
91
readme.md
Normal file
@@ -0,0 +1,91 @@
|
||||
### Workflow Flow
|
||||
|
||||
When code is pushed to a supported branch, the workflow starts on a fresh Ubuntu runner.
|
||||
The branch name is read and used to decide the deployment configuration such as server, project folder, authentication method, and PM2 process ID.
|
||||
|
||||
Based on the branch, environment variables are set dynamically.
|
||||
Non-production branches (`beta`, `testing`, `client`) deploy to the same server using password-based SSH authentication, while `staging` and `production` deploy to separate servers using SSH key authentication.
|
||||
|
||||
Only the deployment step matching the selected authentication type runs.
|
||||
The workflow connects to the target server, force-syncs the code with the repository, installs dependencies, and restarts the application using PM2.
|
||||
|
||||
This ensures the server always runs the exact state of the repository and removes manual deployment steps.
|
||||
|
||||
|
||||
# CI/CD Deployment Workflow – Explained Guide
|
||||
|
||||
## Purpose
|
||||
- Automates deployments
|
||||
- Eliminates manual server drift
|
||||
|
||||
## Branch Logic
|
||||
- Branch is read from `gitea.ref_name`
|
||||
- `case` block maps branch to configuration
|
||||
|
||||
## Environment Design
|
||||
- `beta` / `testing` / `client` share a server to reduce cost
|
||||
- `staging` and `production` are isolated for safety
|
||||
|
||||
## Authentication
|
||||
- Password authentication for non-production
|
||||
- SSH key authentication for staging and production
|
||||
|
||||
## Git Strategy
|
||||
- `git reset --hard` ensures the repository is the single source of truth
|
||||
|
||||
## PM2 Strategy
|
||||
- PM2 manages long-running processes
|
||||
- Each environment has a dedicated PM2 ID
|
||||
|
||||
## Intentional Exclusions
|
||||
- No `.env` management
|
||||
- No PM2 process creation
|
||||
- No Docker builds
|
||||
|
||||
|
||||
# CI/CD Deployment Workflow – Operational Guide (Script Accurate)
|
||||
|
||||
## Trigger
|
||||
- Runs on push to configured branches
|
||||
- Branch name controls deployment behavior
|
||||
|
||||
## Branches
|
||||
- main
|
||||
- beta
|
||||
- testing
|
||||
- client
|
||||
- staging
|
||||
- production
|
||||
|
||||
## Branch to Server Mapping
|
||||
- `beta` / `testing` / `client` → **BETA server** (password authentication)
|
||||
- `staging` → **STAGING server** (SSH key authentication)
|
||||
- `production` → **PRODUCTION server** (SSH key authentication)
|
||||
|
||||
## Required Secrets
|
||||
|
||||
### BETA (beta / testing / client)
|
||||
- `BETA_SERVER_HOST`
|
||||
- `BETA_SERVER_USERNAME`
|
||||
- `BETA_SERVER_PASSWORD`
|
||||
- `BETA_SERVER_PORT`
|
||||
|
||||
### STAGING
|
||||
- `STAGING_SERVER_HOST`
|
||||
- `STAGING_SERVER_USERNAME`
|
||||
- `STAGING_SERVER_PORT`
|
||||
- `STAGING_SERVER_KEY`
|
||||
|
||||
### PRODUCTION
|
||||
- `PRODUCTION_SERVER_HOST`
|
||||
- `PRODUCTION_SERVER_USERNAME`
|
||||
- `PRODUCTION_SERVER_PORT`
|
||||
- `PRODUCTION_SERVER_KEY`
|
||||
|
||||
## Commands Executed
|
||||
```bash
|
||||
git fetch
|
||||
git reset --hard origin/<branch>
|
||||
git pull origin <branch>
|
||||
npm install
|
||||
pm2 restart <PM2_ID>
|
||||
Reference in New Issue
Block a user