Skip to main content

Sử dụng Jenkins để Build Docker Images

Khởi chạy Jenkins


Khởi chạy Jenkins như một Docker Container với lệnh sau:

docker run -d -u root --name jenkins \ -p 8080:8080 -p 50000:50000 \ -v /root/jenkins_2112:/var/jenkins_home \ jenkins/jenkins:2.112-alpine



Load Dashboard

Tên người dùng admincó mật khẩu mặc định là 344827fbdbfb40d5aac067c7a07b9230

Trên hệ thống của bạn, bạn có thể tìm mật khẩu bằng

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

Có thể mất vài giây để Jenkins hoàn thành việc bắt đầu và có sẵn. Trong các bước tiếp theo, bạn sẽ sử dụng trang Dashboard để định cấu hình các plugin và bắt đầu tạo Image Docker.


Cấu hình Plugin Docker


Bước đầu tiên là cấu hình plugin Docker . Plugin này dựa trên plugin Jenkins Cloud. Khi build Docker Image, nó sẽ tạo ra một "Cloud Agent" thông qua plugin. Tác nhân sẽ là Docker Container được cấu hình để giao tiếp với Docker Daemon

Job build của Jenkins sẽ sử dụng vùng chứa này để thực thi việc xây dựng và tạo ra hình ảnh trước khi bị dừng lại. Image Docker sẽ được lưu trữ trên Docker Daemon đã được cấu hình. Hình ảnh sau đó có thể được đẩy đến một Docker Registry.


Cài đặt plugin

  1. Trong Bảng điều khiển, chọn Manage Jenkins ở bên trái.
  2. Trên trang Cấu hình, chọn Manage Plugins.
  3. Quản lý trang Plugin sẽ cung cấp cho bạn giao diện tab. Nhấp vào Available để xem tất cả các plugin của Jenkins có thể được cài đặt.
  4. Sử dụng hộp tìm kiếm, tìm kiếm Docker . Có nhiều plugin Docker, chọn plugin muốn cài đặt bằng checkbox.

  1. Nhấp vào Install without Restart ở dưới cùng.
  2. Các plugin bây giờ sẽ được tải xuống và cài đặt. Sau khi hoàn tất, nhấp vào liên kết Go back to the top page.
Bây giờ máy chủ Jenkins của bạn đã được cấu hình để xây dựng Docker Images.


Thêm Docker Agent


Khi các plugin đã được cài đặt, bạn có thể cấu hình cách chúng khởi chạy Docker Containers. Cấu hình sẽ cho plugin biết Docker Image nào sẽ sử dụng cho Agent và Docker daemon để chạy các containers.


Cấu hình plugin


Bước này cấu hình các plugin để giao tiếp với một máy chủ / daemon Docker.
  1. Chọn Manage Jenkins .
  2. Chọn Configure System để truy cập cài đặt chính của Jenkins.
  3. Ở phía dưới cùng, có một danh sách sổ xuống Add a new cloud . Chọn Docker từ danh sách.
  4. Các Docker Host URI là nơi Jenkins sinh ra các agent container. Trong trường hợp này, chúng ta sẽ sử dụng cùng một daemon như đang chạy Jenkins, nhưng bạn có thể chia cả hai để mở rộng quy mô. URLtcp://172.17.0.54:2345
  5. Sử dụng Test Connection để xác minh Jenkins có thể giao tiếp với Docker Daemon. Bạn sẽ thấy số phiên bản Docker được trả về.
Host IP là địa chỉ Docker host của bạn


Cấu hình Docker Agent Template


Docker Agent Template là Vùng chứa sẽ được bắt đầu để xử lý quá trình build
  1. Nhấp vào Docker Agent templates...  và sau đó Add Docker Template . Bây giờ bạn có thể định cấu hình các tùy chọn container.
  2. Set label cho agent thành docker-agentĐiều này được sử dụng bởi Jenkins builds để cho biết nó nên được xây dựng thông qua Docker Agent mà chúng ta đang định nghĩa.
  3. Đối với Docker Image, sử dụng benhall/dind-jenkins-agent:v2Hình ảnh này được cấu hình với trình khách Docker và có sẵn tại https://hub.docker.com/r/benhall/dind-jenkins-agent/
  4. Trong Container Settings , trong textbox "Volumes" nhập /var/run/docker.sock:/var/run/docker.sockĐiều này cho phép container giao tiếp với server
  5. Đối với Connect Method, chọn Connect with SSH . Hình ảnh dựa trên hình ảnh Slave SSH của Jenkins có nghĩa là khóa SSH mặc định sẽ xử lý sự xác nhận.
  6. Nhấp Save.
Jenkins bây giờ có thể bắt đầu một Agent Build như một container khi được yêu cầu.


Tạo Job mới

  1. Trên bảng điều khiển Jenkins, chọn Create new jobs
  2. Đặt cho job 1 cái tên như  Jenkins Demo, chọn Freestyle project rồi nhấn OK.
  3. Tập "Label Expression" thành docker-agentBạn nên có một cấu hình của "Label is serviced by no nodes and 1 cloud".
  4. Chọn loại Repository là Git và thiết lập Repository https://github.com/vanbadesigner/jenkins-demo.
  5. Bây giờ chúng ta có thể thêm một bước xây dựng mới bằng cách sử dụng Add Build Step . Chọn Execute Shell.
  6. Bởi vì hợp lý về cách xây dựng được quy định trong Dockerfile, Jenkins chỉ cần gọi build và chỉ định một cái tên
Trong ví dụ này, sử dụng các lệnh sau.

ls
docker info
docker build -t vanbadesigner/jenkins-demo:${BUILD_NUMBER} .
docker tag vanbadesigner/jenkins-demo:${BUILD_NUMBER} vanbadesigner/jenkins-demo:latest
docker images

Tại thời điểm này, hoặc trong một bước bổ sung, bạn có thể thực hiện docker pushđể tải Image lên một Registry Docker tập trung.
  1. Công trình của chúng ta hiện đã hoàn tất. Nhấp vào Lưu .


Build Project


Bây giờ chúng ta có một Job được cấu hình để xây dựng Docker Images dựa trên kho Git của chúng ta. Giai đoạn tiếp theo là kiểm tra và thử nó.


Build


Ở phía bên trái, chọn Build Now . Bạn sẽ thấy một bản dựng được lên lịch với một thông báo "(pending—Waiting for next available executor)".
Trong background, Jenkins đang chạy các container và kết nối với nó thông qua SSH. Điều này có thể mất một lúc để cấu hình Docker Agent. 
Lỗi "(pending—Jenkins doesn’t have label docker-agent)" là trong khi Jenkins đợi Docker Agent khởi động.

Bạn có thể xem tiến độ sử dụng docker logs --tail=10 jenkins
Việc thực hiện việc này sẽ mất vài phút để hoàn thành.


Xem đầu ra Console


Sau khi build xong, bạn sẽ thấy Images và Tags bằng cách sử dụng CLI Docker docker images.

Những gì được build trong Docker Image là một server HTTP nhỏ. Bạn có thể khởi chạy nó bằng cách sử dụng: docker run -d -p 80:80 vanbadesigner/jenkins-demo:latest
Sử dụng cURL bạn sẽ thấy server phản hồi: curl host01

Comments

Popular posts from this blog

Ứng dụng giải thuật MiniMax trong trò chơi cờ tướng - Tìm hiểu về trí tuệ nhân tạo (Phần 2)

Chắc hẳn mọi người đều biết về trò chơi thú vị như cờ tướng. Tiếp theo loạt bài về trí tuệ nhân tạo, bài viết này mình sẽ nói về cụ thể giải thuật Minimax ứng dụng trong trò chơi trí tuệ cờ tướng như thế nào. OK! Let's go. 1. Ý tưởng Cờ tướng là trò chơi đối kháng, trong đó hai người luôn phiên nhau đi nước đi của mình. Trạng thái bắt đầu là trạng thái khởi tạo bàn cờ, sau mỗi nước đi của một bên, trạng thái bàn cờ sẽ được thay đổi thành một trạng thái mới hiện hành. Cờ tướng có luật của nó, và trò chơi sẽ kết thúc khi một người có được trạng thái phản ánh sự thắng cuộc hoặc hai người rơi vào trạng thái hòa cờ. Ta tìm cách phân tích xem từ một trạng thái nào đó sẽ dẫn đến đấu thủ nào sẽ thắng với điều kiện cả hai có trình độ như nhau. Giải thuật Minimax sẽ được áp dụng vào trong trò chơi cờ tướng. Hai đấu thủ trong trò chơi sẽ được gọi là MIN và MAX và hai đấu

Sử dụng Jedis làm việc với Redis trong Java

Bài viết này mình sẽ   giới thiệu về Jedis , một thư viện client Java cho  Redis . 1. Tại sao lại là Jedis? Redis liệt kê các thư viện client nổi tiếng nhất trên  trang web chính thức  của họ  .  Có nhiều lựa chọn thay thế cho Jedis, nhưng chỉ có hai lựa chọn khác xứng đáng để đề xuất đó là  lettuce  và  Redisson . Hai clients này có một số tính năng độc đáo như an toàn luồng, xử lý kết nối lại trong suốt và API không đồng bộ, tất cả các tính năng mà Jedis thiếu. Tuy nhiên, Jedis nhỏ và nhanh hơn đáng kể so với hai loại kia.  Bên cạnh đó, nó là thư viện client được lựa chọn của các nhà phát triển Spring Framework, và nó có cộng đồng lớn nhất trong cả ba. 2. Maven Dependencies Hãy bắt đầu bằng cách khai báo dependency trong file  pom.xml  : 1 2 3 4 5 < dependency >      < groupId >redis.clients</ groupId >      < artifactId >jedis</ artifactId >      < version >2.8.1</ version > </ dependency >