Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách tạo quy trình phân phối và đạt được các mục tiêu sau:
- Xây dựng hình ảnh Docker bằng ứng dụng web
- Chạy ứng dụng trong vùng chứa Docker
- Chạy thử nghiệm Selenium bằng Maven từ các vùng chứa khác nhau
Với mục đích trình diễn bài viết này, chúng tôi sẽ sử dụng dự án mẫu Java được lưu trữ trên GitHub: github.com/buddy-red/node-maven-selenium-tests để trình diễn.
Quy trình dây chuyền lắp ráp
Mỗi lần thay đổi thùng, đường dẫn sẽ thực hiện các tác vụ sau:
- Xây dựng Docker image cho ứng dụng web
- Chạy 3 container Docker:
- Vùng chứa đã tạo hình ảnh trong thao tác trước đó
- Vùng chứa máy chủ Selenium
- Với vùng chứa Maven sẽ chạy thử nghiệm
- Theo thử nghiệm, đường ống sẽ cho hai kết quả sau:
- [Đã vượt qua kiểm tra] Đẩy hình ảnh đến trung tâm đăng ký Docker và chạy hình ảnh trên máy chủ
- [Thử nghiệm thất bại] Gửi thông báo cho nhóm qua Slack
Cấu hình đường ống
Đầu tiên, chúng ta cần xác thực tài khoản của mình với hệ thống Buddy trong kho mã nguồn GitHub:
Tiếp theo, chúng ta thêm một đường dẫn mới và định cấu hình để nó chạy tự động mỗi khi chúng ta đẩy tới nhánh chính:
vận hành
Bây giờ chúng ta đã chỉ định nhánh mục tiêu của quy trình và điều kiện kích hoạt, đã đến lúc thêm hành động sẽ chạy tác vụ.
Xây dựng hình ảnh Docker
Tìm build image như hình bên dưới trong phần Docker của danh sách thao tác.
Xác định Dockerfile và môi trường liên quan (nếu nó khác với thư mục chứa Dockerfile). Trong trường hợp này phía trước
Định cấu hình kiểm tra Selenium bằng Maven
Với hình ảnh Docker được xây dựng và chờ đợi, chúng tôi cần một hành động để chạy thử nghiệm. Tìm hành động Maven trong phần Build Tools & Task Run hoặc tìm kiếm Maven trực tiếp trong hộp tìm kiếm:
Nhập lệnh sẽ chạy thử nghiệm, ví dụ: mvn clean install
Bây giờ chúng ta cần thêm hai vi dịch vụ trong tab Dịch vụ, về cơ bản đây là các vùng chứa Docker được gắn và liên kết với vùng chứa bản dựng chính.
- Cái đầu tiên phải là cái dành cho loại trình duyệt của bạn Selen Phục vụ. Trong ví dụ này, chúng tôi sẽ sử dụng Selenium Chrome:
- Bây giờ, bấm vào + nút dấu cộng để nối thêm cái khác và chọn Phong tục Dịch vụ tùy chỉnh. Định cấu hình nó để sử dụng bộ chứa Docker mà chúng tôi đã tạo ở bước trước:
Đảm bảo đặt cổng mà ứng dụng sẽ chạy trên đó (80 trong trường hợp này). Bằng cách này, Maven sẽ không bắt đầu kiểm tra cho đến khi ứng dụng khởi động thành công.
Định cấu hình Selenium
Sau khi được định cấu hình, thao tác sẽ chạy 3 vùng chứa được liên kết: Maven, Selenium và một vùng chứa tùy chỉnh. Để điều này hoạt động, chúng ta cần định cấu hình máy chủ Selenium mà quá trình kiểm tra sẽ kết nối và địa chỉ của ứng dụng sẽ chạy.
Trong ứng dụng của chúng tôi, những điều này được xác định lần lượt trên các dòng 23, 30 và 38. Tên máy chủ phải phản ánh tên máy chủ được nhập trong dịch vụ vận hành Maven:
gói works.buddy.test; import org.junit.Before; import org.junit.After; import org.junit.Test; import org.junit.Ignore; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import static org.junit.Assert.*; import java.net.URL; import java.net.MalformedURLException; import java.util.concurrent.TimeUnit; public class SeleniumTest { private WebDriver driver; @Before public void setUp() throws MalformedURLException { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); driver = new RemoteWebDriver(new URL("http://selenium-ch:4444/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS); } @Test public void test1() throws Exception { driver.get("http://myapp.com"); assertEquals("大家好!", driver.getTitle()); } //Lỗi @Bỏ qua @Test public void test2() throws Exception { driver.get("http://myapp.com"); assertEquals("Xin chào, bạn đã hoàn thành!", driver.getTitle()); } @After public void tearDown() { driver.quit(); } }
Các biến như tên máy chủ và tên máy chủ có thể được định nghĩa là biến môi trường trong quy trình. Nếu một biến không được giải quyết trong thời gian chạy, giá trị của nó có thể được hoán đổi bằng các thao tác tìm & thay thế.
Đẩy hình ảnh Docker đến trung tâm đăng ký
Nếu tất cả các thử nghiệm đã vượt qua thành công, hình ảnh có thể được đẩy vào sổ đăng ký Docker:
Buddy có khả năng tích hợp riêng với Docker Hub, Amazon ECR và Google GCR. Bạn cũng có thể đẩy hình ảnh vào sổ đăng ký riêng của mình:
Bạn có thể tìm thêm thông tin về cách xây dựng và đẩy hình ảnh Docker trong tài liệu của chúng tôi! .
Xuất bản ứng dụng
Hình ảnh được lưu trữ trong sổ đăng ký và chuẩn bị xuất bản trên máy chủ. Với Buddy, bạn có thể triển khai nó vào cụm Kubernetes, Amazon EKS hoặc Azure AKS hoặc bạn có thể chạy docker-compose trên máy chủ của riêng mình.
Để biết thêm thông tin về K8, hãy xem hướng dẫn của chúng tôi về điều phối vùng chứa trên cụm Kubernetes.
Gửi thông báo
Việc cho nhóm của bạn biết rằng quá trình kiểm thử không thành công hoặc cho khách hàng biết rằng phiên bản mới đang chờ phê duyệt là chìa khóa đối với bất kỳ hoạt động kinh doanh phát triển phần mềm nào, dựa trên các hoạt động xây dựng-kiểm thử-phát hành liên tục. Buddy tích hợp nguyên bản với các dịch vụ thông báo phổ biến nhất, bao gồm Slack, Discord và Telegram:
Bạn có thể thêm hai thông báo với các thông báo khác nhau: một trong phần chính để cho biết một thao tác đã hoàn thành thành công và một thông báo khác trong phần thất bại nếu quá trình kiểm tra hoặc triển khai không thành công. Bằng cách này, bạn có thể cập nhật thông tin cho nhóm QA của mình cũng như cập nhật thông tin và trạng thái.
Cuối cùng, bài viết này về vận hành và bảo trì tự động: sử dụng Maven và Docker để chạy thử nghiệm Selenium kết thúc tại đây. Nếu bạn muốn biết thêm về vận hành và bảo trì tự động: sử dụng Maven và Docker để chạy thử nghiệm Selenium, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục. Duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!