149 lines
5.6 KiB
Markdown
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` và `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
|