Thứ tư, 12/06/2019 | 00:00 GMT+7

Cách thiết lập Buildbot trên FreeBSD

Buildbot là một hệ thống lập lịch công việc thường được sử dụng với mục đích tích hợp liên tục (CI). CI là một thực tiễn phát triển phần mềm thường bao gồm tự động xây dựng và kiểm tra phần mềm của bạn một cách thường xuyên và cho mọi thay đổi. Mặc dù nó thường được sử dụng làm nền tảng CI, Buildbot cũng được dùng cho bất kỳ tác vụ tự động nào chạy trên máy tính. Cấu hình thực thi tác vụ của Buildbot bao gồm bốn thành phần:

  • Thay đổi nguồn : những thay đổi này phát hiện những thay đổi - chẳng hạn như những thay đổi trong repository lưu trữ Git - và thông báo cho người lập lịch về chúng
  • Bộ lập lịch : bộ lập lịch kích hoạt trình tạo theo những thay đổi sắp tới
  • Người xây dựng : chúng chứa các bước xây dựng thực tế, chẳng hạn như biên dịch một dự án phần mềm
  • Phóng viên : phóng viên sử dụng kết quả xây dựng để gửi email lỗi hoặc các thông báo khác

Buildbot hoạt động thông qua ít nhất một Buildbot master chạy và kiểm tra tất cả cấu hình bản dựng và các cài đặt khác, đồng thời phân phối các bản dựng thực tế cho nhân viên của nó. Ngoài ra, tổng thể cung cấp thành phần phụ giao diện user dựa trên trình duyệt, nếu được bật, được sử dụng để kích hoạt hoặc xem các bản dựng và kiểm tra báo cáo trạng thái và các cài đặt khác. Ngoài ra còn có một hoặc nhiều Buildbot worker kết nối với master và nhận lệnh, cụ thể là để chạy các bản dựng.

Trong hướng dẫn này, bạn sẽ sử dụng FreeBSD jails để cài đặt và chạy từng thành phần Buildbot trong một môi trường riêng biệt, biệt lập. Sau đó, bạn sẽ phục vụ Buildbot bằng web server Nginx và truy cập giao diện web của nó bằng trình duyệt web trên máy local của bạn. Sau khi hoàn thành hướng dẫn này, bạn sẽ có một cài đặt hoạt động với bản dựng dự án mẫu, sẵn sàng mở rộng cho CI của bạn hoặc các trường hợp sử dụng khác.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn cần :

  • Server chạy FreeBSD 11.2, mặc dù các version FreeBSD được hỗ trợ mới hơn và cũ hơn cũng sẽ hoạt động. Nếu bạn mới làm việc với FreeBSD, bạn có thể thấy hữu ích khi tùy chỉnh server này theo hướng dẫn của ta về Cách bắt đầu với FreeBSD .
  • Nginx được cài đặt trên server của bạn. Đọc cách cài đặt điều này theo hướng dẫn của ta về Cách cài đặt Nginx trên FreeBSD 11.2 .

Nếu bạn muốn lưu trữ giao diện web Buildbot bằng HTTPS an toàn, bạn cũng cần những thứ sau:

  • Tên domain đã đăng ký mà bạn sở hữu và kiểm soát. Nếu bạn chưa có domain đã đăng ký, bạn có thể đăng ký một domain với một trong nhiều công ty đăng ký domain hiện có (ví dụ: Namecheap, GoDaddy, v.v.).
  • Bản ghi DNS A trỏ domain của bạn đến địa chỉ IP công cộng của server của bạn. Điều này là bắt buộc vì cách Let's Encrypt xác thực rằng bạn sở hữu domain mà nó cấp certificate . Ví dụ: nếu bạn muốn lấy certificate cho example.com , thì domain đó phải phân giải tới server của bạn để quá trình xác thực hoạt động. Bạn có thể làm theo hướng dẫn Khởi động nhanh DNS này để biết chi tiết về cách thêm điều này. Trong suốt hướng dẫn này, ta sẽ sử dụng example.com làm domain mẫu.
  • Chứng chỉ SSL / TLS cho domain của bạn.Làm theo Cách bảo mật Nginx bằng Let's Encrypt trên FreeBSD để cài đặt điều này.

Bước 1 - Cài đặt Jails cho Buildbot Master và Worker

Vì Buildbot cho phép những người đóng góp bên ngoài chạy mã trên hệ thống của bạn, bạn nên cô lập các thành phần khác nhau của nó để ngăn chặn mã độc hoặc tùy ý chiếm tài nguyên server của bạn. Trong hướng dẫn này, bạn sẽ thực hiện việc này bằng cách sử dụng FreeBSD jails.

Tương tự như LXC, Docker và các cơ chế containers khác, FreeBSD jails cung cấp cách ly nhẹ khỏi hệ thống server . Các tiến trình đang chạy bên trong nhà tù chỉ có thể truy cập các tài nguyên mà nhà tù đã được cấp quyền truy cập; nếu không, chúng hoạt động giống như bất kỳ môi trường FreeBSD nào khác. Các Jails chia sẻ cùng một nhân nhưng thường chạy trên hệ thống file có bản sao của hệ thống cơ sở FreeBSD, có thể là bất kỳ version nào của FreeBSD tương thích với nhân server . Đối với hầu hết các dung lượng công việc, sự khác biệt về hiệu suất giữa việc chạy một tác vụ trên server lưu trữ so với trong một nhà tù là không đáng chú ý.

Một số gói phần mềm bên ngoài tồn tại để giúp tạo và quản lý các nhà tù FreeBSD. Vì không có cái nào trong số chúng là tiêu chuẩn trên thực tế, ta sẽ sử dụng cơ chế cấu hình tù tích hợp sẵn của hệ điều hành.

Đầu tiên, ta muốn tạo một network interface riêng cho các nhà tù của hệ thống. Trong jails, kernel sẽ ghi lại các kết nối mạng tới địa chỉ IPv4 / IPv6 đầu tiên được gán cho jail. Ví dụ: nếu địa chỉ IP được chỉ định đầu tiên là công khai và một dịch vụ trong nhà tù lắng nghe trên 127.0.0.1:1234 , cổng 1234 sẽ có thể truy cập . Thực tiễn được khuyến nghị là có một network interface riêng cho các nhà tù. Ta sẽ tuân theo khuyến nghị này về việc sao chép giao diện lặp lại chính ( lo0 ) thành một giao diện riêng biệt ( lo1 ). Ta sẽ sử dụng mạng 10.0.0.0/24 , nhưng bất kỳ mạng không chồng chéo nào khác cũng sẽ hoạt động.

Bắt đầu bằng cách cấu hình một giao diện nhân bản sẽ được tạo khi khởi động. Lệnh sysrc này ghi luật vào file /etc/rc.conf nhưng không tự tạo giao diện:

  • sudo sysrc cloned_interfaces+=lo1

Tiếp theo, tạo network interface bằng lệnh sau:

  • sudo service netif cloneup

Bạn có thể kiểm tra trạng thái giao diện và IP bằng:

  • ifconfig lo1
Output
lo1: flags=8008<LOOPBACK,MULTICAST> metric 0 mtu 16384 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> groups: lo

Kết quả cho thấy rằng giao diện tồn tại, nhưng chưa có địa chỉ IP nào được liệt kê và gắn vào nó. Cờ LOOPBACK của nó nghĩa là giao diện này chỉ khả dụng local và không đại diện cho một thiết bị phần cứng thực tế.

Tiếp theo, mở một file cấu hình mới cho bản giam chính bằng editor bạn muốn . Ở đây, ta sẽ sử dụng ee :

  • sudo ee /etc/jail.buildbot-master.conf

Sau đó, thêm nội dung sau vào file , sẽ cấu hình một nhà tù chính có tên là buildbot-master :

/etc/jail.buildbot-master.conf
buildbot-master {     host.hostname = buildbot-master.localdomain;     ip4.addr = "lo1|10.0.0.2/24";     path = "/usr/jails/buildbot-master";     exec.start = "/bin/sh /etc/rc";     exec.stop = "/bin/sh /etc/rc.shutdown";     mount.devfs; # need /dev/*random for Python     persist; } 

Mã này chỉ định một tên server và địa chỉ IP cố định trên network interface tù, 10.0.0.2 và chỉ định hệ thống file root , /usr/jails/buildbot-master . Các exec.startexec.stop giá trị sử dụng ở đây tuyên bố rằng của tù startstop dịch vụ này sẽ hoạt động giống như quá trình khởi động và sử dụng khởi động và tắt kịch bản tìm thấy trong /etc/ folder . Tùy chọn persist cho phép máy giam tiếp tục chạy ngay cả khi tất cả các quy trình của nó đã kết thúc.

Để tìm hiểu thêm về các cài đặt giam chính có thể có, hãy xem trang web jail (8) .

Sau khi thêm nội dung này, hãy lưu và thoát khỏi editor . Nếu bạn đang sử dụng ee , hãy thực hiện việc này bằng cách nhấn CTRL+C , nhập exit và nhấn ENTER .

Tệp cấu hình cho máy giam chính tách biệt với file cấu hình tù chung, /etc/jail.conf . Do đó, bạn cần thêm tên của nhà tù chính vào danh sách các nhà tù đã biết:

  • sudo sysrc "jail_list+=buildbot-master"

Sau đó cho phép bất kỳ nhà tù nào được liệt kê trong jail_list để bắt đầu tự động khi khởi động:

  • sudo sysrc jail_enable=YES

Nếu bạn đã có các nhà tù trên hệ thống của bạn được cấu hình bằng /etc/jail.conf nhưng bạn chưa sử dụng jail_list trước đó, việc bật cài đặt này sẽ nghĩa là chỉ các nhà tù trong jail_list mới tự động khởi động và bạn có thể cần thêm các nhà tù hiện có vào danh sách.

Ghi chú:
Nếu bạn sử dụng hệ thống file ZFS, bạn nên tạo một bộ dữ liệu riêng cho các file của tù để dễ dàng backup , sao chép hoặc xóa nó sau này. Các lệnh sau giả sử zpool của bạn có tên chuẩn là zroot . Nếu bạn không chắc chắn về tên của zpool của bạn , bạn có thể tìm nó bằng lệnh sau:

  • zpool list

Đầu tiên, tạo tập dữ liệu mẹ cho tất cả các nhà tù:

  • sudo zfs create zroot/usr/jails

Tiếp theo, tạo tập dữ liệu của nhà tù chính:

  • sudo zfs create zroot/usr/jails/buildbot-master

Tiếp theo, ta sẽ tạo folder root của máy giam chính và extract hệ thống FreeBSD.

Đảm bảo folder hệ thống file root của máy giam tồn tại. Nếu bạn đã chạy các lệnh ZFS trong ghi chú trước, thì điều này đã được thực hiện và bạn có thể bỏ qua lệnh này:

  • sudo mkdir -p /usr/jails/buildbot-master

Sau đó download repository hệ thống cơ sở FreeBSD 11.2. Trước tiên, ta cài đặt certificate root để tin cậy server download :

  • sudo pkg install ca_root_nss

Lệnh này sẽ nhắc bạn phê duyệt cài đặt gói ca_root_nss . Làm như vậy bằng cách nhấn y và sau đó ENTER .

Tiếp theo, download repository :

  • fetch -o /tmp/base.txz "https://download.freebsd.org/ftp/releases/amd64/11.2-RELEASE/base.txz"

Extract nội dung của file này dưới dạng hệ thống file root của máy giam:

  • sudo tar -x -f /tmp/base.txz -C /usr/jails/buildbot-master

Hướng dẫn này mô tả quá trình cài đặt chính xác một worker - cũng có trong một bản jail - và bạn sẽ cấu hình nó theo cách giống như cách bạn đã làm với master, sử dụng lại hệ thống cơ bản mà bạn vừa download . Mở một file cấu hình mới khác cho tù công nhân bằng lệnh ee :

  • sudo ee /etc/jail.buildbot-worker0.conf

Thêm nội dung sau vào file này:

/etc/jail.buildbot-worker0.conf
buildbot-worker0 {     host.hostname = buildbot-worker0.localdomain;     ip4.addr = "lo1|10.0.0.3/24";     path = "/usr/jails/buildbot-worker0";     exec.start = "/bin/sh /etc/rc";     exec.stop = "/bin/sh /etc/rc.shutdown";     mount.devfs; # need /dev/*random for Python     persist; } 

Nhìn vào những dòng này, hãy chú ý cách tù công nhân có tên server , IP và folder hệ thống file root khác với folder chính. Lưu file này.

, vì ta đang sử dụng file cấu hình tù riêng thay vì /etc/jail.conf global , hãy thêm tên vào danh sách các tù đã biết:

  • sudo sysrc "jail_list+=buildbot-worker0"

Lưu ý: Cũng như với bản giam chính, nếu bạn sử dụng hệ thống file ZFS, bạn nên tạo một tập dữ liệu riêng cho các file của tù công nhân. , lệnh sau tạo tập dữ liệu của tù công nhân và giả sử zpool của bạn có tên chuẩn là zroot :

  • sudo zfs create zroot/usr/jails/buildbot-worker0

Extract hệ thống cơ sở FreeBSD 11.2 đã được download như bạn đã làm cho hệ thống chính:

  • sudo mkdir /usr/jails/buildbot-worker0
  • sudo tar -x -f /tmp/base.txz -C /usr/jails/buildbot-worker0

Đến đây, cả hai nhà tù đều được cấu hình và chứa hệ thống cơ sở FreeBSD mà không có gói bổ sung nào được cài đặt. Hãy bắt đầu nhà tù:

  • sudo service jail start

Kiểm tra xem khởi động có thành công hay không bằng cách liệt kê tất cả các nhà tù đang chạy trên hệ thống bằng lệnh sau:

  • jls

Kết quả sẽ trả về một kết quả tương tự như sau cho thấy các nhà tù hiện đang chạy trên server của bạn:

Output
JID IP Address Hostname Path 1 10.0.0.2 buildbot-master.localdomain /usr/jails/buildbot-master 2 10.0.0.3 buildbot-worker0.localdomain /usr/jails/buildbot-worker0

Điều này xác nhận các nhà tù đang chạy như mong đợi. Tuy nhiên, tại thời điểm này, họ không có quyền truy cập Internet, nghĩa là bạn sẽ không thể cài đặt các gói Buildbot bên trong chúng. Tiếp tục đọc để giải quyết điều này.

Bước 2 - Cài đặt quyền truy cập Internet cho nhà tù

Mặc dù nhà tù chủ và lao động đang hoạt động, cả hai người họ đều bị đóng cửa khỏi Internet. Việc mở chúng với internet là cần thiết, vì chúng phải có thể cài đặt các gói cũng như giao tiếp với nhau.

Để giải quyết vấn đề này, hãy sao chép cấu hình trình phân giải DNS của server lưu trữ vào cả hai nhà tù:

  • sudo cp /etc/resolv.conf /usr/jails/buildbot-master/etc/resolv.conf
  • sudo cp /etc/resolv.conf /usr/jails/buildbot-worker0/etc/resolv.conf

Tiếp theo, định tuyến lưu lượng truy cập internet đi từ nhà tù. Để thực hiện việc này, hãy sử dụng IPFW - firewall tích hợp của FreeBSD - để cài đặt các luật mạng NAT (dịch địa chỉ mạng). Khi bạn hoàn thành bước này, lưu lượng truy cập ra khỏi mạng tù sẽ được chuyển sang địa chỉ IP công cộng của server của bạn.

Nếu bạn đã làm theo hướng dẫn Hãy mã hóa từ các yêu cầu , bạn sẽ có firewall được cấu hình để cho phép truy cập vào web server của bạn . Trong trường hợp đó, một số bước dưới đây sẽ là thừa nhưng không có hại gì khi chạy lại chúng.

Cảnh báo: áp dụng các thay đổi sai đối với cấu hình firewall của bạn có thể khiến server từ xa không thể truy cập được qua SSH, vì vậy điều quan trọng là đảm bảo bạn có một phương pháp thay thế có thể sử dụng để đăng nhập vào máy. Ví dụ: nếu bạn đang sử dụng server được lấy từ DigitalOcean, bạn có thể truy cập nó thông qua tính năng “Quyền truy cập console ” .

Để cho phép truy cập thông qua tính năng này, hãy đặt password gốc bằng lệnh sau:

  • sudo passwd

Ngoài ra, bạn có thể đặt password cho user hiện tại của bạn bằng lệnh :

  • passwd

Bao gồm các luật firewall của workstation được định nghĩa trong file rc.conf của bạn bằng lệnh sau. Các luật workstation bảo vệ server nhưng vẫn cho phép các dịch vụ cơ bản thông qua, chẳng hạn như ping đến server lưu trữ hoặc Giao thức cấu hình server động:

  • sudo sysrc firewall_type="workstation"

Tiếp theo, cho phép truy cập vào các cổng web server từ thế giới bên ngoài. Lệnh sau cho phép lưu lượng truy cập qua cổng 22 , cho SSH; cổng 80 , cho phép Buildbot được phân phát qua HTTP; và cổng 443 , cho phép Buildbot được phân phối qua HTTPS. Nếu bạn đã bảo mật server của bạn bằng Let's Encrypt, thì cả ba cổng này đều cần thiết, nhưng nếu bạn chưa và không định làm như vậy, thì bạn có thể loại trừ cổng 443 :

  • sudo sysrc firewall_myservices="22/tcp 80/tcp 443/tcp"

Cho phép truy cập từ bất kỳ địa chỉ IP nào vào các cổng được chỉ định trong chỉ thị firewall_myservices :

  • sudo sysrc firewall_allowservices="any"

Cấu hình firewall để bắt đầu khi server khởi động :

  • sudo sysrc firewall_enable=YES

Sau đó khởi động firewall với các luật cơ bản. Lệnh nohup sau đây tránh bị gián đoạn khởi động firewall và cũng chuyển hướng cả stderrstdout đến file log tạm thời. Điều này rất quan trọng để không để các luật firewall ở trạng thái không nhất quán, điều này có thể khiến server từ xa của bạn không thể truy cập được qua SSH:

  • sudo nohup service ipfw start >/tmp/ipfw.log 2>&1

Nếu bạn đang sử dụng shell csh hoặc tcsh , chuyển hướng này sẽ gây Ambiguous output redirect. để xuất hiện trong kết quả của bạn. Nếu bạn đang sử dụng một trong hai shell này, hãy chạy sudo nohup service ipfw start >&/tmp/ipfw.log sau để bắt đầu ipfw :

Đến đây, dịch vụ firewall sẽ khởi động và bắt đầu bảo vệ server lưu trữ khỏi các kết nối đến các cổng không an toàn.

Lưu ý: Nếu xảy ra sự cố hoặc bạn sử dụng loại firewall khác, firewall có thể chưa biết trạng thái kết nối SSH của bạn, khiến kết nối của bạn với server bị đình trệ. Bạn có thể tìm hiểu bằng lệnh một cái gì đó vào shell. Trong khi kết nối bị dừng, các ký tự sẽ không được in ở mặt điều khiển từ xa. Nếu đúng như vậy, bạn có thể đợi cho đến khi SSH thông báo hết thời gian chờ hoặc thoát ra khỏi terminal bị treo bằng cách nhấn lần lượt các phím này: ENTER , ~ .

Sau khi kết nối SSH của bạn bị đóng, hãy kết nối lại với server từ máy local của bạn:

  • ssh freebsd@your_server_ip

Nếu không thể cài đặt lại kết nối SSH, bạn cần kết nối với nó bằng một phương pháp thay thế. Ví dụ: nếu bạn đang sử dụng DigitalOcean Server, bạn có thể sử dụng tính năng “Quyền truy cập console ” của nó để đăng nhập với quyền là user gốc của bạn bằng password bạn đã đặt trước đó.

Sau khi bạn lấy lại quyền truy cập, hãy hủy kích hoạt firewall :

  • sudo service ipfw stop

Khi firewall bị dừng, bạn có thể tự do gỡ lỗi sự cố.

Tiếp theo, bạn cần xác định network interface của server lưu trữ kết nối với internet. Tìm cái này bằng lệnh:

  • ifconfig

Lệnh này có thể xuất ra một vài giao diện khác nhau. Địa chỉ được server lưu trữ sử dụng để kết nối với internet là địa chỉ bao gồm địa chỉ IP công cộng của server của bạn. Để minh họa, kết quả ví dụ sau cho thấy vtnet0 là network interface được server sử dụng:

Output
vtnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=6c07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6> ether 9a:3e:fa:2a:5f:56 hwaddr 9a:3e:fa:2a:5f:56 inet6 fe80::983e:faff:fe2a:5f56%vtnet0 prefixlen 64 scopeid 0x1 inet public_server_ip netmask 0xffffffc0 broadcast broadcast_ip inet 10.10.0.23 netmask 0xffff0000 broadcast 10.10.255.255 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> media: Ethernet 10Gbase-T <full-duplex> status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 inet 127.0.0.1 netmask 0xff000000 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> groups: lo lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> inet 10.0.0.2 netmask 0xffffff00 inet 10.0.0.3 netmask 0xffffff00 inet6 fe80::1%lo1 prefixlen 64 scopeid 0x3 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> groups: lo

Ghi lại giao diện này, sau đó cấu hình tên của nó trên phạm vi global :

  • sudo sysrc firewall_nat_interface=vtnet0

Mở file kịch bản cấu hình firewall mới:

  • sudo ee /usr/local/etc/ipfw.rules

Sau đó, thêm nội dung sau vào file , xác định các luật firewall cho IPFW:

/usr/local/etc/ipfw.rules
#!/bin/sh set -e  # Add basic rules as defined by firewall_type, firewall_myservices, etc. . /etc/rc.firewall  # External network interface ext_if="$firewall_nat_interface"  # The interface we chose for communication between jails jail_if="lo1"  for interface in "$ext_if" "$jail_if"; do     if [ -z "$interface" ]; then         >&2 echo "Missing network interface"         exit 1     fi     if ! ifconfig $interface >/dev/null 2>&1; then         >2 echo "No such network interface: $interface"         exit 1     fi done  ipfw nat 123 config if $ext_if ipfw add 1 allow all from any to any via $jail_if ipfw add 2 nat 123 ip4 from any to any in via $ext_if ipfw add 501 skipto 20000 udp from any to any 53 out via $ext_if keep-state ipfw add 502 skipto 20000 udp from any to any 67 out via $ext_if keep-state ipfw add 503 skipto 20000 tcp from any to any out via $ext_if setup keep-state ipfw add 504 skipto 20000 icmp from any to any out via $ext_if keep-state ipfw add 19999 deny all from any to any ipfw add 20000 nat 123 ip4 from any to any out via $ext_if ipfw add 20001 allow ip from any to any 

Đây là những gì mỗi phần của tập lệnh thực hiện:

  • . /etc/rc.firewall bao gồm tập lệnh luật IPFW được định nghĩa của hệ thống, tập lệnh này bổ sung các luật cơ bản theo cấu hình của bạn cho các biến firewall_* trong /etc/rc.conf .
  • Khối tiếp theo kiểm tra xem tất cả các giao diện được cấu hình có tồn tại hay không. Điều này là vì sự an toàn của bạn và thoát tập lệnh sớm nếu có cấu hình sai.
  • Các lệnh bắt đầu bằng ipfw thêm cấu hình và luật firewall thực tế. Mỗi luật - được thêm vào các dòng bắt đầu bằng ipfw add - có một số. Tường lửa sử dụng những con số này để đánh giá các luật theo thứ tự tuần tự.
    • ipfw nat 123 config if $ext_if tạo cơ sở NAT trong nhân với ID “123” để dịch lưu lượng bằng network interface công khai.
    • ipfw add 1 allow all from any to any via $jail_if cho phép tất cả lưu lượng giữa các nhà tù. Lưu ý nếu một luật allow phù hợp, quá trình xử lý luật sẽ dừng lại và gói được phép truyền.
    • ipfw add 2 nat 123 ip4 from any to any in via $ext_if dịch tất cả các gói IPv4 đến trên giao diện bên ngoài. Điều này là cần thiết như một đối tác để dịch các gói tin gửi đi, như được mô tả trong phần giải thích của ipfw add 20000...
    • ipfw add 501 skipto 20000 udp from any to any 53 out via $ext_if keep-state và sau skipto luật xác định đó ra bên ngoài giao thông để cho phép và để xem xét cho dịch địa chỉ mạng. Nếu có sự trùng khớp, quá trình xử lý tiếp tục bằng cách chuyển sang luật 20000 , luật này thực hiện NAT. Luật số 501 chủ ý sau các luật lặp lại mặc định từ chối lưu lượng truy cập từ các mạng chỉ local ( 127.0.0.0/8::1 ), chẳng hạn như 00300 deny ip from 127.0.0.0/8 to any . Chạy sudo ipfw list để xem các luật firewall hiện đang hoạt động (nhưng lưu ý ta chưa áp dụng các thay đổi ở trên).
    • Ngoại trừ các skipto luật , có một khoảng cách cố ý giữa luật 219999 nơi /etc/rc.firewall chèn script nào đó luật cơ bản. Nếu không có luật skipto ở trên phù hợp, thì các luật cơ bản sẽ quan tâm đến việc cho phép các loại lưu lượng khác nhau bao gồm vòng lặp, thông báo ping ICMP đến và các cổng được chỉ định bởi firewall_myservices .
    • ipfw add 19999 deny all from any to any đến sau tất cả các luật cơ bản và đảm bảo kết thúc xử lý luật không NAT, về cơ bản không cho phép tất cả lưu lượng truy cập không phù hợp với luật allow trước đó.
    • ipfw add 20000 nat 123 ip4 from any to any out via $ext_if dịch địa chỉ của tất cả các gói IPv4 gửi đi còn lại trên giao diện bên ngoài. Bạn chỉ cần IPv4 ở đây vì trong hướng dẫn này, các tù nhân được chỉ định địa chỉ IPv4 độc quyền.
    • ipfw add 20001 allow ip from any to any chỉ được yêu cầu nếu bạn đã tắt chế độ một lần cho các luật nat , trong trường hợp đó, quá trình xử lý sẽ tiếp tục sau khi thực hiện luật 20000 , yêu cầu bạn cho phép rõ ràng các gói đó thông qua một luật riêng . Đối với chế độ một lần mặc định, firewall sẽ ngừng xử lý ở luật nat và do đó bỏ qua luật 20001 .

Lưu file và thoát khỏi editor .

Vì ta muốn sửa đổi các luật firewall cơ bản, được định nghĩa với các luật được xác định trong tập lệnh ipfw.rules , ta phải trỏ đến tập lệnh này trong file rc.conf . Lệnh sau sẽ cấu hình tập lệnh để thực thi khi nào firewall khởi động:

  • sudo sysrc firewall_script="/usr/local/etc/ipfw.rules"

Cài đặt này sử dụng hỗ trợ NAT trong nhân của IPFW, vì vậy bạn phải yêu cầu hệ thống tải module nhân tương ứng khi khởi động. Ngoài ra, tải module ngay lập tức mà không yêu cầu khởi động lại:

  • sudo sysrc -f /boot/loader.conf ipfw_nat_load=YES
  • sudo kldload ipfw_nat

Khởi động lại firewall để tập lệnh luật firewall mở rộng có hiệu lực:

  • sudo nohup service ipfw restart >/tmp/ipfw.log 2>&1

, nếu bạn đang sử dụng csh shell hoặc một trong các dẫn xuất của nó (như tcsh ), hãy chạy sudo nohup service ipfw restart >&/tmp/ipfw.lo thay vì lệnh trước đó để khởi động lại firewall :

Kiểm tra xem các luật firewall đã được tải đúng chưa:

  • cat /tmp/ipfw.log

Điều này liệt kê các luật firewall , theo sau là một thông báo thành công:

Output
Flushed all rules. 00100 allow ip from any to any via lo0 [...] 65500 deny ip from any to any Firewall rules loaded.

Bạn cũng có thể xem các luật firewall đã cài đặt bất kỳ lúc nào bằng cách sử dụng:

  • sudo ipfw list
Output
00001 allow ip from any to any via lo1 00002 nat 123 ip from any to any in via em0 [...] 65535 deny ip from any to any

Với tất cả các luật firewall , tù nhân của bạn hiện có thể truy cập internet. Bạn có thể kiểm tra bằng cách thử download một trang web từ trong nhà tù:

  • sudo jexec buildbot-master fetch -q -o- http://example.com/
Output
<!doctype html> <html> <head> <title>Example Domain</title> [...]

Như vậy, bạn đã chuẩn bị thành công cả hai nhà tù để chạy như một hệ điều hành thông thường, cài đặt quyền truy cập internet cho mỗi nhà tù và khởi động cả hai nhà tù. Hai bước tiếp theo trong hướng dẫn này sẽ hướng dẫn bạn cài đặt cả thành phần chính và công nhân, sau đó chạy chúng dưới dạng dịch vụ.

Bước 3 - Cài đặt và chạy Buildbot Master

Các thành phần của Buildbot được chia thành nhiều gói. Bạn chỉ cần cài đặt gói py36-buildbot để chạy thành phần chính, nhưng trong hướng dẫn này, ta cũng sẽ giới thiệu cho các bạn cách cài đặt gói giao diện web, py36-buildbot-www .

Vì ta đang sử dụng jails để phân đoạn các thành phần khác nhau, hãy bắt đầu bằng cách mở root shell trong master jail:

  • sudo jexec buildbot-master csh

Xin lưu ý , trong hướng dẫn này, các khối lệnh shell được đánh dấu bằng màu khác nếu chúng phải được thực thi trong jail shell. Ngoài ra, dấu nhắc lệnh sẽ phản ánh profile user nào trong số các profile user của nhà tù - user gốc hoặc user chủ buildbot không có quyền - mà các lệnh đó phải được chạy.

Cài đặt các gói:

  • pkg install py36-buildbot py36-buildbot-www

Nếu bạn chưa cài đặt hoặc sử dụng trình quản lý gói pkg trong tù này, nó sẽ nhắc bạn xác nhận bạn cho phép nó tự khởi động. Để thực hiện việc này, hãy nhấn y và sau đó ENTER . Sau đó, phê duyệt cài đặt các gói Buildbot bằng lệnh lại y .

Tiếp theo, tạo một regular user , không có quyền để chạy dịch vụ chính. Lệnh sau sẽ gán một password ngẫu nhiên cho user này, nhưng bạn không cần phải nhớ password đó vì user root của server (bên ngoài nhà tù) có thể thay đổi nó hoặc trở thành mọi user trong nhà tù mà không cần password :

  • pw useradd -n buildbot-master -m -w random

Sau đó, tạo folder chính nơi bạn sẽ lưu trữ cấu hình:

  • mkdir /var/buildbot-master

Và cấp quyền sở hữu cho user dịch vụ:

  • chown buildbot-master:buildbot-master /var/buildbot-master

Kể từ thời điểm này, tất cả các cài đặt và thay đổi liên quan đến chính phải được thực hiện với quyền user không có quyền , vì điều này sẽ giúp giữ quyền sở hữu và quyền nhất quán.

Chuyển sang user không có quyền :

  • su -l buildbot-master

Sau đó, sử dụng trình buildbot để tạo folder và cấu trúc cấu hình trong folder được chỉ định:

  • buildbot-3.6 create-master /var/buildbot-master

Không giống như các phần mềm CI khác như Jenkins, hành vi của Buildbot được xác định trực tiếp trong file cấu hình của nó, được thông dịch bằng Python. Điều này cho phép tạo version hợp lý cho cấu hình của bạn, trong khi việc sử dụng ngôn ngữ kịch bản cho phép bạn tự do viết các cấu hình xây dựng tùy chỉnh và mở rộng các chức năng Buildbot hiện có.

Gói Buildbot đi kèm với file cấu hình chính mẫu mà bạn có thể sử dụng làm mẫu cho cấu hình của riêng mình. Sao chép cấu hình mẫu và đặt tên là master.cfg :

  • cp /var/buildbot-master/master.cfg.sample /var/buildbot-master/master.cfg

Sau đó, mở file cấu hình cơ sở bằng editor bạn muốn . Ở đây, ta sẽ sử dụng ee :

  • ee /var/buildbot-master/master.cfg

Tệp cấu hình chứa password cần thiết để công nhân kết nối với thiết bị chính. Thay mặc định pass với một password an toàn mà bạn chọn. Ngoài ra, tên nhân viên của ta sẽ là worker0 , vì vậy cũng thay thế example-worker với worker0 ở cả WORKERSBUILDERS phần.

Khi hoàn tất, các phần của file bạn cần chỉnh sửa sẽ giống như sau:

/var/buildbot-master/master.cfg
####### WORKERS  # ... c['workers'] = [worker.Worker("worker0", "your_secure_password")] # ...  ####### BUILDERS  # ... c['builders'] = [] c['builders'].append(     util.BuilderConfig(name="runtests",       workernames=["worker0"],       factory=factory)) # ... 

Lưu file này, sau đó chạy lệnh exit để chuyển trở lại user gốc trong tù:

  • exit

Vì cấu hình mẫu coi repository Git git://github.com/buildbot/hello-world.git làm nguồn thay đổi của nó, bạn cũng cần cài đặt Git:

  • pkg install git-lite

Như vậy, bạn đã tạo cấu trúc và cấu hình folder chính, nhưng dịch vụ vẫn chưa chạy. Để chạy Buildbot theo cách thủ công, người ta có thể chạy lệnh buildbot start từ folder chính, /var/buildbot-master . Tuy nhiên, điều này không quan tâm đến khởi động thời gian khởi động hoặc cấu hình toàn hệ thống khác. Thay vào đó, ta sẽ sử dụng các tập lệnh rc , phương pháp tiêu chuẩn của FreeBSD để chạy các dịch vụ. Cụ thể, ta sẽ làm như vậy bằng cách sử dụng trình service .

Với mục đích của hướng dẫn này, ta muốn cho phép dịch vụ chạy ở mỗi lần khởi động. Trong trường hợp nhà tù, điều này nghĩa là sự kiện bắt đầu của nhà tù. Sử dụng lệnh sau để xác định vị trí của folder chính:

  • sysrc buildbot_basedir=/var/buildbot-master

Sau đó, chỉ định rằng dịch vụ sẽ chạy dưới user buildbot-master :

  • sysrc buildbot_user=buildbot-master

Tiếp theo, cho phép dịch vụ chạy khi khởi động tù:

  • sysrc buildbot_enable=YES

Tại thời điểm viết bài, gói py36-buildbot có một lỗi khiến dịch vụ không thể khởi động (xem báo cáo lỗi này ). Cho đến khi điều này được khắc phục, bạn cần phải vá kịch bản bắt đầu theo cách thủ công bằng cách chạy lệnh sau từ nhà tù buildbot-master của bạn:

  • sed -i '' 's|command="/usr/local/bin/buildbot"|command="/usr/local/bin/buildbot-3.6"|' /usr/local/etc/rc.d/buildbot

Sau đó, bắt đầu dịch vụ:

  • service buildbot start

Dịch vụ sẽ bắt đầu không có lỗi. Bạn có thể xác minh thành công bằng cách xem nội dung của file log :

  • tail /var/buildbot-master/twistd.log
Output
2018-06-08 15:14:52+0000 [-] Starting BuildMaster -- buildbot.version: 0.9.11 2018-06-08 15:14:52+0000 [-] Loading configuration from '/var/buildbot-master/master.cfg' [...] 2018-06-08 15:14:52+0000 [-] BuildMaster is running

Để quay lại shell server , hãy chạy exit khỏi shell tù:

  • exit

Bạn đã cấu hình thành công và khởi động dịch vụ chính Buildbot. Thành phần thứ hai, worker, được yêu cầu để thực sự chạy các bản dựng. Bạn sẽ cài đặt một công nhân trong phần tiếp theo bên trong nhà tù thứ hai và sau đó cấu hình kết nối của nó với dịch vụ chính.

Bước 4 - Cài đặt và chạy Buildbot Worker

Mặc dù Buildbot master đang chạy, không có bản dựng nào có thể xảy ra vì bạn cần ít nhất một nhân viên đang chạy. Bước này tương tự như bước trước đó là ta sẽ cài đặt một nhà tù riêng trước rồi mới cài đặt dịch vụ. Tuy nhiên, lần này, thành phần Buildbot worker sẽ kết nối với master để lắng nghe các lệnh và báo cáo lại kết quả.

Các hướng dẫn trong bước này gần như giống với cài đặt chính, ngoại trừ thành phần worker là một phần của gói khác và các thay đổi cấu hình duy nhất mà bạn sẽ thực hiện liên quan đến việc thêm chi tiết về cách kết nối nó với master và một số thông tin hiển thị về chính worker.

Đảm bảo bạn đang ở trong server , không phải trong nhà tù. Sau đó, mở một shell gốc trong tù công nhân:

  • sudo jexec buildbot-worker0 csh

Lưu ý , trong hướng dẫn này, các khối lệnh được đánh dấu bằng màu khác nếu chúng phải được thực thi trong shell và các dấu nhắc lệnh sẽ phản ánh profile user mà các lệnh sẽ được chạy theo.

Cài đặt gói Buildbot worker bằng lệnh sau:

  • pkg install py36-buildbot-worker

Khi lệnh này chạy, nó sẽ nhắc bạn xác nhận xem bạn có muốn khởi động tiện ích quản lý gói pkg . Làm như vậy bằng lệnh y . Nó cũng sẽ yêu cầu bạn xác nhận bạn chấp thuận cài đặt các gói, vì vậy hãy nhập lại y khi được yêu cầu .

Tiếp theo, tạo một regular user , không có quyền để chạy dịch vụ worker:

  • pw useradd -n buildbot-worker -m -w random

Sau đó, tạo folder công nhân. Đây là vị trí nơi lưu trữ cấu hình, thông tin hiển thị và folder xây dựng của worker:

  • mkdir /var/buildbot-worker

Cấp quyền sở hữu cho user dịch vụ:

  • chown buildbot-worker:buildbot-worker /var/buildbot-worker

Kể từ thời điểm này, tất cả các cài đặt và thay đổi liên quan đến worker sẽ được thực thi với quyền là user không có quyền . Để đạt được điều đó, hãy chuyển sang user buildbot-worker :

  • su -l buildbot-worker

Sử dụng trình buildbot-worker để tạo folder và cấu trúc cấu hình trong folder /var/buildbot-worker . Xác định địa chỉ IP của thạc sĩ tù nhân - 10.0.0.2 , mà ta đã chọn ở bước trước - vì vậy người lao động có thể kết nối đến nó và thay thế pass với password mà bạn đã định nghĩa trong file cấu hình tổng thể:

  • buildbot-worker-3.6 create-worker /var/buildbot-worker 10.0.0.2 worker0 'pass'

Để hoàn tất quá trình cài đặt , hãy điền vào một vài chi tiết về administrator hệ thống và mục đích của nhân viên:

  • echo 'Your Name <your.email.address@example.com>' >/var/buildbot-worker/info/admin
  • echo 'Description of this worker' >/var/buildbot-worker/info/host

Sau đó, chạy lệnh exit để chuyển trở lại user root trong tù:

  • exit

Vì cấu hình mẫu sao chép git://github.com/buildbot/hello-world.git repository Git để xây dựng dự án mẫu, bạn cũng cần cài đặt Git trong nhà tù này. Lưu ý cách Buildbot master cũng yêu cầu Git vì các nguồn thay đổi chạy trên master. Ngoài ra, trình xây dựng sử dụng một trình chạy trial được gọi là trial , là một phần của gói py27-twisted , vì vậy hãy cài đặt trình này cùng với git-lite :

  • pkg install git-lite py27-twisted

Cơ chế cài sẵn để chạy một worker là buildbot-worker start , cơ chế này sẽ được chạy từ folder worker, /var/buildbot-worker . Tuy nhiên, điều này không quan tâm đến việc khởi động thời gian khởi động và không đảm bảo nó sẽ chạy dưới quyền user . Như bạn đã làm với bản root , hãy tận dụng tập lệnh rc đóng gói bằng cách sử dụng trình service , để quản lý dịch vụ.

Sử dụng các lệnh sau để xác định folder worker cũng như user và group mà dịch vụ sẽ chạy theo:

  • sysrc buildbot_worker_basedir=/var/buildbot-worker
  • sysrc buildbot_worker_uid=buildbot-worker
  • sysrc buildbot_worker_gid=buildbot-worker

Tiếp theo, cho phép dịch vụ chạy khi khởi động tù:

  • sysrc buildbot_worker_enable=YES

Tại thời điểm viết bài, py36-buildbot-worker có một lỗi khiến dịch vụ không thể khởi động (xem báo cáo lỗi này ). Cho đến khi điều này được khắc phục, bạn cần phải vá kịch bản bắt đầu theo cách thủ công bằng cách chạy lệnh sau từ nhà tù buildbot-worker0 của bạn:

  • sed -i '' 's|command="/usr/local/bin/twistd"|command="/usr/local/bin/twistd-3.6"|' /usr/local/etc/rc.d/buildbot-worker

Cuối cùng, khởi động thành phần worker:

  • service buildbot-worker start

Dịch vụ sẽ bắt đầu không có lỗi. Bạn có thể xác minh nó đã thành công bằng cách xem các mục nhập mới nhất vào file log :

  • tail /var/buildbot-worker/twistd.log

Nếu dịch vụ bắt đầu thành công, một thông báo như Đã Connected to 10.0.0.2:9989; worker is ready sẽ xuất hiện trong file log . Nếu bạn quên chỉ định password mới trước đó trong bước này, dịch vụ sẽ không thể kết nối với password chính. Trong trường hợp này, hãy chỉnh sửa file /var/buildbot-worker/buildbot.tac và sau đó chạy service buildbot-worker restart để khắc phục sự cố này.

Khi dịch vụ khởi động chính xác, hãy thoát ra khỏi server bằng cách chạy lệnh exit từ shell tù:

  • exit

Cùng với đó, bản jail thứ hai đã được cấu hình và bạn có tất cả các thành phần cơ bản cần thiết để vận hành Buildbot. Để có thể sử dụng dễ dàng cho user của bạn, bạn cũng nên cài đặt giao diện user dựa trên web. Làm như vậy sẽ cho phép bạn kiểm soát Buildbot và xem kết quả xây dựng với sự tiện lợi hơn.

Bước 5 - Cài đặt Giao diện Web Buildbot

Buildbot có giao diện user dựa trên web hiển thị tổng quan và kết quả của bản dựng, đồng thời cho phép bạn kích hoạt các bản dựng theo cách thủ công nếu bộ lập lịch “buộc” được cấu hình , như trường hợp trong cấu hình mẫu.

Cấu hình chính của bạn đã cài đặt thành phần www để phân phát HTTP qua cổng 8010 . Trong cài đặt production , bạn sẽ không cung cấp HTTP không được mã hóa hoặc mở cổng không chuẩn 8010 ra bên ngoài, vì điều này sẽ mở hệ thống của bạn trước các lỗ hổng bảo mật. Ngoài ra, giao diện web có thể được phục vụ từ bất kỳ đường dẫn URL nào, nghĩa là nó không cần phải là ứng dụng duy nhất trên domain của bạn. Ví dụ: bạn có thể cung cấp kết quả hoặc log bản dựng cho user của bạn . Do đó, ta sẽ cung cấp giao diện user cho user bằng một web server riêng - Nginx - để hỗ trợ HTTPS, bảo vệ các cổng nội bộ và có được khả năng phân phát nội dung khác cùng với giao diện web Buildbot.

Mở file cấu hình Nginx để chỉnh sửa:

  • sudo ee /usr/local/etc/nginx/nginx.conf

Thêm các khối location đánh dấu sau trong khối server hiện có của file :

/usr/local/etc/nginx/nginx.conf
 . . . http {  . . .     server {   . . .         location / {             root /usr/local/www/nginx;             index index.html index.htm;         }          location /buildbot/ {             proxy_pass http://10.0.0.2:8010/;         }         location /buildbot/sse/ {             # proxy buffering will prevent sse to work             proxy_buffering off;             proxy_pass http://10.0.0.2:8010/sse/;         }         # required for websocket         location /buildbot/ws {             proxy_http_version 1.1;             proxy_set_header Upgrade $http_upgrade;             proxy_set_header Connection "upgrade";             proxy_pass http://10.0.0.2:8010/ws;             # raise the proxy timeout for the websocket             proxy_read_timeout 6000s;         }          error_page 500 502 503 504 /50x.html;         location = /50x.html {             root /usr/local/www/nginx-dist;         }                  . . .      } } 

Cấu hình này chuyển tiếp tất cả các yêu cầu bên dưới đường dẫn URL /buildbot/ đến giao diện web và bật hỗ trợ WebSocket, được giao diện sử dụng để nhận các bản cập nhật mà nó sẽ hiển thị, chẳng hạn như kết quả log của một bản dựng đang chạy.

Lưu file cấu hình Nginx. Sau đó, reload dịch vụ Nginx:

  • sudo service nginx reload

Mở trình duyệt web bạn muốn trên máy local của bạn và truy cập giao diện web Buildbot bằng cách truy cập URL sau:

https://example.com/buildbot/ 

Ngoài ra, nếu bạn chưa cài đặt domain cho server của bạn , thay vào đó, bạn cần nhập địa chỉ IP công khai của server , http:// your_server_ip /buildbot/ .

Khi đến giao diện, bạn sẽ thấy tổng quan tương tự như sau:

Tổng quan về giao diện web

Trang chính có thể hiển thị cảnh báo rằng URL Buildbot bị cấu hình sai. Điều này xảy ra nếu tên server được cung cấp trong file nginx.conf không trùng với những gì được liệt kê trong cấu hình Buildbot chính. Vì các email kết quả xây dựng có chứa các liên kết đến giao diện web Buildbot theo mặc định, user phải biết URL chính xác nơi có thể truy cập.

Lưu ý , trong cấu hình ví dụ của ta , ta chưa cài đặt dịch vụ email này. Nếu bạn quan tâm đến việc cấu hình này, hãy xem tài liệu của Buildbot về các phóng viên để biết thêm thông tin:

Như đã nói, để giải quyết cảnh báo và gửi email có chứa nội dung chính xác, hãy chỉnh sửa cấu hình chính Buildbot để trỏ đến domain của bạn.

  • sudo ee /usr/jails/buildbot-master/var/buildbot-master/master.cfg

Tìm dòng bắt đầu bằng c['buildbotURL'] và thay thế tùy chọn mặc định bằng domain của bạn, theo sau là /buildbot/ :

/var/buildbot-master/master.cfg
####### PROJECT IDENTITY # ... c['buildbotURL'] = 'https://example.com/buildbot/' # ... 

Lưu và đóng file . Sau đó, để áp dụng cấu hình mới, hãy reload dịch vụ buildbot :

  • sudo jexec buildbot-master service buildbot reload

Làm mới giao diện web Buildbot trong trình duyệt của bạn và cảnh báo sẽ không xuất hiện .

Server Tích hợp liên tục thường phục vụ các mục đích khác ngoài CI. Ví dụ: một server CI có thể cung cấp kết quả bản dựng cho các gói FreeBSD hoặc log qua HTTPS. Do đó, bạn nên đặt trước đường dẫn URL /buildbot/ cho giao diện web. Điều này cho phép bạn lưu trữ nhiều ứng dụng hơn theo các đường dẫn khác nhau. Hiện tại, ta sẽ tạo một trang chủ đơn giản chuyển hướng đến giao diện web. Bạn có thể thêm nhiều liên kết hơn sau khi triển khai nhiều trường hợp sử dụng hơn cho web server .

Chạy lệnh sau để mở file index trong root web của bạn - thay thế example.com bằng domain của bạn - để tạo chuyển hướng tự động đến giao diện web Buildbot:

  • sudo ee /usr/local/www/example.com/html/index.html

Lưu ý: Nếu bạn không làm theo hướng dẫn Nginx yêu cầu và tạo một root web mới cho cấu hình Nginx của bạn , thay vào đó, bạn cần tạo file index dưới root web Nginx mặc định bằng cách chạy sudo ee /usr/local/www/nginx/index.html .

Thay thế bất kỳ nội dung file hiện có nào bằng các dòng sau:

/usr/local/www/nginx/index.html
<html> <body> <a href="/buildbot/">buildbot</a> <script>     // Auto-redirect while only the web interface should be served     window.location.href = "/buildbot/"; </script> </body> </html> 

Lưu file này, sau đó nhập domain hoặc địa chỉ IP của bạn vào thanh URL của trình duyệt. Nó sẽ tự động chuyển hướng bạn đến giao diện Buildbot.

Bạn đã hoàn tất quá trình cài đặt tất cả các thành phần Buildbot, bao gồm cả giao diện điều khiển và xem dựa trên web của nó. Với tất cả những điều này, hãy chạy một bản dựng thực tế như được chỉ định trong cấu hình mẫu mà ta đã cài đặt cho bản chính.

Trình tạo có bộ lập lịch “lực lượng” được cấu hình theo mặc định, cho phép bạn kích hoạt bản dựng đầu tiên của bạn . Trong giao diện web, nhấp xây dựng> Xây Dựng> runtests> lực> Bắt đầu xây dựng và xem làm thế nào xây dựng chạy. Nếu bạn thấy bất kỳ lỗi nào, hãy kiểm tra kết nối internet của server và liệu tất cả các gói phụ thuộc đã được cài đặt như mô tả trước đó chưa.

Ảnh chụp màn hình thành công xây dựng mẫu

Bạn có thể tìm thấy các tạo tác từ bản dựng này (và những thứ khác) bằng cách xem nội dung của folder bản dựng:

  • ls /usr/jails/buildbot-worker0/var/buildbot-worker/runtests
Output
build

Bạn đã cấu hình thành công một hệ thống CI linh hoạt và chạy vĩnh viễn và bây giờ có thể bắt đầu triển khai các bản dựng của bạn .

Kết luận

Bằng cách hoàn thành hướng dẫn này, bạn đã thực hành tạo các phòng giam FreeBSD và học một số kiến thức cơ bản về khung tự động Buildbot, dẫn đến việc cài đặt sẵn sàng sử dụng. Để tìm hiểu thêm về Buildbot và cấu hình của nó, ta khuyến khích bạn đọc qua tài liệu Buildbot chính thức .

Từ đây, bạn có thể tự do triển khai các phương pháp tự động hóa và Tích hợp liên tục của riêng mình. Để có một cài đặt an toàn, ổn định và hiệu suất cho việc sử dụng production , bạn có thể cần thực hiện các bước cấu hình tùy chọn sau:

  • Chỉ sử dụng HTTPS (như được giải thích trong hướng dẫn này)
  • Trong hướng dẫn này, bạn đã sử dụng lo1 mạng nội bộ, riêng biệt cho nhà tù của bạn . Trong hướng dẫn này, ta đã sử dụng ipfw cho mục đích NAT, nhưng các firewall khác cũng có tính năng này. Kiểm tra tài liệu FreeBSD về tường lửa có sẵn . Trừ khi trường hợp sử dụng của bạn yêu cầu khác, bạn nên giữ cho mạng tù không thể truy cập từ bên ngoài thông qua việc sử dụng NAT hoặc các cơ chế khác.
  • Giao diện web của Buildbot không yêu cầu đăng nhập hoặc kiểm tra quyền của user theo mặc định. Để thực hiện những điều này, bạn sẽ phải bật xác thực user .

Tags:

Các tin liên quan