Hướng dẫn Continuous Deployment cho Flutter dùng GitHub Actions

Tóm tắt nhanh
Tìm hiểu cách setup CI/CD pipeline với GitHub Actions để tự động build và deploy Flutter applications.
Mục lục bài viết (33)
- Tại sao cần CI/CD?
- Lợi ích:
- Setup cơ bản
- 1. Tạo workflow file
- Build Android
- 1. Setup Android Build
- 2. Sign APK/AAB
- Build iOS
- 1. Setup iOS Build
- Build Web
- 1. Deploy Web to Vercel
- Multi-platform Build
- 1. Build tất cả platforms
- Testing
- 1. Unit Tests
- 2. Widget Tests
- 3. Integration Tests
- Code Quality
- 1. Linting
- 2. Format Check
- Release Management
- 1. Create Release
- Best Practices
- 1. Cache Dependencies
- 2. Matrix Strategy
- 3. Conditional Steps
- Tự động hoá cái gì ở từng giai đoạn
- Quản lý khoá và bí mật
- Giữ cho quy trình chạy nhanh và ổn định
- Lỗi thường gặp khi thiết lập CI/CD cho Flutter
- Kết luận
- Tóm tắt:
- Học Flutter bài bản theo lộ trình
GitHub Actions giúp tự động hóa quá trình build, test và deploy Flutter applications. Bài viết này sẽ hướng dẫn bạn setup CI/CD pipeline hoàn chỉnh.
Tại sao cần CI/CD?
Lợi ích:
- ✅ Tự động hóa: Build và deploy tự động
- ✅ Consistency: Môi trường build nhất quán
- ✅ Testing: Tự động chạy tests
- ✅ Time saving: Tiết kiệm thời gian
- ✅ Quality: Đảm bảo chất lượng code
Setup cơ bản
1. Tạo workflow file
[object Object]Build Android
1. Setup Android Build
[object Object]2. Sign APK/AAB
[object Object]Build iOS
1. Setup iOS Build
[object Object]Build Web
1. Deploy Web to Vercel
[object Object]Multi-platform Build
1. Build tất cả platforms
[object Object]Testing
1. Unit Tests
[object Object]2. Widget Tests
[object Object]3. Integration Tests
[object Object]Code Quality
1. Linting
[object Object]2. Format Check
[object Object]Release Management
1. Create Release
[object Object]Best Practices
1. Cache Dependencies
[object Object]2. Matrix Strategy
[object Object]3. Conditional Steps
[object Object]Tự động hoá cái gì ở từng giai đoạn
Một lỗi phổ biến khi mới làm CI/CD là cố tự động hoá mọi thứ cùng lúc. Cách làm hiệu quả hơn là chia theo ba giai đoạn và thêm dần:
- Khi mở yêu cầu hợp nhất: chạy kiểm tra tĩnh và test. Mục tiêu là phản hồi trong vài phút, vì đây là vòng lặp mà lập trình viên chờ đợi. Không build bản phát hành ở bước này vì quá chậm mà không cần thiết.
- Khi nhập vào nhánh chính: thêm bước build bản thử để phát hành nội bộ. Mục tiêu là luôn có một bản cài được cho người kiểm thử.
- Khi tạo nhãn phiên bản: build bản phát hành, ký ứng dụng và tạo bản ghi phát hành. Bước tải lên cửa hàng ứng dụng có thể làm thủ công trong giai đoạn đầu — tự động hoá bước này khi quy trình đã ổn định.
Thứ tự thêm này giúp nhóm làm quen dần, và mỗi bước thêm vào đều có lý do rõ ràng thay vì copy từ một tệp cấu hình mẫu.
Quản lý khoá và bí mật
Phần lớn sự cố bảo mật trong quy trình tự động đến từ việc để bí mật trong mã nguồn. Các nguyên tắc cần giữ:
- Bí mật để trong phần cấu hình bí mật của dịch vụ CI, không bao giờ commit.
- Tệp khoá ký ứng dụng nên được lưu dưới dạng dữ liệu được mã hoá, và mật khẩu của nó cũng là một bí mật riêng.
- Bí mật không nên xuất hiện trong nhật ký chạy: hầu hết dịch vụ CI tự che, nhưng nếu bạn in giá trị ra để gỡ lỗi thì sẽ mất tính bảo mật.
- Khác biệt giữa các môi trường phải được thể hiện bằng bí mật riêng, không bằng cách sửa mã nguồn theo nhánh.
Giữ cho quy trình chạy nhanh và ổn định
Một quy trình chậm và hay đỏ sẽ bị nhóm bỏ qua — và khi đó toàn bộ lợi ích biến mất. Ba việc giúp duy trì:
- Dùng bộ nhớ đệm cho phần phụ thuộc. Tải lại toàn bộ thư viện ở mỗi lần chạy là lãng phí lớn nhất trong hầu hết quy trình.
- Xử lý test không ổn định ngay khi xuất hiện. Một test lúc đỏ lúc xanh làm cả nhóm mất niềm tin vào quy trình; hãy sửa hoặc tạm tách ra và ghi lại lý do.
- Chỉ chạy việc cần thiết. Nếu chỉ sửa tài liệu thì không cần build ứng dụng; nếu chỉ sửa một gói con thì không cần build toàn bộ.
Lỗi thường gặp khi thiết lập CI/CD cho Flutter
- Chạy test cần thiết bị thật trên môi trường CI. Việc này thường không khả thi với quy trình thông thường; nên chia rõ test nào chạy trên CI và test nào chạy trên máy phát triển.
- Bỏ qua bước kiểm tra tĩnh. Phát hiện lỗi tĩnh nhanh hơn nhiều so với chờ test chạy xong.
- Không giới hạn số lần chạy đồng thời, dẫn tới việc đẩy liên tục làm hàng đợi dài và chờ lâu.
- Thiếu quy ước tăng số phiên bản làm hai bản phát hành khác nhau có cùng số, gây rối khi người kiểm thử báo lỗi.
- Không ghi lại thời gian chạy theo thời gian. Không có số liệu này, quy trình sẽ chậm dần mà không ai nhận ra nguyên nhân ở đâu.
Kết luận
GitHub Actions giúp:
- ✅ Tự động hóa build và deploy
- ✅ Đảm bảo chất lượng code
- ✅ Tiết kiệm thời gian
- ✅ Consistency trong môi trường build
Tóm tắt:
- Setup workflow: Tạo
.github/workflows/ - Build: Android, iOS, Web
- Test: Unit, Widget, Integration tests
- Deploy: Tự động deploy khi có thay đổi
- Release: Tạo release tự động
Setup CI/CD sẽ giúp quy trình phát triển Flutter của bạn chuyên nghiệp và hiệu quả hơn! 🚀
Học Flutter bài bản theo lộ trình
Nếu bạn muốn học có người sửa bài thay vì tự ghép tài liệu, Flutter Hướng Nghiệp đào tạo theo 3 cấp:
- Flutter Cơ Bản — Dart, widget, giao diện, 28 buổi.
- Flutter Nâng Cao — state management, REST API, Firebase, 28 buổi.
- Flutter Chuyên Sâu — back-end, AI/ML, publish lên store, 53 buổi.
Lớp online trực tiếp qua Zoom/Google Meet, có bản ghi lại — không bắt buộc đến cơ sở.
Xem lịch khai giảng hoặc so sánh 5 cách học lập trình mobile nếu còn phân vân.
