入门系列之在Ubuntu上安装Drone持续集成环境 (2)

Drone Docker镜像是一个统一的容器,可以通过几种不同的方式运行。我们将运行一个作为Drone服务器运行的容器,该服务器协调存储库访问,托管Web UI并提供API。使用具有不同设置的相同镜像,我们将另一个容器作为Drone代理运行,该代理负责从配置的存储库构建和测试软件。

我们将使用Docker Compose在Drone主机上运行这两个容器。首先创建一个配置目录来存储我们需要的文件:

sudo mkdir /etc/drone

接下来,我们将在其中创建一些文件来配置我们的服务。

为Drone创建Docker Compose文件

首先,在配置目录中创建一个Docker Compose文件:

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

我们将Docker Compose文件格式标记为版本“3”。之后,我们将为上述两种服务定义服务。

drone-server服务将启动侦听8000端口的主Drone服务器容器。我们将主机的/var/lib/drone目录安装在容器内,以便Drone可以保留其数据。我们将服务配置其自动重启,并以我们将在/etc/drone/server.env创建的文件中定义的环境变量的形式读取更详细的配置说明。

drone-agent服务使用相同的镜像,从agent命令开始。它接收来自主Drone服务器实例的指令,因此虽然它不需要一般的网络访问,但它确实需要在Drone服务之后启动。它还需要访问Docker的套接字文件来启动容器以运行实际的构建和测试步骤。与drone-server服务一样,此服务也将自动重启并读取/etc/drone/agent.env文件中的环境以进行其他配置。

使用以下Docker Compose文件配置这两个服务。注意文件的YAML格式,因为缩进或格式化中的错误可能导致错误:

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

完成后,保存并关闭Docker Compose文件。

配置Drone服务器的环境变量文件

接下来,我们需要为的Docker Compose文件中引用的Drone服务器的环境变量文件。

在打开文件之前,我们应该生成一个强密钥来验证代理和服务器组件。虽然我们的设置将在同一台服务器上同时拥有这两个组件,但随着测试基础架构的扩展,强大的密钥至关重要。在命令行上,输入以下命令生成密钥:

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

此命令临时将shell中的语言设置为有限的字符范围。 然后它从/dev/urandom获取一个随机字节流,并进一步过滤掉任何非字母数字字符。我们将前65个字符作为关键字。

输出看起来与此类似(不要复制下面的值!生成自己的!):

ERmA7xubDvTa8i0wYBlljc9yjT1NJPG7xOlZBwAdMAmBYL4RZE4QngxWcCLowk9KN

复制生成的密钥以在服务器环境文件中使用。创建一个新文件/etc/drone/server.env并在文本编辑器中打开它:

sudo nano /etc/drone/server.env

文件内,我们定义Drone用于连接的环境变量以启动服务,连接到存储库提供程序以及设置帐户授权策略。您需要先从存储库提供程序复制的值才能正确填写值。

首先,设置DRONE_HOST和DRONE_SECRET值。将DRONE_SECRET设置为您在命令行上生成的密钥。DRONE_HOST设置通知Drone其可公开访问的地址。 这应该是您的受腾讯云保护的域名,前面是https://。

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

接下来,我们将配置与VCS提供程序的集成,在我们的示例中为GitHub。适合您项目的设置可能会有所不同,具体取决于您的需求以及GitHub资产的组织方式。

我们将锁定我们的Drone安装并通过将DRONE_OPEN设置为false来禁用注册。这意味着只有DRONE_ADMIN中指定的GitHub帐户名才能登录。

注意:如果您将协作者作为GitHub组织使用,最好将DRONE_OPEN设置为true并将DRONE_ADMIN替换为DRONE_ORGS。DRONE_ORGS设置允许您指定一个或多个允许其成员。Drone将限制注册属于这些组的用户。

确保DRONE_ADMIN包含您的GitHub帐户名称。

然后,通过将DRONE_GITHUB设置为true来激活GitHub集成插件。当我们注册Drone应用程序时,我们将DRONE_GITHUB_CLIENT和DRONE_GITHUB_SECRET设置为我们从GitHub OAuth应用程序页面复制的密钥:

# 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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsswg.html