Cách cài đặt Buildbot trên Ubuntu 16.04
Buildbot là một hệ thống tích hợp liên tục dựa trên Python để tự động hóa các quy trình xây dựng, kiểm tra và phát hành phần mềm. Nó sử dụng thư viện Twisted của Python để xử lý giao tiếp không đồng bộ giữa người xây dựng và một hoặc nhiều công nhân để tạo điều kiện thuận lợi cho việc thử nghiệm các bản dựng trên nhiều nền tảng. Buildbot có thể cấu hình cao và ít đưa ra giả định về cách thức hoạt động của quy trình xây dựng, điều này làm cho nó phù hợp với các quy trình xây dựng phức tạp hoặc các dự án yêu cầu các công cụ của họ phát triển theo nhu cầu riêng của dự án.Trong hướng dẫn này, ta sẽ cài đặt và cấu hình người xây dựng Buildbot và công nhân trên cùng một máy.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Server Ubuntu 16.04 có ít nhất 1 GB RAM , được cấu hình với user
sudo
không phải root và firewall như được mô tả trong hướng dẫn cài đặt server ban đầu Ubuntu 16.04 .
Khi server được cài đặt , bạn đã sẵn sàng theo dõi.
Bước 1 - Cài đặt Buildbot
Dự án Buildbot khuyên bạn nên sử dụng Index gói Python, pip, để cài đặt Buildbot nhằm có được version mới nhất, thường là một vài bản phát hành trước những gì có sẵn trong các gói Ubuntu.
Ta sẽ bắt đầu với quyền là user sudo
của bạn và sử dụng apt-get update
đảm bảo ta có danh sách các gói mới nhất:
- sudo apt-get update
Sau đó, ta sẽ cài đặt chính pip:
- sudo apt-get install python-pip
Sau khi có pip, ta sẽ sử dụng nó để cài đặt gói Buildbot, bao gồm master và worker cũng như các phụ thuộc khác, bao gồm cả những thứ mà giao diện web yêu cầu. Pip tạo các file .cache
trong folder chính của user thực thi nó. Ta sẽ sử dụng cờ -H
của sudo
để đặt các file này vào đúng vị trí:
- sudo -H pip install 'buildbot[bundle]'
Tùy thuộc vào tốc độ server của bạn, quá trình này có thể mất một chút thời gian để hoàn thành. Kết thúc kết quả từ cài đặt thành công sẽ trông giống như sau:
Output. . . Successfully installed Automat-0.6.0 Jinja2-2.10 MarkupSafe-1.0 PyJWT-1.6.0 Tempita-0.5.2 Twisted-17.9.0 attrs-17.4.0 autobahn-18.3.1 buildbot-1.0.0 buildbot-console-view-1.0.0 buildbot-grid-view-1.0.0 buildbot-waterfall-view-1.0.0 buildbot-worker-1.0.0 buildbot-www-1.0.0 constantly-15.1.0 decorator-4.2.1 future-0.16.0 hyperlink-18.0.0 idna-2.6 incremental-17.5.0 pbr-3.1.1 python-dateutil-2.6.1 six-1.11.0 sqlalchemy-1.2.5 sqlalchemy-migrate-0.11.0 sqlparse-0.2.4 txaio-2.9.0 zope.interface-4.4.3
Nó cũng có thể hiển thị một khuyến nghị để tự nâng cấp pip:
Output. . . You are using pip version 8.1.1, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
Mặc dù điều này sẽ không ảnh hưởng đến cài đặt Buildbot của ta , nhưng ta sẽ mất một chút thời gian để nâng cấp lên bản phát hành mới nhất của pip:
- sudo -H pip install --upgrade pip
OutputCollecting pip Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB) 100% |████████████████████████████████| 1.3MB 768kB/s Installing collected packages: pip Found existing installation: pip 8.1.1 Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr Successfully installed pip-9.0.1
Cuối cùng, ta sẽ xác minh việc cài đặt Buildbot bằng cách kiểm tra version :
- buildbot --version
OutputBuildbot version: 1.0.0 Twisted version: 17.9.0
Trong yêu cầu của hướng dẫn, ta đã cấu hình firewall UFW để chỉ cho phép lưu lượng SSH. Ta sẽ xác minh trạng thái:
- sudo ufw status
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Buildbot sử dụng cổng 8010 cho giao diện web, cổng này không được phép, vì vậy ta sẽ mở cổng đó ngay bây giờ.
- sudo ufw allow 8010
Sau đó, ta sẽ thêm một group và user hệ thống chuyên dụng để chạy các dịch vụ Buildbot:
- sudo addgroup --system buildbot
- sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash
Cuối cùng, ta sẽ đăng nhập với quyền là user mới để cài đặt Buildbot:
- sudo --login --user buildbot
Thao tác này sẽ đăng nhập ta với quyền là user buildbot
và đặt ta vào folder /home/buildbot
, nơi ta sẽ cấu hình master và worker của bạn :
Bước 2 - Cấu hình Master
Ta sẽ sử dụng lệnh buildbot create-master
theo sau là giá trị của folder cơ sở:
- buildbot create-master ~/master
Outputmkdir /home/buildbot/master creating /home/buildbot/master/master.cfg.sample creating database (sqlite:///state.sqlite) buildmaster configured in /home/buildbot/master
Tiếp theo, ta sẽ sao chép master.cfg.sample
sang master.cfg
và để nguyên bản root để tham khảo:
- cp ~/master/master.cfg.sample ~/master/master.cfg
Sau đó, ta sẽ chỉnh sửa file để cho phép ta truy cập giao diện web từ một máy local .
- nano ~/master/master.cfg
Để truy cập giao diện web từ máy tính để bàn hoặc thiết bị khác, ta sẽ thay đổi buildbotURL
từ localhost
thành địa chỉ IP hoặc domain của server . Ta cũng sẽ đặt policy báo cáo sử dụng. Các giá trị cấu hình quan trọng khác được đặt trong master.cfg
, nhưng ta sẽ giữ phần còn lại của các giá trị mặc định ngay bây giờ.
Gần cuối file , tìm dòng buildbotURL
và thay thế localhost
bằng địa chỉ IP hoặc domain của trang web :
c['buildbotURL'] = "http://IP_or_site_domain:8010/"
Lưu ý: master.cfg
cũng xác định trước một worker trong phần "Công nhân".
. . . ####### WORKERS # The 'workers' list defines the set of recognized workers. Each element is # a Worker object, specifying a unique worker name and password. The same # worker name and password must be configured on the worker. c['workers'] = [worker.Worker("example-worker", "pass")] . . .
Phần sau của hướng dẫn, ta sẽ tạo một worker với các thông tin đăng nhập này.
Tiếp theo, ở cuối file , đặt giá trị của chỉ thị buildbotNetUsageData
. Điều này xác định xem Buildbot có báo cáo thống kê sử dụng cho nhà phát triển để hỗ trợ cải thiện ứng dụng hay không. Bạn có thể đặt cài đặt này thành None
để chọn không tham gia. Nếu bạn không ngại gửi lại thông tin cơ bản về cách sử dụng của bạn , hãy sử dụng chuỗi "basic"
thay thế.
Bạn có thể tìm thêm về cài đặt này trong tài liệu cấu hình global Buildbot :
c['buildbotNetUsageData'] = None # To send back basic information, use this instead: #c['buildbotNetUsageData'] = 'basic'
Khi bạn đã sửa đổi 'buildbotURL'
và thêm dòng buildbotNetUsageData
, hãy lưu và thoát khỏi file .
Kiểm tra cấu hình của cái chính bằng lệnh :
- buildbot checkconfig ~/master
Bạn sẽ nhận được kết quả kết thúc bằng thông báo sau nếu cú pháp ổn:
Output. . . Config file is good!
Nếu kết quả cho biết có lỗi cú pháp, hãy quay lại và kiểm tra lại file . Khi lệnh checkconfig
cho biết thành công, hãy bắt đầu cái chính:
- buildbot start ~/master
Khi khởi động lại thành công, bạn sẽ nhận được xác nhận sau:
OutputFollowing twistd.log until startup finished.. The buildmaster appears to have (re)started correctly.
Cuối cùng, hãy truy cập trang web trong trình duyệt web trên cổng 8010 tại buildbotURL
mà ta đã cấu hình :
http:// IP_or_site_domain :8010/
Bây giờ ta có master đang chạy và đã xác minh ta có thể truy cập giao diện web, ta sẽ tạo ví dụ worker.
Bước 3 - Cấu hình Worker
Mối quan hệ giữa master và worker được cài đặt khi tên và password của worker trong file master.cfg
trùng với tên và password của worker được cấu hình để sử dụng master.
Trong bước này, ta sẽ tạo và cấu hình một nhân viên bằng cách gọi buildbot-worker
's create-worker
lệnh và đi qua trong bốn cài đặt:
-
worker
là tên của folder nơi các cài đặt của worker sẽ được lưu trữ -
localhost
là địa chỉ nơi master của worker đang chạy -
example-worker
là tên của worker và phải nhận dạng duy nhất worker trong file~/master/master.cfg
. -
pass
là password của worker và password này phải trùng với giá trị trong~master/master.cfg
.
- buildbot-worker create-worker ~/worker localhost example-worker pass
Outputmkdir /home/buildbot/worker mkdir /home/buildbot/worker/info Creating info/admin, you need to edit it appropriately. Creating info/host, you need to edit it appropriately. Not creating info/access_uri - add it if you wish Please edit the files in /home/buildbot/worker/info appropriately. worker configured in /home/buildbot/worker
Khi lần đầu tiên worker kết nối, nó sẽ gửi các file trong folder info
đến người quản lý bản dựng nơi nó chạy. Chúng sẽ được hiển thị trong giao diện web để cung cấp cho các nhà phát triển thêm thông tin về các lỗi thử nghiệm.
Ta sẽ cấu hình chúng ngay bây giờ. Đầu tiên, mở file chứa e-mail của administrator , xóa dòng ví dụ Your Name Here <admin@youraddress.invalid>
và thay thế bằng tên và địa chỉ email của bạn.
- nano ~/worker/info/admin
Sammy Shark <sammy@digitalocean.com>
Khi bạn hoàn tất, hãy lưu và thoát khỏi file .
Theo quy ước, file info/host
cung cấp hệ điều hành, version , kích thước bộ nhớ, tốc độ CPU, các version của các thư viện liên quan được cài đặt và cuối cùng là version Buildbot chạy trên worker.
Mở file và dán thông tin liên quan, cập nhật nội dung mẫu nếu cần cho hệ thống của bạn:
- nano ~/worker/info/host
Cập nhật thông tin bạn sử dụng để phản ánh các chi tiết cụ thể của hệ thống :
Ubuntu 16.04.2 2GB Server - Buildbot version: 1.0.0 - Twisted version: 17.1.0
Khi bạn hoàn tất, hãy lưu và thoát. Cuối cùng, bắt đầu công nhân:
- buildbot-worker start ~/worker
OutputFollowing twistd.log until startup finished.. The buildbot-worker appears to have (re)started correctly.
Bây giờ cả master và worker đều được cấu hình và đang chạy, ta sẽ thực hiện một bản dựng thử nghiệm.
Bước 4 - Chạy bản dựng thử nghiệm
Để chạy một bản dựng thử nghiệm, ta sẽ mở menu “Công trình” trong giao diện web, sau đó chọn “Công nhân”. Công nhân mẫu và thông tin ta đặt trong info/admin
và info/host
sẽ được hiển thị. Từ đây, ta có thể nhấp vào trình tạo mặc định, "runtests" để bắt buộc xây dựng.
Màn hình "runtests" sẽ có ít thông tin cho đến khi yêu cầu xây dựng đầu tiên được thực hiện. Bây giờ ta sẽ buộc một cái bằng cách nhấp vào nút "lực lượng" ở phía trên bên phải của màn hình:
Thao tác này sẽ hiển thị một hộp thoại cho phép bạn nhập thông tin về bản dựng bắt buộc.
Đối với bản dựng thử nghiệm này, ta sẽ để trống các trường và nhấp vào nút “Bắt đầu bản dựng” trong cửa sổ bật lên. Lưu ý nếu bạn nhập giá trị vào trường "Tên của bạn", thì giá trị đó phải chứa địa chỉ email hợp lệ.
Trong vài giây nữa, quá trình xây dựng sẽ hoàn tất thành công:
Bạn có thể khám phá chi tiết của từng bước trong bản dựng bằng cách nhấp vào số hoặc mũi tên bên cạnh tên của nó:
Bạn có thể nhận thấy rằng ta không bắt buộc phải đăng nhập để thực hiện bản dựng này. Theo mặc định, bất kỳ ai cũng có thể truy cập các chức năng quản trị, vì vậy trước khi hoàn thành, ta sẽ dành một chút thời gian để khóa chức năng đó và tạo account user . Bạn có thể tìm hiểu thêm về các tùy chọn có sẵn trong [Tài liệu ủy quyền của Buildbot]. ( Http://docs.buildbot.net/current/developer/authz.html ).
Mở lại file master.cfg
:
- nano ~/master/master.cfg
Ở cuối file , thêm các dòng sau, thay đổi tên user và password .
. . . c['www']['authz'] = util.Authz( allowRules = [ util.AnyEndpointMatcher(role="admins") ], roleMatchers = [ util.RolesFromUsername(roles=['admins'], usernames=['Sammy']) ] ) c['www']['auth'] = util.UserPasswordAuth({'Sammy': 'Password'})
Khi bạn hoàn tất, hãy chạy một kiểm tra cú pháp khác trên file :
- buildbot checkconfig ~/master
OutputConfig file is good!
Nếu không có lỗi nào được hiển thị, hãy khởi động lại dịch vụ chính:
- buildbot restart ~/master
Khi ta reload giao diện web, một liên kết sẽ xuất hiện ở phía trên bên phải cho biết Ẩn danh và quyền truy cập vào các chức năng quản trị không còn nữa.
Ta sẽ kiểm tra thông tin đăng nhập mà ta vừa thêm bằng cách nhấp vào “Ẩn danh”, điều này sẽ hiển thị hộp đăng nhập nơi ta có thể nhập tên user và password mà ta đã cấu hình . Khi ta đăng nhập, ta sẽ thấy rằng mặc dù “Anonymous” không còn quyền truy cập để bắt đầu xây dựng, user “Sammy” của ta thì có.
Đến đây, quá trình cài đặt Buildbot của ta đã hoàn tất và ta đã thực hiện một bước tối thiểu để bảo mật giao diện. Tuy nhiên, tên user và password đang được truyền ở dạng văn bản thuần túy. Ta khuyên bạn nên thực hiện bước tiếp theo và trước khi sử dụng Buildbot một cách nghiêm túc rằng bạn nên bảo mật giao diện web bằng reverse-proxy .
Kết luận
Trong hướng dẫn này, ta đã cài đặt và cấu hình Buildbot master và một Buildbot worker local trên cùng một máy. Nếu bạn đang đánh giá Buildbot, bạn có thể cần tham gia Chuyến tham quan nhanh của dự án.
Nếu không, hãy chuyển sang hướng dẫn tiếp theo, Cách tạo file đơn vị Systemd cho Buildbot , để cho phép hệ thống init của server quản lý các quy trình Buildbot.
Các tin liên quan
Cách cài đặt và bảo mật Memcached trên Ubuntu 16.042018-03-06
Cách quản lý an toàn bí mật với HashiCorp Vault trên Ubuntu 16.04
2018-02-28
Cách bảo mật Roundcube trên Ubuntu 16.04
2018-02-24
Cách cài đặt ứng dụng Webmail của riêng bạn với Roundcube trên Ubuntu 16.04
2018-02-24
Cách thiết lập và sử dụng LXD trên Ubuntu 16.04
2018-02-22
Cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 16.04
2018-02-20
Cách thiết lập vsftpd cho Thư mục người dùng trên Ubuntu 16.04
2018-02-20
Cách thiết lập đường ống tích hợp liên tục với GitLab CI trên Ubuntu 16.04
2018-01-26
Cách cài đặt Swift và Vapor trên Ubuntu 16.04
2018-01-25
Cách cài đặt và cấu hình GitLab trên Ubuntu 16.04
2018-01-24