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ụngexample.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
Outputlo1: 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
:
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.start
và exec.stop
giá trị sử dụng ở đây tuyên bố rằng của tù start
và stop
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:
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ả stderr
và stdout
đế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:
Outputvtnet0: 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:
#!/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ếnfirewall_*
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ằngipfw 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ậtallow
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ủaipfw add 20000...
-
ipfw add 501 skipto 20000 udp from any to any 53 out via $ext_if keep-state
và sauskipto
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ật20000
, 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
và::1
), chẳng hạn như00300 deny ip from 127.0.0.0/8 to any
. Chạysudo 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ật2
và19999
nơi/etc/rc.firewall
chèn script nào đó luật cơ bản. Nếu không có luậtskipto
ở 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ởifirewall_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ậtallow
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ậtnat
, trong trường hợp đó, quá trình xử lý sẽ tiếp tục sau khi thực hiện luật20000
, 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ậtnat
và do đó bỏ qua luật20001
.
-
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:
OutputFlushed 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
Output00001 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ả WORKERS
và BUILDERS
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:
####### 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
Output2018-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 :
. . . 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:
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/
:
####### 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:
<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.
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
Outputbuild
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ụngipfw
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 .
Các tin liên quan