matching_app/docs/workflow_guideline.md
2025-05-02 15:12:18 +07:00

149 lines
5.6 KiB
Markdown

# Hướng Dẫn Quy Trình Làm Việc
Tài liệu này cung cấp hướng dẫn về quy trình làm việc với dự án matching-app, bao gồm các vai trò khác nhau, công cụ hữu ích và quy trình làm việc mẫu.
## Quy trình làm việc theo Role
### Developer
#### Thiết lập môi trường
- Sử dụng `make dev-workflow` để thiết lập môi trường làm việc ban đầu
- Cài đặt các công cụ cần thiết với `make install-tools`
- Đảm bảo đã cài đặt các công cụ: Go, Docker, Golangci-lint
#### Phát triển
- Sử dụng `make dev` cho phát triển với hot-reload
- Chạy test với `make test` sau mỗi thay đổi quan trọng
- Kiểm tra định dạng và lỗi cú pháp với `make lint`
- Trước khi commit, chạy kiểm tra đầy đủ với `make ci-local`
#### Triển khai
- Sử dụng `make docker-build` để tạo Docker image
- Test trên môi trường local với `make docker-up`
- Push code lên repository để hệ thống CI/CD tự động triển khai
### DevOps
#### Quản lý môi trường
- Định kỳ kiểm tra và cập nhật Docker image với `make docker-build`
- Quản lý các môi trường triển khai với các lệnh `make deploy-*`
- Giám sát logs với `make docker-logs`
#### CI/CD
- Thiết lập pipeline sử dụng các lệnh `make lint`, `make test`, `make sast`, `make sca`
- Tự động hóa quy trình triển khai với `make deploy-*`
- Kiểm tra bảo mật định kỳ với `make sast``make sca`
### QA
#### Kiểm tra
- Sử dụng `make run` hoặc `make dev` để chạy ứng dụng trên môi trường local
- Kiểm tra các tính năng mới theo test case
- Báo cáo lỗi kèm theo logs từ `make docker-logs`
#### Kiểm tra tự động
- Chạy unit test với `make test`
- Kiểm tra bao phủ mã nguồn từ báo cáo coverage
## Các hàm hữu dụng
### Quản lý ứng dụng
- `make build`: Biên dịch ứng dụng
- `make run`: Chạy ứng dụng đã biên dịch
- `make dev`: Chạy ứng dụng với hot-reload
- `make clean`: Dọn dẹp các file tạm và build
### Kiểm tra chất lượng
- `make lint`: Kiểm tra định dạng và lỗi cú pháp
- `make test`: Chạy unit test
- `make sast`: Phân tích bảo mật tĩnh
- `make sca`: Kiểm tra lỗ hổng trong dependencies
- `make ci-local`: Chạy tất cả kiểm tra trên
### Docker & Môi trường local
- `make docker-build`: Build Docker image trên môi trường local
- `make docker-up`: Khởi động container Docker trên môi trường local
- `make docker-down`: Dừng container Docker trên môi trường local
- `make docker-logs`: Xem logs từ container trên môi trường local
### Quy trình phát triển
- `make dev-workflow`: Thiết lập môi trường phát triển
- `make dev-docker`: Thiết lập môi trường Docker cho phát triển
## Quy trình bảo mật và CI/CD
### Bảo mật trong quy trình phát triển
- Tất cả code phải được gửi qua Pull Request, không được push trực tiếp vào các nhánh chính
- Mọi Pull Request phải được ít nhất 1 người review và approve
- Chỉ merge code sau khi đã pass tất cả các kiểm tra tự động (CI checks)
### Triển khai qua CI/CD
- Chỉ hệ thống CI/CD mới có quyền triển khai lên các môi trường staging và production
- Tất cả triển khai lên môi trường production phải đi qua môi trường staging trước
- Pipeline CI/CD được cấu hình trong file `.drone.yml`
### Đặc quyền môi trường
- Người phát triển chi được phép làm việc trên môi trường local
- Chỉ DevOps và quản trị viên có quyền truy cập vào môi trường staging và production
## Quy trình mẫu làm 1 ngày
### Developer
#### Buổi sáng
1. Pull code mới nhất từ repository
2. Chạy `make clean` để dọn dẹp môi trường
3. Chạy `make dev` để bắt đầu phát triển với hot-reload
4. Review các task được giao
#### Trong ngày
1. Phát triển các tính năng theo task
2. Chạy `make test` sau mỗi thay đổi lớn
3. Chạy `make lint` để kiểm tra lỗi và định dạng code
4. Sử dụng `make docker-up` để test trong môi trường Docker nếu cần
#### Trước khi commit
1. Chạy `make ci-local` để đảm bảo code chất lượng
2. Fix các vấn đề được phát hiện
3. Commit và push code
#### Triển khai
1. Push code lên repository để kích hoạt quy trình CI/CD
2. Theo dõi kết quả của pipeline trên hệ thống CI/CD
3. Kiểm tra tính năng trên môi trường staging sau khi triển khai tự động hoàn tất
### DevOps
#### Buổi sáng
1. Kiểm tra trạng thái các môi trường với `make docker-logs`
2. Xử lý các vấn đề từ monitoring overnight
#### Trong ngày
1. Hỗ trợ các developer với vấn đề môi trường
2. Cập nhật cấu hình CI/CD nếu cần
3. Chuẩn bị cho việc triển khai
#### Cuối ngày
1. Triển khai các thay đổi đã được phê duyệt với `make deploy-prod`
2. Kiểm tra logs sau triển khai
3. Cập nhật tài liệu và báo cáo
### QA
#### Buổi sáng
1. Review các tính năng cần kiểm tra
2. Thiết lập môi trường test với `make dev-workflow`
#### Trong ngày
1. Kiểm tra các tính năng theo test case
2. Báo cáo lỗi và ghi chép kết quả test
3. Hỗ trợ developer sửa lỗi
#### Cuối ngày
1. Tổng kết kết quả kiểm tra
2. Duyệt các tính năng đã pass test
3. Chuẩn bị test case cho ngày hôm sau