Thứ ba, 06/03/2018 | 00:00 GMT+7

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 :

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
Output
Collecting 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
Output
Buildbot 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
Output
Status: 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
Output
mkdir /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 :

~ / master / master.cfg
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".

~ / master / master.cfg
. . . ####### 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 :

~ / master / master.cfg
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:

Output
Following 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/

Ảnh chụp màn hình Chào mừng của Buildbot

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
Output
mkdir /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
~ / 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 :

~ / worker / info / host
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
Output
Following 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/admininfo/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.

Ảnh chụp màn hình Buildbot’s worker Screen

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:

Ảnh chụp màn hình hiển thị nút lực

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.
Ảnh chụp màn hình cửa sổ bật lên xây dựng lực lượng của Buildbot

Đố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:

Ảnh chụp màn hình hiển thị bản dựng 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ó:

nhập mô tả hình ảnh ở đây

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 .

Tệp: ~ / master / master.cfg
. . . 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
Output
Config 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.

nhập mô tả hình ảnh ở đây

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ó.

nhập mô tả hình ảnh ở đây

Đế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.


Tags:

Các tin liên quan

Cách cài đặt và bảo mật Memcached trên Ubuntu 16.04
2018-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