update
This commit is contained in:
@@ -1,151 +0,0 @@
|
||||
# GitHub Actions Deployment Workflows
|
||||
|
||||
Các workflow tự động deploy được tạo cho project Laravel Portal.
|
||||
|
||||
## Workflows Available
|
||||
|
||||
### 1. `deploy.yml` - Deployment thông thường
|
||||
- **Trigger**: Push vào branches `main`, `master`, `develop` hoặc manual trigger
|
||||
- **Mục đích**: Deploy cho staging/development environment
|
||||
- **Actions**: Git pull, npm run production, Laravel optimization
|
||||
|
||||
### 2. `deploy-minified.yml` - Production Deployment với minification
|
||||
- **Trigger**: Push vào branches `main`, `master` hoặc manual trigger
|
||||
- **Mục đích**: Deploy cho production environment
|
||||
- **Actions**: Git pull, npm run minify-all, database migration, backup, cleanup
|
||||
|
||||
## Setup Requirements
|
||||
|
||||
### 1. GitHub Secrets Configuration
|
||||
|
||||
Cần setup các secrets sau trong GitHub repository:
|
||||
|
||||
#### For `deploy.yml`:
|
||||
```
|
||||
HOST - IP address hoặc domain của server
|
||||
USERNAME - SSH username
|
||||
SSH_KEY - SSH private key content
|
||||
PORT - SSH port (optional, default: 22)
|
||||
PROJECT_PATH - Đường dẫn tới project (optional, default: /var/www/portal)
|
||||
```
|
||||
|
||||
#### For `deploy-minified.yml`:
|
||||
```
|
||||
PROD_HOST - Production server IP/domain
|
||||
PROD_USERNAME - Production SSH username
|
||||
PROD_SSH_KEY - Production SSH private key
|
||||
PROD_PORT - Production SSH port (optional, default: 22)
|
||||
PROD_PROJECT_PATH - Production project path (optional, default: /var/www/portal)
|
||||
```
|
||||
|
||||
### 2. Server Requirements
|
||||
|
||||
#### Server cần có sẵn:
|
||||
- Git
|
||||
- PHP >= 8.0
|
||||
- Composer
|
||||
- Node.js & NPM
|
||||
- Web server (nginx/apache) với quyền www-data
|
||||
|
||||
#### Project directory structure:
|
||||
```
|
||||
/var/www/portal/ # Main project
|
||||
/var/www/portal-backup-* # Backup directories (auto-created)
|
||||
```
|
||||
|
||||
### 3. SSH Key Setup
|
||||
|
||||
1. **Generate SSH key pair:**
|
||||
```bash
|
||||
ssh-keygen -t rsa -b 4096 -C "github-actions@yourdomain.com"
|
||||
```
|
||||
|
||||
2. **Add public key to server:**
|
||||
```bash
|
||||
# Copy public key to server
|
||||
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
3. **Add private key to GitHub Secrets:**
|
||||
- Copy nội dung của private key file
|
||||
- Paste vào GitHub Secrets với tên `SSH_KEY` hoặc `PROD_SSH_KEY`
|
||||
|
||||
## Manual Deployment
|
||||
|
||||
Có thể trigger deployment manually:
|
||||
|
||||
1. Vào GitHub repository
|
||||
2. Click tab "Actions"
|
||||
3. Chọn workflow muốn chạy
|
||||
4. Click "Run workflow"
|
||||
5. Chọn branch và click "Run workflow"
|
||||
|
||||
## Workflow Features
|
||||
|
||||
### Security Features:
|
||||
- SSH key authentication
|
||||
- Separate production secrets
|
||||
- Backup before deployment
|
||||
|
||||
### Performance Features:
|
||||
- Asset minification cho production
|
||||
- Laravel optimization commands
|
||||
- Cache clearing/rebuilding
|
||||
|
||||
### Maintenance Features:
|
||||
- Automatic backup rotation (keep last 5)
|
||||
- Queue restart
|
||||
- Permission fixing
|
||||
- Database migration
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues:
|
||||
|
||||
1. **SSH Connection Failed:**
|
||||
- Kiểm tra HOST, USERNAME, SSH_KEY secrets
|
||||
- Verify SSH key format (complete private key including headers)
|
||||
|
||||
2. **Permission Denied:**
|
||||
- Kiểm tra SSH user có quyền access project directory
|
||||
- Verify www-data ownership
|
||||
|
||||
3. **Build Failed:**
|
||||
- Kiểm tra Node.js version trên server
|
||||
- Verify npm dependencies
|
||||
|
||||
4. **Laravel Commands Failed:**
|
||||
- Kiểm tra PHP version compatibility
|
||||
- Verify .env file exists và correct
|
||||
|
||||
### Debug Commands:
|
||||
Để debug, có thể thêm các commands sau vào workflow:
|
||||
|
||||
```yaml
|
||||
# Add to workflow script section
|
||||
echo "Current user: $(whoami)"
|
||||
echo "Current directory: $(pwd)"
|
||||
echo "PHP version: $(php -v)"
|
||||
echo "Node version: $(node -v)"
|
||||
echo "NPM version: $(npm -v)"
|
||||
```
|
||||
|
||||
## Environment-specific Customization
|
||||
|
||||
Có thể customize workflows theo environment:
|
||||
|
||||
### Development:
|
||||
- Sử dụng `npm run dev` thay vì `production`
|
||||
- Skip database migrations
|
||||
- Enable debug mode
|
||||
|
||||
### Staging:
|
||||
- Sử dụng `npm run production`
|
||||
- Include database migrations
|
||||
- Moderate optimization
|
||||
|
||||
### Production:
|
||||
- Sử dụng `npm run minify-all`
|
||||
- Full optimization
|
||||
- Backup và cleanup
|
||||
- Queue restart
|
||||
Reference in New Issue
Block a user