Drone CI 中文文档

与 Bitbucket Server 集成

本文介绍如何为 Bitbucket Server(以前称为 Atlassian Stash)安装 Drone Server。Server 被打包为一个最小的 Docker 镜像,发布在 DockerHub 上。

准备

创建个人访问令牌

创建能够克隆系统中所有存储库的个人访问令牌。令牌和关联的用户名用于所有克隆操作。我们建议为此目的创建一个机器帐户。

导航到帐户设置中的 个人访问令牌(Personal Access Tokens) 页面,然后单击 创建令牌(Create Token) 按钮。

Token List

创建个人访问令牌。创建表单应指示拉取和克隆访问,如下图所示。单击 创建(Create) 按钮并复制生成的令牌。

Token Create

创建密钥对

在你的服务器上创建一个密钥对。密钥对用于设置 Bitbucket 的身份验证提供并授权 API 访问。

生成私钥:

$ openssl genrsa -out /etc/bitbucket/key.pem 1024
Generating RSA private key, 1024 bit long modulus
....................................++++++
..........++++++
e is 65537 (0x10001)

生成公钥:

$ openssl rsa \
  -in /etc/bitbucket/key.pem \
  -pubout >> /etc/bitbucket/key.pub

创建应用链接

创建 Bitbucket 应用程序链接。该链接将提供 Consumer ID 和私钥,用于授权访问 Bitbucket 资源。Bitbucket 应用程序创建过程复杂且容易出错。请多多包涵。

导航管理员面板并单击 申请链接(Application Links) 设置页面。输入你的 Drone Server URL,然后单击 创建新链接 (Create New Link)

 Stash 应用程序链接

请使用下面指定的值填写表格。完成后单击 继续(Continue) 创建你的应用程序。

  • 将应用名称设置为 Drone
  • 将应用程序类型设置为 通用应用程序(Generic Application)
  • 将提供者名称设置为 Drone
  • 将消费者密钥设置为 OauthKey
  • 将共享密钥设置为任意随机字母数字值
  • 将请求令牌 url 设置为你的 Drone Server URL
  • 将访问令牌 url 设置为你的 Drone Server URL
  • 将授权令牌 url 设置为你的 Drone Server URL

创建 Stash 应用程序链接

创建应用程序后,需要对其进行编辑,以便我们可以配置 Incoming Authentication。请使用下面指定的值填写表格并保存你的更改。

  • 将消费者密钥设置为 OauthKey
  • 将消费者名称设置为 Drone
  • /etc/bitbucket/key.pub 的内容粘贴到公钥文本区域
  • Consumer Callback 留空
  • 不选中 Allow 2-Leged Oauth

编辑 Stash 应用程序链接

恭喜,你已经度过了安装过程中最痛苦的部分。运气好的话,一切都会按预期进行,你将永远不必再这样做了。

创建共享密钥

创建一个共享密钥来验证 Runner 和你的 Drone Server 之间的通信。

你可以使用 openssl 生成共享密钥:

$ openssl rand -hex 16
bea26a2221fd8090ea38720fc445eca6

下载 Drone Server

Drone Server 使用轻量的 Docker 镜像分发。镜像包含自身运行的所有程序,没有任何外部依赖。使用 latest 标签可以确保你使用的 Drone 始终是最新版本。

$ docker pull drone/drone:2

配置

Drone Server 使用环境变量进行配置。本文引用了配置选项的子集,具体定义如下。有关配置选项的完整列表,请参阅 配置

  • DRONE_GIT_USERNAME
    必选项,设置为与个人帐户令牌关联的用户名。此用户名用于验证和克隆所有私有存储库。
  • DRONE_GIT_PASSWORD
    必选项,设置为你的个人帐户令牌。该令牌用于验证和克隆所有私有存储库。
  • DRONE_GIT_ALWAYS_AUTH
    可选项,配置值为布尔值,用于配置 Drone 在克隆公共存储库时是否进行身份验证。这仅应在使用启用私有模式的 GitHub Enterprise 时启用。
  • DRONE_STASH_CONSUMER_KEY
    必填项,配置你的 Bitbucket 服务器使用者密钥。
  • DRONE_STASH_PRIVATE_KEY
    必填项,配置你的 Bitbucket 服务器私钥文件的路径。请注意,此文件还需要作为卷安装到 Drone 服务器容器中。
  • DRONE_STASH_SERVER
    必填项,提供 Bitbucket 服务器地址。例如 https://bitbucket.company.com
  • DRONE_RPC_SECRET
    必填项,提供在上一步中生成的共享密钥。这用于验证 Server 和 Runner 之间的 rpc 连接。必须为 Server 和 Runner 提供相同的秘密值。
  • DRONE_SERVER_HOST
    必填项,提供你的外部主机名或 IP 地址。If using an IP address you may include the port.
  • DRONE_SERVER_PROTO
    必填项,提供你的外部协议方案。此值应设置为 httphttps。如果你配置 ssl 或 acme,此字段默认为 https如果你将 Drone 部署在负载均衡或带有禁止 SSL 的反向代理后面,则此值应设置为 https

启动 Drone Server

你可以使用以下命令启动 Server 容器。容器是通过环境变量配置的。有关配置参数的完整列表,请参阅 配置参考记住用适当的值替换下面的占位符值。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
docker run \
  --volume=/var/lib/drone:/data \
  --volume=/etc/bitbucket/key.pem:/etc/bitbucket/key.pem \
  --env=DRONE_GIT_PASSWORD=7c229228a77d2cbddaa61ddc78d45e \
  --env=DRONE_GIT_USERNAME=x-oauth-token \
  --env=DRONE_GIT_ALWAYS_AUTH=false \
  --env=DRONE_STASH_SERVER=https://bitbucket.company.com \
  --env=DRONE_STASH_CONSUMER_KEY=OauthKey \
  --env=DRONE_STASH_PRIVATE_KEY=/etc/bitbucket/key.pem \
  --env=DRONE_SERVER_HOST=drone.company.com \
  --env=DRONE_SERVER_PROTO=https \
  --env=DRONE_RPC_SECRET=super-duper-secret \
  --publish=80:80 \
  --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:2

安装 Runner

一旦你的 Drone Server 启动并运行,你将需要安装 Runner 来执行你的构建 Pipeline。有关详细的安装说明,请参阅我们的 Runner 安装文档。

安装 Runner