Thứ ba, 01/08/2017 | 00:00 GMT+7

Cách cài đặt và cấu hình GoCD trên Ubuntu 16.04

GoCD là một nền tảng phân phối và tích hợp liên tục mạnh mẽ được thiết kế để tự động hóa các quy trình thử nghiệm và phát hành. Với nhiều tính năng nâng cao như khả năng so sánh các bản dựng, trực quan hóa quy trình làm việc phức tạp và tự động hóa theo dõi version bản dựng, GoCD là một công cụ linh hoạt có thể giúp các group cung cấp phần mềm đã được kiểm tra tốt cho môi trường production .

Trong hướng dẫn này, ta sẽ trình bày cách cài đặt server GoCD trên Ubuntu 16.04. Ta sẽ cài đặt server và một đại lý để hoàn thành công việc CI / CD bằng các gói do dự án cung cấp. Sau đó, ta sẽ cấu hình xác thực và sửa đổi một số tùy chọn cơ bản để cài đặt server của bạn .

Yêu cầu

Dựa trên các khuyến nghị từ dự án GoCD , bạn cần một server Ubuntu 16.04 với ít nhất 2G RAM và 2 lõi CPU để hoàn thành hướng dẫn này. Ngoài ra, để xử lý tạo tác bản dựng mà không làm hỏng dữ liệu , server của bạn cần một phân vùng hoặc đĩa chuyên dụng để làm vị trí lưu trữ tạo tác. Ta sẽ sử dụng /mnt/artifact-storage làm điểm mount để lưu trữ hiện vật trong hướng dẫn này:

Sau khi server của bạn được cấu hình với bộ nhớ bổ sung được gắn tại /mnt/artifact-storage , hãy làm theo hướng dẫn cài đặt server ban đầu Ubuntu 16.04 của ta để cài đặt user không phải root có quyền sudo và kích hoạt firewall cơ bản. Khi bạn đã hoàn thành các bước này, hãy tiếp tục với hướng dẫn này.

Cài đặt Server và Tác nhân GoCD

Ta sẽ bắt đầu bằng cách download và cài đặt server và gói đại lý từ một repository chuyên dụng do dự án GoCD cung cấp.

Đầu tiên, ta thêm định nghĩa repository mới vào folder cấu hình nguồn APT bằng lệnh :

  • echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

Ta cũng cần thêm khóa GoCD GPG vào APT để các chữ ký trên gói GoCD có thể được xác minh. Bạn có thể download khóa và thêm khóa vào hệ thống của bạn bằng lệnh :

  • curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -

Bây giờ ta có thể cập nhật index gói local để kéo xuống danh sách các gói mới và cài đặt phần mềm. GoCD yêu cầu Java 8 để chạy, vì vậy ta sẽ cài đặt gói default-jre cùng với server và tác nhân CI. Ta cũng sẽ cài đặt gói apache2-utils , gói mà ta sẽ sử dụng để tạo file xác thực:

  • sudo apt-get update
  • sudo apt-get install default-jre go-server go-agent apache2-utils

Các phần phụ thuộc và phần mềm tích hợp liên tục sẽ được download và cài đặt trên server .

Chuẩn bị GoCD để sử dụng lần đầu

Trước khi khởi động server GoCD, ta sẽ hoàn thành một số tác vụ trên dòng lệnh để sẵn sàng.

Trước tiên, ta cần đảm bảo quy trình GoCD sẽ có quyền truy cập vào điểm mount tạo tác để nó có thể lưu trữ tài sản ở đó. Các server CI sẽ chạy như go user và group , vì vậy ta có thể gán quyền sở hữu /mnt/artifact-storage điểm mount cho phù hợp:

  • sudo chown -R go:go /mnt/artifact-storage

Tiếp theo, ta sẽ tạo và điền một file password cho thông tin xác thực. Plugin xác thực dựa trên file của GoCD sử dụng định dạng xác thực user được tạo bởi tiện ích htpasswd .

Tùy chọn -B trong lệnh bên dưới chọn thuật toán mã hóa bcrypt . Tùy chọn -c yêu cầu htpasswd tạo file xác thực mới theo đường dẫn được chỉ định. Lệnh kết thúc bằng tên user mà ta muốn tạo password . Tên user này hoàn toàn tách biệt với user của hệ điều hành, vì vậy bạn có thể sử dụng bất kỳ thứ gì bạn muốn cho giá trị này:

  • sudo htpasswd -B -c /etc/go/authentication sammy

Bạn sẽ được yêu cầu nhập và xác nhận password cho user mới. Tên user và version password được mã hóa sẽ được ghi vào file :

Output
New password: Re-type new password: Adding password for user sammy

Lưu ý : Bạn có thể thêm nhiều tổ hợp tên user và password vào file để cho phép đăng nhập bổ sung. Tuy nhiên, sau khi user đầu tiên được thêm vào, bạn cần gọi lệnh htpasswd mà không có tùy chọn -c :

  • sudo htpasswd -B /etc/go/authentication next_user

Sử dụng tùy chọn -c sau user đầu tiên sẽ khiến htpasswd thay thế tất cả các thông tin xác thực hiện có thay vì thêm vào chúng.

Khi bạn có file xác thực, ta có thể khởi động server GoCD và các quy trình tác nhân. Quá trình này có thể mất một lúc để hoàn thành:

  • sudo systemctl start go-server go-agent

Ngay cả sau khi lệnh thoát, quá trình sẽ không hoàn toàn được cài đặt và chạy. Trước tiên, hãy kiểm tra xem các dịch vụ đã được khởi động thành công chưa:

  • sudo systemctl status go-*

Nếu kết quả của bạn trông tương tự như thế này, cả hai quy trình đều được khởi tạo bởi systemd:

Output
● go-agent.service - LSB: Go Agent Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled) Active: active (exited) since Thu 2017-07-27 19:39:18 UTC; 1min 36s ago Docs: man:systemd-sysv-generator(8) Process: 8911 ExecStart=/etc/init.d/go-agent start (code=exited, status=0/SUCCESS) . . . Jul 27 19:39:18 go5 systemd[1]: Started LSB: Go Agent. ● go-server.service - LSB: Go Server Loaded: loaded (/etc/init.d/go-server; bad; vendor preset: enabled) Active: active (exited) since Thu 2017-07-27 19:39:33 UTC; 1min 21s ago Docs: man:systemd-sysv-generator(8) Process: 8867 ExecStop=/etc/init.d/go-server stop (code=exited, status=0/SUCCESS) Process: 8907 ExecStart=/etc/init.d/go-server start (code=exited, status=0/SUCCESS) . . . Jul 27 19:39:33 go5 systemd[1]: Started LSB: Go Server.

Tiếp theo, ta nên đợi dịch vụ liên kết với các cổng 8153 và 8154. GoCD sẽ lắng nghe trên cổng đầu tiên cho truy cập HTTP và cổng thứ hai cho truy cập được bảo vệ bằng HTTPS. Trong khi các quy trình đã hoàn tất, chúng có thể vẫn chưa bắt đầu chấp nhận lưu lượng truy cập web.

Theo dõi cổng nào hiện đang được lắng nghe bằng lệnh :

  • sudo watch netstat -plnt

Thao tác này sẽ kiểm tra các cổng TCP đang nghe và cập nhật màn hình sau mỗi 2 giây. Khi GoCD bắt đầu nghe các cổng 8153 và 8154, màn hình sẽ trông như thế này:

Output
Every 2.0s: netstat -plnt Thu Jul 27 20:16:20 2017 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1736/sshd tcp6 0 0 :::22 :::* LISTEN 1736/sshd tcp6 0 0 :::8153 :::* LISTEN 8942/java tcp6 0 0 :::8154 :::* LISTEN 8942/java

Khi các cổng lắng nghe đó được hiển thị, hãy nhấn CTRL-C để thoát khỏi trình giám sát quá trình.

Bây giờ phần mềm đã hoàn tất và đang chạy, ta có thể mở cổng HTTPS của GoCD (cổng 8154) trong firewall UFW. Ta không cần mở cổng HTTP vì ta muốn tất cả các kết nối được bảo mật:

  • sudo ufw allow 8154

Cảnh báo: Khi cổng 8154 được mở, giao diện web GoCD sẽ có thể truy cập được trên tất cả các giao diện. Trong khi ta đã chuẩn bị khóa giao diện bằng cách tạo file /etc/go/authentication bằng lệnh htpasswd , xác thực password hiện không được bật trong GoCD. Đây là mục đầu tiên ta sẽ cấu hình trong phần tiếp theo và bạn nên hoàn thành bước đó càng sớm càng tốt để bảo mật server CI / CD của bạn .

Server của ta hiện đang hoạt động. Ta sẽ kết nối với giao diện web để tiếp tục cấu hình của ta .

Cài đặt xác thực password

Với thành phần server GoCD được khởi tạo và lắng nghe các kết nối cũng như firewall cho phép kết nối, ta có thể kết nối với dịch vụ trong trình duyệt web.

Trong trình duyệt của bạn, chỉ định giao thức https:// theo sau là domain hoặc địa chỉ IP của server và kết thúc bằng thông số cổng :8154 :

https://server_domain_or_IP:8154 

Trình duyệt của bạn có thể sẽ hiển thị cảnh báo cho biết certificate SSL của dịch vụ không được ký bởi tổ chức phát hành certificate tin cậy :

Cảnh báo SSL của trình duyệt

Vì GoCD tự ký certificate nên đây là hành vi được mong đợi. Nhấp vào NÂNG CAO hoặc bất kỳ tùy chọn tương tự nào có sẵn trong trình duyệt của bạn và sau đó chọn tiếp tục với yêu cầu.

Khi bạn kết nối với GoCD ban đầu, bạn sẽ được đưa đến màn hình định nghĩa đường ống. Thay vì xác định đường dẫn ngay lập tức, ta nên ưu tiên cài đặt xác thực bằng cách sử dụng file password mà ta đã tạo trước đó với htpasswd . Nhấp vào QUẢN TRỊ trong menu chuyển trên cùng, sau đó trong menu con Bảo mật, chọn Cấu hình ủy quyền :

Chọn menu cấu hình ủy quyền

Trên trang tiếp theo, nhấp vào nút Thêm ở góc trên bên phải. Một màn hình sẽ xuất hiện nơi bạn có thể điền thông tin chi tiết về nhà cung cấp xác thực của bạn .

Đầu tiên, nhập tên tùy ý cho phương thức ủy quyền mới trong trường Id . Đặt lựa chọn Id plugin thành “Plugin xác thực file password cho GoCD”. Cuối cùng, trong hộp Đường dẫn file password , nhập /etc/go/authentication , file ta đã tạo bằng htpasswd . Khi bạn hoàn tất, hãy nhấp vào Kiểm tra kết nối đảm bảo rằng GoCD có thể truy cập file một cách chính xác:

Nhập xác thực và kiểm tra kết nối

Nếu GoCD hiển thị thông báo “Kết nối OK”, hãy nhấp vào Lưu để triển khai xác thực mới.

Bạn cần xác thực bằng schemas mới. Đây có thể được hiển thị dưới dạng hộp đăng nhập trình duyệt tiêu chuẩn lần đầu tiên hoặc bạn có thể được chuyển hướng đến trang đăng nhập GoCD. Đăng nhập bằng tên user và password bạn đã cấu hình :

Trang đăng nhập GoCD

Cài đặt GoCD của bạn hiện đã được bảo vệ bằng password để ngăn truy cập trái phép.

Đặt URL của trang web và vị trí phần mềm

Bây giờ giao diện web đã được bảo mật đúng cách, ta có thể hoàn tất cấu hình server CI của bạn thông qua giao diện user web.

Sau khi đăng nhập lại vào giao diện web, nhấp vào QUẢN TRỊ ở menu trên cùng và chọn Cấu hình Server từ menu thả xuống:

Mục menu cấu hình  server  GoCD

Bạn sẽ được đưa đến trang cấu hình chính, nơi ta có thể điều chỉnh một số cài đặt.

Mục đầu tiên ta nên xem là URL của trang trong phần Quản lý server của trang. GoCD cung cấp hai cài đặt xác định URL server CI: “URL trang web” và “URL trang web an toàn”. "URL trang web" là URL trang web mặc định được sử dụng trong hầu hết các trường hợp. “URL trang web an toàn” được sử dụng khi “URL trang web” thông thường được cấu hình để sử dụng HTTP và GoCD cần truyền dữ liệu nhạy cảm. Nếu “URL trang web” sử dụng địa chỉ HTTPS, tất cả các kết nối đều được mã hóa và không cần đặt “URL trang web an toàn”.

Vì ta chỉ cho phép truy cập vào cổng HTTPS thông qua firewall , nên ta sẽ điền vào URL của trang web với thông số giao thức https:// , theo sau là domain hoặc địa chỉ IP của server của ta , tiếp theo là :8154 . Ta sẽ để trống URL của trang web an toàn vì URL bình thường của ta đã được bảo mật:

GoCD đặt URL trang web

Tiếp theo, cuộn xuống phần Quản lý đường ống của trang.Đặt Vị trí Thư mục Tạo tác thành điểm mount /mnt/artifact-storage mà ta đã tạo trước đó. Bạn có thể tùy ý điều chỉnh policy xóa phần mềm nếu bạn muốn GoCD tự động quản lý việc lưu giữ phần mềm. Để nó là “Không bao giờ” để quản lý phần mềm theo cách thủ công:

GoCD đặt vị trí lưu trữ phần mềm

Khi bạn hoàn tất, hãy nhấp vào nút LƯU ở cuối trang để thực hiện các thay đổi .

Bạn có thể nhận thấy một cảnh báo trong thanh menu trên cùng:

Chỉ báo cảnh báo GoCD

Nhấp vào chỉ báo cảnh báo sẽ hiển thị cho bạn thông báo cảnh báo đầy đủ cho ta biết rằng GoCD sẽ không sử dụng vị trí /mnt/artifact-storage cho đến khi nó được khởi động lại.

Chi tiết cảnh báo GoCD

Nhấp vào X để thoát khỏi thông báo cảnh báo.

Trước khi ta khởi động lại server , hãy kiểm tra xem tác nhân của ta đã được đăng ký thành công với server chưa. Nhấp vào mục ĐẠI LÝ ở menu trên cùng. Bạn sẽ được đưa đến danh sách các đại lý:

GoCD danh sách các đại lý có sẵn

Quá trình tác nhân mà ta bắt đầu đã đăng ký thành công với server và trạng thái của nó được đặt thành “Chờ”. Điều này nghĩa là tác nhân được kích hoạt, nhưng không có công việc nào được giao, đó là những gì ta mong đợi.

Bây giờ ta đã xác nhận đại lý của ta có mặt, ta có thể khởi động lại quy trình server GoCD để hoàn tất việc thay đổi vị trí tạo tác. Quay lại dòng lệnh, khởi động lại dịch vụ bằng lệnh :

  • sudo systemctl restart go-server

Sau khi dịch vụ khởi động lại và tiếp tục lắng nghe các kết nối trên cổng 8154, bạn có thể kết nối lại với giao diện user web.

Kết luận

Trong hướng dẫn này, ta đã cài đặt và cấu hình server và tác nhân GoCD chạy trên Ubuntu 16.04. Ta cài đặt không gian lưu trữ giả chuyên dụng trên một phân vùng riêng biệt để xử lý nội dung bản dựng đã tạo và xác thực đã cấu hình để bảo mật giao diện web.

Sau khi GoCD được cài đặt và chạy, bước tiếp theo tốt là đảm bảo cài đặt của bạn bằng certificate SSL tin cậy . Làm theo hướng dẫn của ta về cách cấu hình GoCD với certificate SSL Let's Encrypt để tìm hiểu cách cài đặt điều này.


Tags:

Các tin liên quan

Cách cấu hình GoCD với Let's Encrypt SSL Certificates trên Ubuntu 16.04
2017-08-01
Cách cài đặt và cấu hình SimpleSAMLphp để Xác thực SAML trên Ubuntu 16.04
2017-07-30
Cách sử dụng chế độ độc lập của Certbot để lấy chứng chỉ SSL mã hóa trên Ubuntu 16.04
2017-07-28
Cách sử dụng chế độ độc lập của Certbot để lấy chứng chỉ SSL mã hóa trên Ubuntu 16.04
2017-07-28
Cách cài đặt Virtualmin với Webmin, LAMP, BIND và PostFix trên Ubuntu 16.04
2017-07-26
Cách cài đặt Matrix Synapse trên Ubuntu 16.04
2017-07-21
Cách cài đặt Bro trên Ubuntu 16.04
2017-07-14
Cách thiết lập đường ống tích hợp liên tục với Concourse CI trên Ubuntu 16.04
2017-07-11
Cách cài đặt Ruby on Rails với RVM trên Ubuntu 16.04
2017-07-03
Cách thiết lập đường ống tích hợp liên tục với Drone trên Ubuntu 16.04
2017-06-28