Giới thiệu

Drone là nền tảng phân phối và phân phối liên tục phổ biến được xây dựng trong Go. Nó tích hợp với nhiều dịch vụ kho lưu trữ kiểm soát phiên bản phổ biến như GitHub, GitLab và Bitbucket để theo dõi các thay đổi mã và tự động xây dựng và kiểm tra các thay đổi khi chúng được cam kết.

Trong hướng dẫn này, chúng tôi sẽ trình bày cách thiết lập một môi trường tích hợp liên tục Drone hoàn chỉnh cho cơ sở hạ tầng của bạn. Chúng tôi sẽ cài đặt Drone và cấu hình nó để tích hợp với kho lưu trữ mã nguồn của bạn. Trên đường đi, chúng tôi sẽ cấu hình Nginx, được bảo vệ bởi Let's Encrypt, như một lối vào cho Drone. Điều này sẽ mã hóa các yêu cầu tới giao diện web của Drone và cho phép máy chủ CI tích hợp một cách an toàn với máy chủ mã nguồn.

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

Để bắt đầu, bạn nên có một máy chủ Ubuntu 16.04 được cấu hình với một không phải root sudo người dùng cho các tác vụ quản trị. Máy chủ cũng phải có tường lửa để lọc các kết nối đến. Bạn có thể tìm hiểu cách định cấu hình các mục này bằng cách theo dõi Hướng dẫn cài đặt máy chủ ban đầu cho Ubuntu 16.04.

Bạn sẽ phải hoàn thành một số bước bổ sung để đáp ứng các yêu cầu khác cho thiết lập của chúng tôi. Bởi vì Drone chủ yếu được phân phối dưới dạng hình ảnh Docker, chúng tôi sẽ sử dụng Docker Compose để quản lý các thùng chứa máy chủ CI. Vì mục đích bảo mật và hiệu suất, chúng tôi sẽ yêu cầu proxy cho Drone thông qua một cá thể Nginx được bảo vệ bởi Let's Encrypt. Bạn sẽ cần một tên miền gắn liền với máy chủ CI của bạn để thiết lập đúng cách này.

Trước khi bạn bắt đầu, hãy sử dụng các bài viết sau để thiết lập các yêu cầu bổ sung sau:

  • Làm thế nào để cài đặt và sử dụng Docker trên Ubuntu 16.04
  • Làm thế nào để cài đặt Docker Compose trên Ubuntu 16.04: Cài đặt Docker và Docker Compose bằng cách làm theo các điều kiện tiên quyết và bước đầu tiên của hướng dẫn này.
  • Làm thế nào để cài đặt Nginx trên Ubuntu 16.04: Cài đặt Nginx trên máy chủ.
  • Làm thế nào để bảo mật Nginx với Hãy mã hóa trên Ubuntu 16.04: Bảo mật Nginx với chứng chỉ SSL đáng tin cậy.

Khi bạn đã hoàn thành các hướng dẫn ở trên, máy chủ Drone của bạn sẽ có:

  • A sudo người dùng được định cấu hình cho các tác vụ quản trị
  • Đã bật tường lửa UFW. Nó sẽ chặn tất cả các kết nối ngoại trừ các yêu cầu SSH, HTTP và HTTPS trên các cổng 22, 80 và 443 tương ứng.
  • Đã cài đặt Soạn Docker và Docker.
  • Máy chủ Nginx được cấu hình với chứng chỉ SSL do Let's Encrypt cung cấp

Tiếp tục bên dưới khi bạn đã sẵn sàng bắt đầu.

Thêm một ứng dụng vào kho lưu trữ mã nguồn của bạn

Để theo dõi các thay đổi mã để kích hoạt các giai đoạn xây dựng và thử nghiệm, Drone sẽ cần quyền truy cập vào kho lưu trữ mã nguồn của bạn. Drone có thể tích hợp với GitHub, GitLab, Gogs, Bitbucket Cloudvà Máy chủ Bitbucket.

Trong hướng dẫn này, chúng tôi sẽ tập trung vào việc tích hợp với một kho lưu trữ GitHub, nhưng quá trình này nên tương tự cho các hệ thống khác. Nếu bạn đang sử dụng một kho lưu trữ mã nguồn khác, hãy làm theo liên kết thích hợp ở trên để tìm hiểu về cấu hình phần mềm cụ thể mà bạn sẽ cần.

Bắt đầu bằng cách truy cập GitHub tài khoản. Nhấp vào biểu tượng người dùng của bạn ở góc trên bên phải và chọn Cài đặt từ trình đơn thả xuống:

Drone GitHub settings

Tiếp theo, tìm Ứng dụng OAuth mục trong Cài đặt nhà phát triển ở phía bên trái của màn hình:

Drone OAuth applications

Trên trang tiếp theo, nhấp Đăng ký một ứng dụng mới:

Drone new app

Tiếp theo, bạn sẽ thấy biểu mẫu đăng ký ứng dụng OAuth:

Drone register a new app

Bạn sẽ cần phải điền vào các trường sau (các trường này hiện diện trên GitHub. Các nhà cung cấp kho lưu trữ khác có thể có các lời nhắc khác nhau):

  • Tên ứng dụng: Tên bạn chọn để xác định tích hợp. "Drone" là một lựa chọn tốt nếu bạn không có nhu cầu đặc biệt.
  • URL trang chủ: Tên miền của máy chủ Drone của bạn. Sử dụng https:// ở đây vì chúng tôi đang sử dụng một miền được bảo mật.
  • Mô tả ứng dụng: Một mô tả đơn giản về Drone và mục đích của nó.
  • URL gọi lại ủy quyền: Đây phải là https:// schema specifier, tiếp theo là tên miền của máy chủ Drone của bạn, tiếp theo là /authorize. Nếu tên miền của chúng tôi là example.com, tệp này sẽ là https://example.com/authorize.

Khi bạn đã sẵn sàng, hãy nhấp Đăng ký ứng dụng.

Trên trang tiếp theo, bạn sẽ thấy chi tiết cho ứng dụng mới của mình. Hai mục chúng ta cần là ID ứng dụng kháchBí mật ứng dụng khách:

Drone client info

Sao chép hai giá trị này cho sau này. Chúng tôi sẽ cần những thứ này để kết nối Drone với tài khoản GitHub của chúng tôi.

Kéo hình ảnh Drone Docker và chuẩn bị cho cấu hình

Bây giờ bạn đã có máy chủ Drone của bạn đã đăng ký với một nhà cung cấp kho lưu trữ, bạn có thể cài đặt và cấu hình Drone trên máy chủ của mình.

Drone được phân phối như một vùng chứa Docker, vì vậy nó sẽ được tự động tải xuống nếu chúng ta sử dụng nó trong một tệp Docker Compose. Tuy nhiên, để tăng tốc quá trình, chúng tôi có thể kéo hình ảnh xuống trước thời hạn:

docker pull drone/drone:0.7

Hình ảnh Drone Docker là một container hợp nhất có thể chạy theo một vài cách khác nhau. Chúng tôi sẽ chạy một vùng chứa hoạt động như máy chủ Drone, điều phối truy cập kho lưu trữ, lưu trữ giao diện người dùng web và phục vụ API. Sử dụng cùng một hình ảnh với các cài đặt khác nhau, chúng tôi sẽ chạy một vùng chứa khác dưới dạng tác nhân Drone, chịu trách nhiệm xây dựng và kiểm tra phần mềm từ các kho lưu trữ được định cấu hình.

Chúng tôi sẽ chạy cả hai thùng chứa này trên máy chủ Drone bằng cách sử dụng Docker Compose. Bắt đầu bằng cách tạo một thư mục cấu hình để lưu trữ các tệp chúng ta cần:

sudo mkdir /etc/drone

Tiếp theo, chúng tôi sẽ tạo một vài tệp để định cấu hình các dịch vụ của mình.

Tạo một Docker Compose File cho Drone

Đầu tiên, tạo một tệp Docker Compose trong thư mục cấu hình:

sudo nano /etc/drone/docker-compose.yml

Bên trong, chúng tôi sẽ đánh dấu định dạng tệp Docker Compose là phiên bản "3". Sau đó, chúng tôi sẽ xác định các dịch vụ cho cả hai dịch vụ mà chúng tôi đã mô tả ở trên.

Các drone-server dịch vụ sẽ bắt đầu thùng chứa máy chủ Drone chính lắng nghe trên cổng 8000. Chúng tôi sẽ gắn kết máy chủ /var/lib/drone thư mục bên trong vùng chứa để Drone có thể duy trì dữ liệu của nó. Chúng tôi sẽ định cấu hình dịch vụ để tự động khởi động lại và đọc hướng dẫn cấu hình chi tiết hơn dưới dạng biến môi trường được xác định trong tệp chúng tôi sẽ tạo tại /etc/drone/server.env.

Các drone-agent dịch vụ sử dụng cùng một hình ảnh, bắt đầu bằng agent chỉ huy. Nó nhận được các hướng dẫn từ cá thể máy chủ Drone chính, vì vậy trong khi nó không cần truy cập mạng chung, nó cần phải được bắt đầu sau khi dịch vụ Drone. Nó cũng cần truy cập vào tệp socket của Docker để quay lên các thùng chứa để chạy các bước xây dựng và thử nghiệm thực tế. Giống như drone-server dịch vụ, dịch vụ này cũng sẽ tự động khởi động lại và đọc một tệp môi trường tại /etc/drone/agent.env cho cấu hình bổ sung.

Sử dụng tệp Docker Compose sau để cấu hình hai dịch vụ này. Hãy chú ý đến định dạng YAML của tệp, vì các lỗi trong thụt đầu dòng hoặc định dạng có thể gây ra lỗi:

/etc/drone/docker-compose.yml

version: '3'

services:
  drone-server:
    image: drone/drone:0.7
    ports:
      - 127.0.0.1:8000:8000
    volumes:
      - /var/lib/drone:/var/lib/drone
    restart: always
    env_file:
      - /etc/drone/server.env

  drone-agent:
    image: drone/drone:0.7
    command: agent
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    env_file:
      - /etc/drone/agent.env

Khi bạn hoàn tất, lưu và đóng tệp Soạn thảo Docker.

Cấu hình tệp biến môi trường của máy chủ Drone

Tiếp theo, chúng ta cần tạo tệp biến môi trường của máy chủ Drone mà chúng ta đã tham chiếu trong tệp Soạn thảo Docker ở trên.

Trước khi chúng tôi mở tệp, chúng tôi sẽ tạo một khóa mạnh để xác thực thành phần đại lý và máy chủ. Mặc dù thiết lập của chúng tôi sẽ có cả hai thành phần này trên cùng một máy chủ, vì cơ sở hạ tầng thử nghiệm của bạn mở rộng ra, một khóa mạnh là điều cần thiết. Trên dòng lệnh, tạo một khóa bằng cách gõ:

LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 | head -c 65 && echo

Lệnh này tạm thời đặt ngôn ngữ trong trình bao thành phạm vi giới hạn ký tự. Sau đó, một luồng các byte ngẫu nhiên từ /dev/urandom và tiếp tục lọc ra bất kỳ ký tự không phải chữ và số nào. Chúng tôi lấy 65 ký tự đầu tiên làm chìa khóa.

Đầu ra sẽ trông giống như thế này (Đừng sao chép giá trị dưới đây! Tạo của riêng bạn!):

OutputERmA7xubDvTa8i0wYBlljc9yjT1NJPG7xOlZBwAdMAmBYL4RZE4QngxWcCLowk9KN

Sao chép khóa được tạo để sử dụng trong tệp môi trường máy chủ.

Tạo một tệp mới tại /etc/drone/server.env và mở nó trong trình soạn thảo văn bản của bạn:

sudo nano /etc/drone/server.env

Bên trong, chúng tôi sẽ xác định các biến môi trường mà Drone sử dụng để kết nối với ràng buộc bắt đầu dịch vụ, kết nối với nhà cung cấp kho lưu trữ và đặt chính sách cấp phép tài khoản. Bạn sẽ cần các giá trị bạn đã sao chép từ nhà cung cấp kho lưu trữ của bạn trước đó để điền vào các giá trị chính xác.

Để bắt đầu, hãy đặt DRONE_HOSTDRONE_SECRET giá trị. Bộ DRONE_SECRET vào khóa bạn đã tạo trên dòng lệnh. Các DRONE_HOST thiết lập thông báo cho Drone về địa chỉ truy cập công khai của nó. Đây phải là miền được bảo vệ của bạn Hãy mã hóa, trước bởi https:// giản đồ chỉ định:

/etc/drone/server.env

# Service settings
DRONE_SECRET=secret_generated_on_command_line
DRONE_HOST=https://example.com

Tiếp theo, chúng tôi sẽ cấu hình tích hợp với nhà cung cấp VCS của chúng tôi, đó là GitHub trong trường hợp của chúng tôi. Các cài đặt phù hợp cho dự án của bạn có thể khác nhau tùy thuộc vào nhu cầu của bạn và cách tổ chức tài sản GitHub của bạn.

Chúng tôi sẽ khóa cài đặt Drone của chúng tôi và tắt đăng ký mở bằng cách thiết lập DRONE_OPEN đến false. Điều này có nghĩa là chỉ các tên tài khoản GitHub được chỉ định trong DRONE_ADMIN sẽ có thể đăng nhập.

chú thích: Nếu bạn làm việc với cộng tác viên với tư cách là tổ chức GitHub, tốt hơn là nên đặt DRONE_OPEN đến true và thay thế DRONE_ADMIN với DRONE_ORGS. Các DRONE_ORGS cài đặt cho phép bạn chỉ định một hoặc nhiều tổ chức GitHub có thành viên được phép đăng ký. Drone sẽ hạn chế đăng ký cho những người dùng thuộc về các nhóm đó.

Đảm bảo rằng DRONE_ADMIN chứa tên tài khoản GitHub của bạn.

Sau đó, kích hoạt plugin tích hợp GitHub bằng cách thiết lập DRONE_GITHUB đến true. Sau đó chúng tôi sẽ thiết lập DRONE_GITHUB_CLIENTDRONE_GITHUB_SECRET với các khóa mà chúng tôi đã sao chép từ trang ứng dụng GitHub OAuth khi chúng tôi đăng ký ứng dụng Drone của chúng tôi:

/etc/drone/server.env

# Service settings
DRONE_SECRET=secret_generated_on_command_line
DRONE_HOST=https://example.com

# Registration settings
DRONE_OPEN=false
DRONE_ADMIN=sammytheshark

# GitHub Settings
DRONE_GITHUB=true
DRONE_GITHUB_CLIENT=Client_ID_from_GitHub
DRONE_GITHUB_SECRET=Client_Secret_from_GitHub

Chúng tôi đã hoàn tất việc cấu hình thành phần máy chủ. Trước khi rời khỏi, hãy sao chép DRONE_SECRET giá trị từ tệp. Chúng ta sẽ cần đặt cùng khóa này trong phần tiếp theo khi chúng ta cấu hình tác nhân. Lưu và đóng tệp khi bạn hoàn tất.

Cấu hình tệp biến môi trường của tác nhân Drone

Tiếp theo, chúng ta sẽ tạo một tệp môi trường cho thành phần tác nhân Drone.

Mở một tệp mới để đặt biến môi trường tác nhân:

sudo nano /etc/drone/agent.env

Bên trong, chúng ta chỉ cần xác định hai giá trị. Các DRONE_SECRET sẽ khớp với cấu hình trong sever.env tập tin.

Các DRONE_SERVER thiết lập sẽ cấu hình cách tác nhân nên kết nối với thành phần máy chủ Drone. Nó sẽ bắt đầu bằng một wss:// tiền tố giao thức để chỉ ra rằng kết nối sẽ sử dụng một ổ cắm web được mã hóa theo sau là tên miền của máy chủ Drone với /ws/broker URI được nối vào cuối:

/etc/drone/agent.env

DRONE_SECRET=secret_generated_on_command_line
DRONE_SERVER=wss://example.com/ws/broker

Lưu và đóng tệp khi bạn hoàn tất.

Cấu hình tệp đơn vị hệ thống Drone

Bây giờ các tệp cấu hình của chúng ta đã có sẵn, chúng ta có thể định nghĩa một tệp đơn vị hệ thống để quản lý dịch vụ Drone.

Mở mới .service tập tin trong /etc/systemd/system thư mục để cấu hình dịch vụ:

sudo nano /etc/systemd/system/drone.service

Bên trong dán các nội dung sau:

/etc/systemd/system/drone.service

[Unit]
Description=Drone server
After=docker.service nginx.service

[Service]
Restart=always
ExecStart=/usr/local/bin/docker-compose -f /etc/drone/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /etc/drone/docker-compose.yml stop

[Install]
WantedBy=multi-user.target

Phần đầu tiên cho systemd bắt đầu dịch vụ này sau khi Docker và Nginx có sẵn. Phần thứ hai yêu cầu hệ thống init tự động khởi động lại dịch vụ trong trường hợp thất bại. Sau đó nó định nghĩa các lệnh để khởi động và dừng dịch vụ Drone bằng cách sử dụng Docker Compose và tệp cấu hình mà chúng ta đã tạo trước đó. Cuối cùng, phần cuối cùng xác định cách kích hoạt dịch vụ để khởi động.

Lưu và đóng tệp khi bạn hoàn tất.

Trước khi bắt đầu dịch vụ Drone, chúng ta phải cấu hình Nginx. Tác nhân Drone cần có khả năng kết nối với máy chủ Drone và kết nối dựa trên proxy Nginx.

Cấu hình Nginx để yêu cầu Proxy để Drone

Tiếp theo, chúng ta cần thay đổi cấu hình của Nginx thành các yêu cầu proxy đến máy chủ Drone của chúng ta.

Bắt đầu bằng cách tìm cấu hình khối máy chủ xử lý miền Được bảo vệ bằng mã hóa của bạn. Tìm kiếm server_name thuộc tính trong tất cả các khối máy chủ được bật bằng cách nhập:

grep -R server_name /etc/nginx/sites-enabled

Output/etc/nginx/sites-enabled/default:   server_name example.com;
/etc/nginx/sites-enabled/default:   return 301 https://$server_name$request_uri;
/etc/nginx/sites-enabled/default:   server_name example.com;
/etc/nginx/sites-enabled/default:#  server_name example.com;

Trong đầu ra ở trên, tên miền (example.com trong trường hợp này) đang được xác định trong /etc/nginx/sites-enabled/default tập tin. Bạn sẽ muốn chỉnh sửa tệp (cột đầu tiên) được liên kết với tên miền của bạn.

Có thể bạn cũng có thể thấy một cái gì đó như thế này:

Output/etc/nginx/sites-enabled/default:   server_name _;
/etc/nginx/sites-enabled/default:   return 301 https://$server_name$request_uri;
/etc/nginx/sites-enabled/default:   server_name _;
/etc/nginx/sites-enabled/default:#  server_name example.com;

Trong đầu ra ở trên, server_name _; các dòng đại diện cho các khối máy chủ có nghĩa là hoạt động như các cơ chế dự phòng. Trình chỉ định máy chủ lưu trữ "_" là máy chủ lưu trữ không hợp lệ, vì vậy nó sẽ không bao giờ khớp với chính nó.

Trong cấu hình, chúng được ghép nối với listen chỉ thị đã đặt default_server tùy chọn sao cho khối hoạt động như mặc định khi máy chủ được yêu cầu không khớp với bất kỳ khối máy chủ được xác định nào khác. Nếu bạn không thể tìm thấy server_name định nghĩa phù hợp với tên miền của bạn, bạn nên sử dụng tệp định nghĩa các khối dự phòng này thay thế.

Mở tệp được liên kết tốt nhất với miền của bạn trong trình chỉnh sửa văn bản:

sudo nano /etc/nginx/sites-enabled/default 

Bên trong, chúng ta sẽ bắt đầu bằng cách thêm hai phần bên ngoài server khối:

/etc/nginx/sites-enabled/default

upstream drone {
    server 127.0.0.1:8000;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    . . .

Khối đầu tiên định cấu hình vị trí ngược dòng được gọi là drone nơi chúng tôi có thể yêu cầu proxy. Các server chỉ thị định nghĩa cách kết nối với dịch vụ Drone của chúng tôi, dịch vụ này sẽ chạy trên cổng 8000.

Khối thứ hai đặt biến do người dùng xác định được gọi là $connection_upgrade dựa trên giá trị của $http_upgrade biến mà Nginx đặt khi nhận được tiêu đề HTTP "Nâng cấp". Nếu nhận được tiêu đề Nâng cấp, Nginx sẽ đặt $connection_upgrade biến thành upgrade. Nếu không, nó sẽ đặt nó thành close. Các biến này cho phép chúng ta thiết lập các tiêu đề chính xác khi yêu cầu các yêu cầu WebSocket.

Tiếp theo, tìm server chặn bằng listen 443 chỉ thị bên trong. Thay thế nội dung của location / chặn với các chỉ thị sau đây. Đảm bảo nhận xét hoặc xóa mọi cấu hình hiện có khỏi khối đó để tránh xung đột:

/etc/nginx/sites-enabled/default

. . .
server {
    listen 443 ssl;
    . . .
    location / {
        # try_files $uri $uri/ =404;
        proxy_pass http://drone;

        include proxy_params;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_buffering off;
        chunked_transfer_encoding off;
        proxy_read_timeout 86400;
    }
    . . .
}

Các proxy_pass dòng lệnh cho Nginx chuyển tất cả lưu lượng truy cập được phân phối ra khỏi khối này sang upstream chúng tôi đã xác định trước đó. Tiếp theo, chúng tôi bao gồm một số định nghĩa tiêu đề proxy từ proxy_params và thêm các tiêu đề bổ sung dựa trên map thiết lập từ trước đó.

Sau đó chúng tôi điều chỉnh một số cài đặt proxy cụ thể khác để đảm bảo proxy WebSocket hoạt động chính xác và đảm bảo các thành phần của chúng tôi có thể giao tiếp hiệu quả.

Khi bạn hoàn tất lưu và đóng tệp.

Kiểm tra và khởi động lại Nginx và Drone

Cấu hình của chúng tôi hiện đã hoàn tất. Chúng tôi chỉ cần bắt đầu hoặc khởi động lại dịch vụ của mình để triển khai cấu hình.

Để bắt đầu, hãy kiểm tra cấu hình Nginx để biết các lỗi cú pháp:

sudo nginx -t

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nếu đầu ra chỉ ra rằng có một vấn đề cấu hình, quay trở lại và kiểm tra cấu hình Nginx một lần nữa.

Khi bạn đã sẵn sàng tiếp tục, hãy khởi động lại Nginx:

sudo systemctl restart nginx

Bây giờ Nginx có sẵn cho các yêu cầu proxy giữa agent và server, chúng ta có thể khởi động Drone:

sudo systemctl start drone

Kiểm tra để đảm bảo dịch vụ có thể bắt đầu thành công:

sudo systemctl status drone

Output● drone.service - Drone server
   Loaded: loaded (/etc/systemd/system/drone.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-06-09 21:56:33 UTC; 2min 58s ago
 Main PID: 15225 (docker-compose)
    Tasks: 5
   Memory: 37.7M
      CPU: 1.544s
   CGroup: /system.slice/drone.service
           ├─15225 /usr/local/bin/docker-compose -f /etc/drone/docker-compose.yml up
           └─15228 /usr/local/bin/docker-compose -f /etc/drone/docker-compose.yml up

. . .
Jun 09 21:56:35 drone docker-compose[15225]: drone-agent_1   | pipeline: request next execution

Nếu dịch vụ được đánh dấu là active (running) và không có lỗi nào trong nhật ký, Drone đã hoạt động và chạy.

Nếu bạn gặp sự cố, bạn có thể kiểm tra các bản ghi Nginx bằng cách gõ:

sudo less /var/log/nginx/error.log

Bạn có thể kiểm tra các bản ghi Drone bằng cách gõ:

sudo journalctl -u drone

Nếu mọi thứ đang chạy chính xác, hãy kích hoạt Drone để bắt đầu khởi động bằng cách gõ:

sudo systemctl enable drone

Dịch vụ Drone sẽ khởi động sau khi các dịch vụ Docker và Nginx có sẵn.

Đăng nhập vào Drone để ủy quyền truy cập vào kho lưu trữ của bạn

Bây giờ Drone đã được thiết lập và chạy, chúng ta có thể đăng nhập vào giao diện web và cho phép ứng dụng sử dụng tài khoản GitHub của chúng tôi.

Truy cập tên miền của máy chủ trong trình duyệt web của bạn để xem giao diện web Drone:

https://example.com

Trong lần truy cập đầu tiên của bạn, bạn sẽ được nhắc đăng nhập:

Drone initial visit

Nhấp chuột đăng nhập để xác thực với Drone bằng tài khoản GitHub của bạn bằng OAuth. Nếu bạn hiện chưa đăng nhập vào GitHub, bạn sẽ được hướng dẫn đăng nhập vào GitHub trước tiên.

Sau đó, bạn sẽ được nhắc cho phép Drone truy cập tài khoản GitHub của bạn:

Drone allow access through GitHub

Sau khi xem xét các quyền được yêu cầu và thực hiện bất kỳ điều chỉnh nào, hãy nhấp vào Ủy quyền tên người dùng để cho phép Drone.

Bạn sẽ được chuyển hướng trở lại máy chủ Drone của bạn:

Drone logged in

Từ đây, bạn có thể kích hoạt và định cấu hình các kho lưu trữ của mình để tự động kiểm tra mã của bạn.

Phần kết luận

Trong hướng dẫn này, chúng tôi thiết lập Drone làm máy chủ phân phối và tích hợp liên tục cho các dự án GitHub của chúng tôi. Chúng tôi đã cấu hình máy chủ Drone làm trung tâm để ủy quyền công việc, xử lý xác thực và lắng nghe các thay đổi từ kho lưu trữ của chúng tôi. Chúng tôi cũng đã cấu hình một tác nhân Drone có thể chạy thử nghiệm và quản lý vùng chứa. Trước tất cả điều này, chúng tôi đã cấu hình Nginx hoạt động như một proxy ngược an toàn.

Khi bạn đã sẵn sàng thiết lập Drone để tự động chạy thử nghiệm đối với các kho lưu trữ của mình, hãy xem Tài liệu Drone để tìm hiểu cách xác định .drone.yml tập tin với các thủ tục kiểm tra của bạn.