Gắn tag tự động cho TeamCity build configuration

Sunday, October 10, 2021
Edit this post


Là một automation QA, hẳn sẽ có một lúc nào đó bạn cần tự set up một job nho nhỏ trên một server nào đó để những dòng automation script "thần thánh" của bạn được build và chạy tự động bất kỳ lúc nào chỉ với một cú nhấp chuột hoặc thậm chí có thể được hẹn giờ để chạy.

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.


Hãy nhìn vào Script Source ở trên, đó là nơi những dòng code sẽ thực hiện việc gắn tag tự động. Từ dòng 1 tới 4, một đoạn token sẽ được tạo ra từ username và password mặc định của TeamCity. Chúng ta sẽ dùng token này để bỏ vào field Authorization của API header (từ dùng 6 tới 8). Từ dòng 10 tới 15 là nơi bạn tùy biến đoạn tag muốn gắn vào và body của API request message. Cuối cùng ở dòng 17 là nơi bạn sẽ gửi đi request gắn tag của mình tới TeamCity endpoint.

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!

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

BÌNH LUẬN

Cảm ơn bạn đã đọc bài viết của Cuộc Sống Tối Giản. Đây là một blog cá nhân, được lập ra nhằm mục đích lưu trữ và chia sẻ mọi thứ hay ho theo chủ quan của chủ sở hữu. Có lẽ vì vậy mà bạn sẽ thấy blog này hơi (rất) tạp nham. Mọi chủ đề đều có thể được tìm thấy ở đây, từ tâm sự cá nhân, kinh nghiệm sống, phim ảnh, âm nhạc, lập trình... Phần lớn các bài đăng trong blog này đều được tự viết, trừ các bài có tag "Sponsored" là được tài trợ, quảng cáo, hoặc sưu tầm. Để ủng hộ blog, bạn có thể share những bài viết hay tới bạn bè, người thân, hoặc có thể follow Kênh YouTube của chúng tôi. Nếu cần liên hệ giải đáp thắc mắc hoặc đặt quảng cáo, vui lòng gửi mail theo địa chỉ phipgn@gmail.com. Một lần nữa xin được cảm ơn rất nhiều!!!
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...