Chuyển đến nội dung chính

Phát triển phần mềm với Devin: Tích hợp, Kiểm thử, và CI/CD (Phần 3)

Tìm hiểu cách Devin tích hợp với đội ngũ bằng cách quản lý vé Jira, cập nhật Slack và chạy kiểm tra CI/CD với GitHub Actions trước khi hợp nhất.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Chào mừng quay trở lại! Kết thúc hướng dẫn thứ hai, chúng ta đã có một sân chơi fp-ts tông màu pastel, backend NestJS + PostgreSQL, và theo dõi tiến độ bằng UUID ẩn danh.

Bạn có thể truy cập tất cả các hướng dẫn trong loạt Devin tại đây:

  1. Thiết lập và Pull Request đầu tiên (Phần 1)
  2. Giao một lát dọc với Devin (Phần 2)
  3. Tích hợp, Kiểm thử, và CI/CD (Phần 3) 
  4. Bảo mật, Triển khai, Bảo trì (Phần 4)

Những gì chúng ta đã làm đến giờ rất phù hợp cho việc tự mày mò, nhưng đã đến lúc xem Devin hòa nhập với quy trình làm việc nhóm thế nào. Trong hướng dẫn thứ ba này, chúng ta sẽ xem:

  • Tích hợp: Devin sẽ mở vé Jira, xử lý chúng và phát mọi trạng thái PR thẳng lên Slack.
  • Cổng chất lượng:  Chúng ta sẽ thêm unit test Jest cho API, luồng end-to-end Playwright cho UI và áp dụng mức độ phủ 90%.
  • CI/CD: GitHub Actions sẽ lint, kiểm tra kiểu, chạy tất cả test và đính kèm báo cáo Playwright vào pull request trước khi bất kỳ thứ gì được hợp nhất.

Chưa có xác thực và chưa triển khai lên sản xuất, những việc đó sẽ ở Phần 4!

Thiết lập tích hợp Slack trên Devin

Kết nối Devin với kênh liên lạc và luồng vé hoàn toàn thủ công và thực hiện qua giao diện Devin.

Bạn có thể kết nối Slack từ tab tích hợp trong phần cài đặt của Devin, hoặc cài ứng dụng “Devin AI” từ Thư mục Ứng dụng của Slack.

tích hợp devin với slack

devin yêu cầu quyền truy cập workspace slack

Ứng dụng vẫn hiển thị “Chưa được Slack phê duyệt” trong hộp thoại OAuth. Cognition cho biết quá trình đánh giá bảo mật của họ đang chờ, và chức năng không bị ảnh hưởng.

Sau đó chọn một kênh:

chọn kênh slack cho devin

Bạn có thể trò chuyện với Devin chỉ bằng cách nhắc tên:

Và nó bắt đầu một phiên làm việc mà bạn có thể truy cập trong giao diện:

Devin bắt đầu một phiên trong giao diện

Mặc định, bạn sẽ nhận thông báo về cập nhật PR trong kênh đã chọn, nhưng có vài thiết lập thông báo khác mà bạn có thể tinh chỉnh trong tham số của từng phiên.

Thiết lập tích hợp Jira trên Devin

Để tích hợp với Jira, bạn cần tạo một người dùng bot riêng (ví dụ, devin-bot@…) và liên kết thông tin đó tại Devin → Team ▸ Integrations ▸ Jira.

Từ tài khoản cá nhân, bạn có thể tạo vé mới và thêm nhãn devin.

Devin đăng một bình luận phân tích với dàn ý kế hoạch và câu hỏi “Bắt đầu phiên?”. Gõ “yes” để cho phép nó viết mã hoặc gỡ nhãn để giữ vé chỉ dành cho con người.

Lưu ý: Devin sẽ không tự động di chuyển thẻ trên bảng của bạn. Bạn hoặc PM vẫn phải kéo chúng sang In Progress hoặc Done. Như vậy quyền kiểm soát quy trình vẫn ở con người.

Để Devin làm việc từ vé Jira

Khi Slack và Jira đã kết nối, tôi thử nghiệm “tác nhân như đồng đội” thực sự và ném các vé thật cho Devin để xem nó có thể triển khai mà không cần cầm tay chỉ việc hay không.

Quy trình tôi dùng

Quy trình của tôi như sau:

  1. Tạo một vé trong dự án JIRA mới và viết tiêu chí chấp nhận rõ ràng.
  2. Thêm nhãn devin, là tín hiệu để Devin phân tích.
  3. Devin bình luận với kế hoạch từng bước, ước tính độ tự tin và hỏi “Bắt đầu phiên?”

nhiệm vụ devin

  1. Tôi trả lời " Yes”. Vé hiển thị “Đã bắt đầu phiên” và cung cấp liên kết web IDE. Khi PR được merge, Devin đăng “Merged ✅” lại lên Slack, và tôi di chuyển thẻ trên bảng. Tất cả việc này không tốn ACU cho đến khi tôi trả lời “Yes”.

Năm vé thật, năm kết quả rất khác nhau

Tóm tắt những gì đã xảy ra với năm vé thực tế:

Vé

Công việc dự kiến

ACU

Hiệu quả thực tế của Devin

Di chuyển SQLite→Postgres

Hoán đổi engine DB, chạy migration

0.6

Hoàn hảo. Một commit, test vẫn xanh.

Cải thiện UI Sandpack và sửa test lỗi

Tinh chỉnh UI + độ ổn định test

5.0 (hai phiên)

Cứ khăng khăng chuyển ngược về SQLite, bỏ lỡ script migration, đốt ACU. Cuối cùng tôi tách UI và test thành hai lời nhắc để xong dưới hạn mức.

Hiển thị dấu tick hoàn thành trong danh sách

Thêm huy hiệu ✓ trong danh sách bài tập

0.8

Thành công trong một lần; còn thêm cả UI lạc quan.

Xác nhận hệ thống khám phá

Kiểm tra end-to-end rằng mọi tệp đều được phân tích

2.6

Kiểm tra backend vượt qua, nhưng lỗi frontend còn. Cần hai cú hích.

Xóa mã thành tựu bị bỏ dở

Xóa cờ tính năng + thành phần cũ

0.4

Devin cảnh báo “Độ tự tin thấp”, rồi gỡ chính xác 30 tệp và cập nhật import không lỗi.

Những điều có cảm giác ngẫu nhiên

Đây là những điều cần cải thiện:

  • Tiêu đề PR: Tôi đã chỉ định mẫu đặt tên trong mọi lời nhắc, nhưng Devin lại tự nghĩ ra định dạng mới mỗi lần.
  • Trung thành cơ sở dữ liệu: Ở một vé, nó di chuyển sang Postgres, còn ở vé khác, nó lặng lẽ đưa SQLite trở lại.
  • Ước tính ACU: Bình luận phân tích nói vé sandpack sẽ tốn 1,5 ACU, thực tế là hai phiên và 5 ACU.
  • Độ tự tin vs thực thi: Một vé với độ tự tin thấp lại hoàn thành trong 3 phút, hoàn hảo. Một vé tự tin cao mất 45 phút lắt nhắt.

Devin trên Jira đầy hứa hẹn: hai vé đóng hoàn hảo, một cần nhắc nhẹ, và ngay cả kịch bản tệ nhất cũng chỉ tốn thời gian, không phải quay lui. Nhưng tính nhất quán thì chưa, nên phạm vi chặt và ràng buộc rõ ràng là bạn đồng hành tốt.

Thêm kiểm thử tự động với Jest và Playwright

Khi chat và vé đã thông suốt, bước tiếp theo là đảm bảo mã hỏng không lọt qua. Tôi nhờ Devin làm hai việc: unit test backend và kiểm thử end-to-end Playwright mô phỏng người học chỉnh sửa bài tập trong trình duyệt.

Unit test backend: bất ngờ là nhẹ nhàng

Tôi yêu cầu Devin tạo bộ test Jest bao phủ resolver GraphQL, lớp service và các model Prisma. Khi tôi hỏi ước tính ACU, nó trả lời 20 ACU!!

Tôi đoán đó là lỗi và vẫn khởi chạy tác vụ. Chi phí 1,1 ACU, và đây là tác vụ được thực thi tốt nhất đến giờ.

Playwright e2e: tường đỏ, tường xanh

Mục này tốn kém hơn chút, chi phí 2,3 ACU.

Luồng ghi lại: mở /learn/option-01 → chỉnh sửa mã → đợi dấu ✓ → tải lại trang → ✓ vẫn còn.

Lần chạy đầu, khoảng 70% kiểm định thất bại. Có nhiều trục trặc thay đổi kích thước, số liệu bảng điều khiển cũ, và ngay cả đường đi hạnh phúc cũng flake.

Bất chấp lệnh “Bỏ qua test lỗi, sẽ sửa sau” trong lời nhắc của tôi, Devin cứ vá mã cho đến khi bộ test chủ yếu xanh (hữu ích, nhưng không đúng yêu cầu).

Chúng ta vẫn còn một số test thất bại vì hệ thống còn khá nhiều lỗi. Nhưng không sao, chúng ta sẽ xử lý sau để đảm bảo tất cả test đều xanh.

Thêm pipeline GitHub Actions một cú nhấp

Khi unit test và end-to-end đã có, bước cuối là đảm bảo mọi pull request đều chạy các kiểm tra đó tự động. Tôi nhờ Devin tạo workflow cơ bản, không artefact, không cổng coverage, chỉ lint → kiểm tra kiểu → test.

Devin tạo ra một pipeline được trau chuốt đáng ngạc nhiên chỉ trong một lần, không cần nhắc thêm:

  • Không trôi cấu hình: Devin tái sử dụng các script npm sẵn có, nên không phải học công cụ mới.
  • Mọi thứ song song: Lint, kiểm tra kiểu và hai bộ test chạy đồng thời, nên toàn bộ workflow xong trong ~4 phút trên runner miễn phí của GitHub.
  • Phân loại rõ ràng: Nếu ESLint lỗi nhưng test qua, job tổng kết vẫn báo lỗi lint; bạn không bao giờ merge mã “đỏ một phần”.

Devin đẩy workflow, đợi kiểm tra hoàn tất trên GitHub, rồi mới kết luận xong việc. Phải nói rằng, 0,4 ACU cho một pipeline hoạt động hoàn chỉnh là quá xuất sắc. Rõ ràng YAML là nơi Devin tỏa sáng.

Với workflow này được merge, mọi PR phải qua lint, biên dịch và cả hai bộ test trước khi ai đó bấm nút xanh!

Wiki trong sản phẩm của Devin

Devin đi kèm “Wiki” tích hợp có thể nằm cạnh mã của bạn. Đây là kho kiến thức nhẹ, tự động tạo mà tác nhân có thể vừa đọc vừa ghi trong khi làm việc. Sau khi kết nối Slack, Jira và CI, Wiki này là nơi phù hợp cho ghi chú kiến trúc. Rất đáng xem!

wiki devin

Theo hiểu biết của tôi, phần này không thể chỉnh tay, và bạn phải dựa vào Devin để cập nhật Wiki.

Ảnh chụp Chi phí & Thời gian và một vài suy ngẫm

Khi tất cả tích hợp, kiểm thử và pipeline đã chạy, tôi tổng hợp hóa đơn và thời gian:

Hạng mục công việc

ACU

Thời gian trực tiếp

Ghi chú

Kết nối Slack & Jira

0.0

10 phút

Nhấp OAuth thủ công; không tốn thời gian tác nhân.

5 vé Jira

9,4

2 giờ nhắc-và-duyệt

Hai vé ổn, một cần nhắc và thử lại cùng test, một bị kẹt ở việc hoán đổi SQLite.

Bộ unit Jest (API)

1,1

5 phút duyệt

Cú hù “20 ACU” của Devin hóa ra là viên ngọc 1 ACU.

Bộ e2e Playwright (web)

2,3

10 phút duyệt

Devin phớt lờ “đừng sửa mã”, vá cho đến khi còn 3 test đỏ.

Pipeline GitHub Actions

0,4

3 phút chỉnh

Một trang YAML; xanh ngay lần đầu.

Tổng

13,2 ACU

≈ 2 giờ 30 phút

≈ $30 ở gói Core.

Vậy là khoảng 2 giờ công sức để đẩy vé, kiểm thử và CI. Chắc chắn nhanh hơn tôi tự làm.

Tuy nhiên vào thời điểm này, tôi khá giằng co. Vẫn còn nhiều lỗi, và nếu tôi tự viết toàn bộ codebase, có lẽ tôi sửa lỗi nhanh hơn so với việc Devin đốt credit. 

Nhưng Devin viết phần lớn ứng dụng, nên tác nhân thực sự “biết” cấu trúc tốt hơn tôi. Dù vậy, nó vẫn chật vật khi thay giá trị hardcode bằng giá trị động, để đầu mối dở dang trong mã ở mọi tệp, và cần tôi ngồi trước laptop để trông chừng từng hành động.

Tôi cũng thấy quá trình hơi bực bội, nhưng không giống cảm giác khi đuổi theo một lỗi khó hiểu. Có một khoảng cách rất lớn (ít nhất với tôi) giữa việc bực vì mã không chạy và bực vì một tác nhân AI không thể làm theo chỉ dẫn cơ bản. Cái sau thì thực sự khó chịu.

Tôi nghĩ Devin có thể rất hữu ích nếu dùng đúng cách, nhưng cũng như mọi tác nhân AI khác, nó không thể thay thế kỹ sư phần mềm. Dùng cho một số tác vụ thì ổn, nhưng tôi không nghĩ phù hợp hoặc bền vững nếu dùng cho mọi vé.

Tiếp theo là gì?

Chúng ta đã kết nối Slack và Jira, test đều xanh, và cổng CI chặn mọi PR cẩu thả. Nhưng cho một lần ra mắt sản xuất thực thụ, chúng ta vẫn thiếu bốn trụ cột:

  1. Xác thực: nối NextAuth credentials → cookie JWT → GqlAuthGuard trong NestJS để tiến độ gắn với người dùng thật.
  2. Tăng cường bảo mật: Theo dõi lỗi bằng Sentry ở cả môi trường web và API.
  3. Triển khai liên tục: Pipeline Vercel (web) tạo URL preview cho mỗi nhánh và thăng cấp lên prod khi nhánh chính chuyển xanh.

Đó là chương trình cho Phần 4, chặng cuối nơi chúng ta xem Devin có thể bảo mật, triển khai và trông nom ứng dụng gần như không cần con người can thiệp hay không. Cố định cơ sở dữ liệu của bạn ở Postgres (lần nữa!), giới hạn ACU, và hẹn gặp bạn ở chương cuối.

Nếu bạn sẵn sàng tiếp tục, hãy bấm vào mục cuối trong danh sách dưới để đến hướng dẫn thứ tư:

  1. Thiết lập và Pull Request đầu tiên (Phần 1)
  2. Giao một lát dọc với Devin (Phần 2) 
  3. Tích hợp, Kiểm thử, và CI/CD (Phần 3) 
  4. Bảo mật, Triển khai, Bảo trì (Phần 4)

Marie Fayard's photo
Author
Marie Fayard

Tôi là một trưởng nhóm kỹ thuật định hướng sản phẩm, chuyên giúp các startup giai đoạn đầu phát triển từ nguyên mẫu đầu tiên đến khi đạt được sự phù hợp sản phẩm - thị trường và xa hơn nữa. Tôi luôn tò mò về cách con người sử dụng công nghệ, và tôi thích làm việc sát sao với nhà sáng lập và các nhóm liên chức năng để biến những ý tưởng táo bạo thành hiện thực. Khi không xây dựng sản phẩm, tôi tìm cảm hứng ở những miền đất mới hoặc xả căng thẳng tại phòng tập yoga.

Chủ đề
AI Agents
Trí tuệ Nhân tạo

Xây dựng tác nhân AI với các khóa học này:

Khóa học

Giới thiệu về AI Agents

1 giờ 30 phút
147.2K
Tìm hiểu các kiến thức cơ bản về AI agent, các thành phần của chúng và ứng dụng thực tế—không cần lập trình.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm