Bên cạnh Jenkins–một trong automation application server phổ biến nhất hiện nay thì chúng ta còn có TeamCity của JetBrains cũng được sử dụng nhiều không kém và ngày càng được tin dùng.
Hôm nay tôi muốn chia sẻ tới các bạn một use case cụ thể đối với TeamCity mà tôi đang apply cho team của mình.
Chúng tôi có một automation framework được phát triển trên nền C#/Selenium. Tôi muốn cấu hình một universal TeamCity job có thể được dùng để chạy target tới nhiều môi trường khác nhau tùy theo trait name (hay test category) được chọn từ input. Chuyện này đã được xử lý xong nhưng vấn đề là rất khó để phân biệt giữa các build được chạy cái nào là cho môi trường nào và cho bộ test category nào.
Từ đó chúng tôi quyết định dùng chức năng gắn tag bằng tay để dễ phân biệt. Tuy nhiên theo thời gian việc gắn tag bằng tay trở nên phiền phức vì vẫn phụ thuộc vào con người nên dễ bị nhầm lẫn và nhất là không thống nhất vì mỗi người lại gắn tag một kiểu.
Xuất phát từ nhu cầu đó, tôi quyết tâm tìm hiểu để việc gắn tag được thực hiện hoàn toàn tự động mỗi khi build được chạy, và tôi đã thành công, kết quả như sau:
Như các bạn đã thấy, mỗi lần có một build mới được chạy, một tag sẽ được tự động gắn vào build giúp dễ dàng nhận biết build đó được chạy cho client nào, môi trường nào (QA, UAT, SUPP...) và cho bộ test nào. Format của tag của cũng được thống nhất vậy nên không còn chuyện tag được gắn lộn xộn mỗi người một kiểu nữa.
Vậy tôi đã làm như thế nào? Trong quá trình tìm hiểu, tôi phát hiện ra TeamCity có hỗ trợ các API endpoint để chúng ta có thể tương tác. Ứng dụng của các endpoint cũng rất đa dạng từ việc lấy thông tin build, kết quả build, trigger build v.v... và gắn tag cũng là một trong số đó. Các bạn có thể đọc documentation chi tiết ở đây.
Dự án hiện tại tôi đang làm việc sử dụng TeamCity server là các cloud agents chạy Windows Server. Vậy nên trong build step, tôi chỉ cần thêm vào một step cho Power Shell (một công cụ được kỳ vọng là Terminal của Windows) như hình đưới và đặt nó làm build step đầu tiên. Với PowerShell chúng ta có thể lập trình để gửi đi các API request tới TeamCity phục vụ cho việc gắn tag.
Chỉ đơn giản như vậy thôi. Bạn có thể thử gọi tới API endpoint này trong Postman trước để kiểm chứng trước khi viết PowerShell script nhé. Chúc các bạn thành công!