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

theanh

Administrator
Nhân viên
GoCD là hệ thống phân phối liên tục và tự động hóa nguồn mở. GoCD vượt trội trong việc mô hình hóa các quy trình làm việc CD phức tạp để có phản hồi nhanh với các cấu trúc mô hình hóa, thực thi song song và quản lý phụ thuộc. GoCD giúp bạn khắc phục sự cố đường ống bị hỏng bằng cách theo dõi mọi thay đổi từ cam kết đến triển khai theo thời gian thực. GoCD cho phép bạn dễ dàng so sánh hai bản dựng và triển khai bất kỳ phiên bản nào của ứng dụng mà bạn muốn. Hệ sinh thái GoCD bao gồm một máy chủ GoCD và một tác nhân GoCD. GoCD kiểm soát mọi thứ, chẳng hạn như chạy giao diện người dùng dựa trên web và quản lý và cung cấp công việc cho tác nhân. Các tác nhân Go chịu trách nhiệm chạy các công việc và triển khai.

Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt và cấu hình GoCD trên máy chủ Ubuntu 22.04.

Điều kiện tiên quyết​


  1. Một máy chủ chạy Ubuntu 22.04 với tối thiểu 2GB RAM.

  2. Một người dùng không dùng sudo có quyền root.

  3. Tường lửa đơn giản (UFW) được bật và đang chạy.

  4. Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ của bạn. Chúng tôi sẽ sử dụng gocd.example.com cho hướng dẫn của mình.

  5. Đảm bảo rằng mọi thứ đã được cập nhật.
    Mã:
    $ sudo apt update && sudo apt upgrade

Bước 1 - Cấu hình Tường lửa​

Trước khi cài đặt bất kỳ gói nào, bước đầu tiên là cấu hình tường lửa để mở các cổng cho HTTP, HTTPS và Synapse.

Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Mở các cổng HTTP, HTTPS và GoCD trong tường lửa.
Mã:
$ sudo ufw allow 8153
$ sudo ufw allow http
$ sudo ufw allow https
Kiểm tra lại trạng thái để xác nhận.
Mã:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8153 ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8153 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt GoCD​

Nhập khóa GPG của GoCD vào hệ thống.
Mã:
$ curl https://download.gocd.org/GOCD-GPG-KEY.asc | gpg --dearmor | sudo tee /usr/share/keyrings/gocd.gpg > /dev/null 2>&1
Thêm kho lưu trữ GoCD vào hệ thống.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/gocd.gpg] https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
Cập nhật danh sách kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Cài đặt GoCD. Thao tác này cũng sẽ cài đặt phiên bản Java Runtime (JRE) tương thích mới nhất cần thiết để chạy GoCD.
Mã:
$ sudo apt install -y go-server
Trước khi tiến hành bước tiếp theo, chúng ta cần tạo một thư mục để lưu trữ các hiện vật. Các hiện vật có thể được lưu trữ trên cùng một đĩa mà máy chủ được cài đặt hoặc trên một đĩa chuyên dụng hoặc ổ lưu trữ khối. Chúng tôi sẽ lưu trữ nó trên cùng một đĩa cho hướng dẫn này.

Tạo một thư mục để lưu trữ các hiện vật.
Mã:
$ sudo mkdir /opt/artifacts
Cấp quyền sở hữu GoCD cho thư mục hiện vật.
Mã:
$ sudo chown -R go:go /opt/artifacts

Bước 3 - Cài đặt và cấu hình PostgreSQL​

GoCD sẽ được chuyển đến với cơ sở dữ liệu H2 theo mặc định không yêu cầu cấu hình. Nếu bạn đang sử dụng GoCD trong môi trường sản xuất, PostgreSQL được khuyến nghị.

Ubuntu 22.04 đi kèm với phiên bản PostgreSQL cũ hơn. Chúng tôi sẽ cài đặt Postgres 15 cho hướng dẫn của mình.

Cài đặt kho lưu trữ cho PostgreSQL.
Mã:
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Nhập khóa GPG của PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Cài đặt máy chủ PostgreSQL 15.
Mã:
$ sudo apt install -y postgresql postgresql-contrib
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-12-19 06:49:50 UTC; 2h 26min ago Main PID: 3536 (code=exited, status=0/SUCCESS) CPU: 1ms
Dec 19 06:49:50 gocd systemd[1]: Starting PostgreSQL RDBMS...
Dec 19 06:49:50 gocd systemd[1]: Finished PostgreSQL RDBMS.
Đăng nhập vào shell PostgreSQL.
Mã:
$ sudo -i -u postgres psql
Tạo cơ sở dữ liệu mới cho GoCD.
Mã:
postgres=# CREATE DATABASE "gocd" ENCODING="UTF8" TEMPLATE="template0";
Tạo người dùng cơ sở dữ liệu mới với mật khẩu mạnh.
Mã:
postgres=# CREATE ROLE "gocd_database_user" PASSWORD 'gocd_database_password' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Cấp quyền cho người dùng sử dụng cơ sở dữ liệu.
Mã:
postgres=# GRANT ALL PRIVILEGES ON DATABASE "gocd" TO "gocd_database_user";
Cấp cho người dùng quyền siêu người dùng. Người dùng cơ sở dữ liệu chỉ yêu cầu quyền siêu người dùng khi máy chủ GoCD khởi động lần đầu tiên. Điều này là bắt buộc vì phần mở rộng pgcrypto và citext cần được tạo ban đầu. Quyền siêu người dùng có thể bị thu hồi sau lần đầu tiên máy chủ GoCD khởi động vì không còn cần thiết nữa.
Mã:
postgres-=# ALTER ROLE "gocd_database_user" SUPERUSER;
Thoát khỏi Postgres Shell.
Mã:
postgres=# \q
Bước cuối cùng trong quá trình cấu hình PostgreSQL cho GoCD là lưu trữ thông tin xác thực cơ sở dữ liệu trong thư mục cấu hình máy chủ GoCD.

Tạo db.properties và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/go/db.properties
Dán mã sau vào nó.
Mã:
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/gocd
db.user=gocd_database_user
db.password=gocd_database_password
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 4 - Cấu hình GoCD​

Trước khi cấu hình GoCD, chúng ta cần khởi động máy chủ GoCD.

Khởi động GoCD máy chủ.
Mã:
$ sudo systemctl start go-server
Kiểm tra trạng thái của máy chủ.
Mã:
$ sudo systemctl status go-server
? go-server.service - go-server Loaded: loaded (/etc/systemd/system/go-server.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-12-15 08:53:10 UTC; 8s ago Process: 8475 ExecStart=/usr/share/go-server/bin/go-server start sysd (code=exited, status=0/SUCCESS) Main PID: 8541 (wrapper-linux-x) Tasks: 43 (limit: 2237) Memory: 566.7M CPU: 11.873s CGroup: /system.slice/go-server.service ??8541 /usr/share/go-server/bin/../wrapper/wrapper-linux-x86-64 /usr/share/go-server/wrapper-config/wrapper.conf wrapper.syslog.ident=go-server wrapper.pidfile=/var/lib/go-server/run/go-server.pi> ??8556 /usr/share/go-server/jre/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=400m .....
Khởi chạy bảng điều khiển GoCD bằng cách truy cập URL http://:8153/. Để truy cập bảng điều khiển GoCD qua kết nối an toàn, hãy truy cập URL https://:8154. Bỏ qua lỗi hiển thị chứng chỉ không hợp lệ. Luôn luôn quan trọng khi truy cập bảng điều khiển qua kết nối an toàn.

Bạn sẽ nhận được trang sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22571%22%3E%3C/svg%3E


Trước khi sử dụng, bạn nên cấu hình GoCD. Đi đến Admin >> Trình đơn Cấu hình máy chủ từ thanh điều hướng trên cùng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22375%22%3E%3C/svg%3E


Thêm URL trang web vào các trường được cung cấp và nhấn nút Lưu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22749%22%20height=%22492%22%3E%3C/svg%3E


Nhấp vào Tùy chọn Quản lý hiện vật từ menu bên trái và nhập vị trí của thư mục hiện vật đã tạo trước đó. Chọn tùy chọn Cho phép tự động dọn dẹp hiện vật để quản lý không gian và thiết lập dung lượng theo yêu cầu của bạn. Nhấp vào nút Lưu khi hoàn tất.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22546%22%3E%3C/svg%3E


Tuy nhiên, tùy chọn xóa tự động không sao lưu hiện vật cũ của bạn. Để sao lưu thủ công rồi xóa hiện vật cũ, hãy tắt tính năng xóa tự động bằng cách bỏ chọn tùy chọn Cho phép tự động dọn dẹp hiện vật.

Tiếp theo, chúng ta cần cấu hình các tùy chọn email để nhận thông báo qua email từ GoCD.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22633%22%20height=%22750%22%3E%3C/svg%3E


Nhấp vào nút Gửi email thử nghiệm để kiểm tra các thiết lập, sau đó nhấp vào nút Lưu để hoàn tất.

Nếu bạn muốn đặt thời gian chờ công việc, bạn có thể thực hiện bằng cách truy cập phần Cấu hình thời gian chờ công việc.

Khởi động lại máy chủ GoCD để áp dụng thay đổi.
Mã:
$ sudo systemctl restart go-server

Bước 5 - Thiết lập xác thực GoCD​

Theo mặc định, GoCD có thể truy cập được bởi bất kỳ ai, nhưng bạn có thể cấu hình xác thực bằng tệp mật khẩu hoặc LDAP. Trong hướng dẫn này, chúng ta sẽ thiết lập xác thực dựa trên mật khẩu.

Cài đặt công cụ Apache để chúng ta có thể tạo tệp mật khẩu được mã hóa bằng lệnh htpasswd.
Mã:
$ sudo apt install apache2-utils
Tạo tệp mật khẩu bằng xác thực Bcrypt. Cờ -c tạo một tệp mới, cờ -B thiết lập xác thực Bcrypt và goadmin là tên người dùng.
Mã:
$ sudo htpasswd -B -c /etc/go/passwd_auth navjot
Cung cấp mật khẩu khi được nhắc.
Mã:
New password:
Re-type new password:
Adding password for user navjot
Bạn có thể thêm nhiều người dùng bằng cùng một lệnh, nhưng hãy xóa cờ -c vì tệp đã tồn tại. Sử dụng lại cờ -c sẽ ghi đè lên tệp hiện có và thay thế người dùng hiện tại bằng người dùng mới.
Mã:
$ sudo htpasswd -B /etc/go/passwd_auth gouser1
Bước tiếp theo trong xác thực là cấu hình vị trí mật khẩu trong phần phụ trợ GoCD. Truy cập Quản trị >> Bảo mật >> Phần Cấu hình ủy quyền từ thanh điều hướng trên cùng.

Nhấp vào nút Thêm và cung cấp bất kỳ ID nào. Chọn Plugin xác thực tệp mật khẩu cho GoCD cho ID plugin từ menu thả xuống và nhập đường dẫn của tệp mật khẩu. Tiếp theo, nhấp vào nút Kiểm tra kết nối để xác minh xem GoCD có thể truy cập tệp để xác thực hay không.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22278%22%3E%3C/svg%3E


Đối với người dùng đầu tiên, hãy bỏ chọn tùy chọn Chỉ cho phép những người dùng đã biết đăng nhập. Nhấp vào nút Lưu để hoàn tất.

Bạn sẽ sớm được yêu cầu làm mới GoCD và sẽ được đưa đến trang đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22440%22%3E%3C/svg%3E


Nhập thông tin đăng nhập đã tạo trước đó và nhấn nút Đăng nhập để tiếp tục. Truy cập Quản trị >> Bảo mật >> Phần Quản lý người dùng từ thanh điều hướng trên cùng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22204%22%3E%3C/svg%3E


Đánh dấu vào ô QUẢN TRỊ VIÊN HỆ THỐNG để đánh dấu người dùng là quản trị viên. Bây giờ, hãy quay lại Quản trị >> Bảo mật >> Phần Cấu hình ủy quyền và nhấp vào nút Chỉnh sửa trong danh sách tệp mật khẩu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22124%22%3E%3C/svg%3E


Đánh dấu vào tùy chọn Chỉ cho phép người dùng đã biết đăng nhập. Từ bây giờ, bạn cần tạo người dùng mới thông qua tệp htpasswd rồi nhập người dùng đó trước từ trang máy chủ.

Chúng ta hãy tạo người dùng thứ hai.
Mã:
$ sudo htpasswd -B /etc/go/passwd_auth gouser1
New password:
Re-type new password:
Adding password for user gouser1
Truy cập Quản trị >> Bảo mật >> Phần Quản lý người dùng từ menu điều hướng trên cùng và nhấp vào nút Nhập người dùng. Nhập tên người dùng gouser1 để tìm kiếm người dùng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22380%22%3E%3C/svg%3E


Chọn người dùng và nhấp vào nút Nhập để thêm người dùng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22209%22%3E%3C/svg%3E


Bây giờ, bạn cũng có thể đăng nhập bằng người dùng thứ hai. Lặp lại quy trình cho nhiều người dùng hơn.

Bước 6 - Cài đặt Nginx​

Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Khởi động máy chủ Nginx.
Mã:
$ sudo systemctl start nginx

Bước 7 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn đã được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để tạo SSL Chứng chỉ.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d gocd.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/gocd.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 8 - Cấu hình Nginx​

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo và mở tệp /etc/nginx/conf.d/gocd.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/gocd.conf
Dán mã sau vào đó.
Mã:
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name gocd.example.com; return 301 https://$host$request_uri;
}
map $http_upgrade $connection_upgrade { default upgrade; '' close;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name gocd.example.com; access_log /var/log/nginx/gocd.access.log; error_log /var/log/nginx/gocd.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/gocd.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gocd.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/gocd.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # Proxy everything over to the GoCD server location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_pass http://localhost:8153/; # To be able to upload artifacts larger than default size of 1mb, ensure that you set this up to a large value. # setting to `0` will disable checking for body size. # See https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size client_max_body_size 10000m; # If you are intending to allow downloading of large artifacts (> 1GB) from GoCD you may need to adjust one of the # following two proxy buffering settings to prevent downloads failing for slow clients due to server idle timeouts. # # See https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering # # 1) disable the buffering of responses entirely (enabled by default on NGINX) OR # proxy_buffering off; # # 2) increase the max temporary file size (setting to `0` will disable the limit) # proxy_max_temp_file_size 2048m; }
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại Nginx dịch vụ.
Mã:
$ sudo systemctl restart nginx
Bây giờ bạn có thể truy cập Bảng điều khiển GoCD thông qua URL https://gocd.example.com.

Bước 9 - Cài đặt GoCD Agent​

GoCD Agent là những công nhân chịu trách nhiệm thực hiện tất cả các nhiệm vụ. Khi phát hiện ra sự thay đổi trong nguồn, đường ống được kích hoạt và các công việc được chỉ định cho các công nhân có sẵn để thực hiện. Sau đó, tác nhân thực hiện tác vụ và báo cáo trạng thái cuối cùng sau khi thực hiện.

Để chạy đường ống, ít nhất một tác nhân phải được cấu hình. Hãy cài đặt tác nhân GoCD trên máy chủ GoCD.

Chúng tôi đã nhập kho lưu trữ GoCD, do đó, hãy cài đặt tác nhân GoCD trực tiếp.
Mã:
$ sudo apt install go-agent
Khởi động dịch vụ tác nhân GoCD.
Mã:
$ sudo systemctl start go-agent
Truy cập tab Tác nhân trên bảng điều khiển GoCD của bạn và bạn sẽ thấy tác nhân được liệt kê và tự động kích hoạt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22258%22%3E%3C/svg%3E


Bạn có thể bắt đầu sử dụng dịch vụ GoCD CI/CD từ đây.

Kết luận​

Như vậy là kết thúc hướng dẫn của chúng tôi, nơi bạn đã học cách cài đặt và cấu hình GoCD trên máy chủ Ubuntu 22.04. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên