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  sudokhô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:
-  workerlà tên của folder nơi các cài đặt của worker sẽ được lưu trữ
-  localhostlà địa chỉ nơi master của worker đang chạy
-  example-workerlà tên của worker và phải nhận dạng duy nhất worker trong file~/master/master.cfg.
-  passlà 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 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 bảo mật 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
 

