如果您厌倦了一遍又一遍地克隆、构建、测试和部署代码,请考虑持续集成。持续集成,简称 CI,是一种软件工程实践,用于构建、测试和部署像我们这样频繁提交的代码库。 CI可以帮助我们快速地将新代码集成到现有的代码库中。如果这个过程是自动化的,它将提高开发速度,因为它可以减少开发人员手动构建和测试所花费的时间。 Drone[1]是一个免费的开源项目,提供了良好的持续集成服务环境,并在2.0协议下发布。它已与许多代码库提供商集成,例如 、 和 Code。它可以从代码库中提取代码,允许我们编译包括PHP、Node、Ruby、Go、Dart、C/C++、JAVA等各种代码库语言的编译和构建。这是一个非常强大的平台,使用容器和技术,使用户可以完全控制自己的构建环境,并保证每次构建时的隔离。
1. 安装
首先,我们必须安装它,因为这是 Drone 工作流程中最关键的元素。无人机被明智地用于构建和测试应用程序。容器技术提高了应用部署的效率。要安装,我们需要在不同的Linux发行版上运行以下相应的命令。我们在这里解释14.04和7版本。
要在 上安装,我们只需运行以下命令。
# apt-get update
# apt-get install docker.io
安装完成后我们需要使用命令来重新启动引擎。
# service docker restart
然后我们让它在系统启动时自动启动。
# update-rc.d docker defaults
Adding system startup for /etc/init.d/docker ...
/etc/rc0.d/K20docker -> ../init.d/docker
/etc/rc1.d/K20docker -> ../init.d/docker
/etc/rc6.d/K20docker -> ../init.d/docker
/etc/rc2.d/S20docker -> ../init.d/docker
/etc/rc3.d/S20docker -> ../init.d/docker
/etc/rc4.d/S20docker -> ../init.d/docker
/etc/rc5.d/S20docker -> ../init.d/docker
首先,我们要更新计算机上已安装的软件包。我们可以使用以下命令。
# sudo yum update
要在 上安装,我们只需运行以下命令即可。
# curl -sSL https://get.docker.com/ | sh
安装好引擎后,我们只需要简单的使用下面的命令来启动它,因为7的默认初始化系统是.
# systemctl start docker
然后我们希望它在系统启动时自动启动。
# systemctl enable docker
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'
2.安装驱动
Drone默认使用数据库服务器来保存数据和信息。它将自动创建一个名为drone的数据库。在 /var/lib/drone/ 中处理数据库模式的创建和迁移。要安装,我们需要完成以下步骤。
14.04
由于它存在于 14.04 的默认存储库中,因此我们只需使用 apt 命令安装它即可。
# apt-get install libsqlite3-dev
7
要在 7 上安装,您需要使用以下 yum 命令。
# yum install sqlite-devel
3. 安装无人机
最后,我们已经安装了相关软件,距离安装 Drone 又近了一步。在这一步中,我们只需从官方链接下载相应的二进制包,然后使用默认的包管理器安装 Drone 即可。
我们将使用 wget 从官方文件下载链接 [2] 下载无人机包。以下是下载命令。
# wget downloads.drone.io/master/drone.deb
Resolving downloads.drone.io (downloads.drone.io)... 54.231.48.98
Connecting to downloads.drone.io (downloads.drone.io)|54.231.48.98|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7722384 (7.4M) [application/x-debian-package]
Saving to: 'drone.deb'
100%[======================================>] 7,722,384 1.38MB/s in 17s
2015-11-06 14:09:28 (456 KB/s) - 'drone.deb' saved [7722384/7722384]
下载后,我们将使用 dpkg 包管理器安装它。
# dpkg -i drone.deb
Selecting previously unselected package drone.
(Reading database ... 28077 files and directories currently installed.)
Preparing to unpack drone.deb ...
Unpacking drone (0.3.0-alpha-1442513246) ...
Setting up drone (0.3.0-alpha-1442513246) ...
Your system ubuntu 14: using upstart to control Drone
drone start/running, process 9512
在机器上我们需要使用wget命令从下载链接[3]下载RPM包。
# wget downloads.drone.io/master/drone.rpm
--2015-11-06 11:06:45-- http://downloads.drone.io/master/drone.rpm
Resolving downloads.drone.io (downloads.drone.io)... 54.231.114.18
Connecting to downloads.drone.io (downloads.drone.io)|54.231.114.18|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7763311 (7.4M) [application/x-redhat-package-manager]
Saving to: ‘drone.rpm’
100%[======================================>] 7,763,311 1.18MB/s in 20s
2015-11-06 11:07:06 (374 KB/s) - ‘drone.rpm’ saved [7763311/7763311]
然后我们使用yum来安装rpm包。
# yum localinstall drone.rpm
4. 配置端口
安装完成后,我们需要对其进行配置才可以工作。无人机配置文件位于 /etc/drone/drone.toml 中。默认情况下,drone的Web界面使用80,这也是http的默认端口。如果我们修改的话,请修改配置文件中对应的值,如下所示。
[server]
port=":80"
5. 整合
为了运行 Drone,我们必须至少设置一个与 Gogs 企业版关联的集成点。本文我们只集成了它,但是如果我们想集成其他服务,我们可以在配置文件中进行更改。要集成,我们需要在设置中创建一个新应用程序:。
应用程序
要创建应用程序,我们需要单击“新建”页面并填写如下所示的表格。
OAuth 应用程序
我们应该确保在应用程序的配置项中设置了授权回调链接。该链接看起来很相似。然后我们点击注册应用程序。完成所有操作后,我们将看到需要在无人机配置文件中配置的客户端 ID 和客户端密钥。
ID和令牌
这些完成后我们需要使用文本编辑器来编辑无人机配置文件,比如使用以下命令。
# nano /etc/drone/drone.toml
然后我们会在drone配置文件中找到[]部分,后面是如下所示的配置内容
[github]
client="3dd44b969709c518603c"
secret="4ee261abdb431bdc5e96b19cc3c498403853632a"
# orgs=[]
# open=false
无人机
6.配置SMTP服务器
如果我们希望无人机使用电子邮件发送通知,那么我们需要在 SMTP 配置中设置 SMTP 服务器。如果我们已经有了SMTP服务,我们只需要简单的使用它的配置文件即可,但是因为我们没有SMTP服务器,所以我们需要安装一个MTA等,然后在无人机的配置文件中配置SMTP。
使用下面的 apt 命令来安装它。
# apt-get install postfix
使用以下 yum 命令进行安装。
# yum install postfix
安装后,我们需要编辑配置文件。
# nano /etc/postfix/main.cf
例如,然后我们将用我们自己的 FQDN 替换 的值。
myhostname = drone.linoxide.com
现在让我们配置无人机配置文件的 SMTP 部分。
# nano /etc/drone/drone.toml
找到[smtp]部分并添加以下内容。
[smtp]
host = "drone.linoxide.com"
port = "587"
from = "root@drone.linoxide.com"
user = "root"
pass = "password"
SMTP 无人机
注意:强烈建议这里的user和pass参数必须改为特定用户的配置。
7. 配置
我们知道,无人机是用来完成构建和测试任务的,我们需要将其配置为无人机。为此,您需要修改无人机配置文件中的 [] 部分。
# nano /etc/drone/drone.toml
然后取消下面几行的注释并添加以下内容。
[worker]
nodes=[
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock"
]
这里我们只设置了两个节点,也就是说上面的配置文件只能同时执行2个构建操作。为了提高并发性,可以增加节点值。
[worker]
nodes=[
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock"
]
使用上面的配置文件drone被配置为使用本地守护进程同时构建4个任务。
8. 重启无人机
最后,当所有安装和配置准备就绪后,我们现在需要在本地 Linux 计算机上启动无人机服务器。
由于14.04使用默认的初始化系统,因此只需要简单执行以下命令即可启动无人机。
# service drone restart
要使无人机在系统启动时自动运行,需要运行以下命令。
# update-rc.d drone defaults
由于使用7作为初始化系统,因此只需运行以下命令即可重新启动无人机。
# systemctl restart drone
要使无人机自动运行,只需运行以下命令。
# systemctl enable drone
9.添加防火墙例外规则
众所周知,无人机默认使用80端口,我们也没有对其进行修改,所以我们需要配置防火墙程序,允许打开80端口(http),允许其他机器通过网络进行连接。
14.04
是最流行的防火墙程序,并且默认安装。我们需要修改它以公开端口 80,以便我们可以使网络上的每个人都可以访问无人机的 Web 界面。
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# /etc/init.d/iptables save
7
由于默认安装7,因此它被用作防火墙程序。为了打开 80 端口(http 服务),我们需要执行以下命令。
# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success
10.访问网页界面
现在我们将在我们最喜欢的浏览器上通过网络界面打开无人机。为此,我们将浏览器指向运行无人机的服务器。因为drone默认使用80端口并且我们没有修改,所以我们只需要在浏览器中输入or按照我们的配置即可。当我们正确完成以上操作后,就可以看到登录界面了。
登录无人机
因为上面的步骤已经配置完毕,所以我们现在只需要简单选择并进入应用授权步骤即可。这些完成后我们就可以进入工作台了。
无人机
这里它将同步我们在无人机上的代码库,然后询问我们要在无人机上构建哪个代码库。
这一步完成后,它会要求我们在代码库中添加.drone.yml文件的新名称,并在这个文件中定义构建过程和配置项,比如使用哪个镜像,哪些命令和脚本执行编译等等等。
我们按如下方式配置 .drone.yml。
image: python
script:
- python helloworld.py
- echo "Build has been completed."
这一步完成后,我们就可以在drone应用程序中使用YAML格式的配置文件来构建我们的应用程序了。此时对代码库的所有提交和更改都将同步到此存储库。提交完成后,drone将自动开始构建。
无人机
全部操作完成后,我们可以在终端中看到构建的结果。
建造无人机
总结
在本文中,我们学习了如何使用无人机安装有效的持续集成平台。如果我们愿意,我们甚至可以从 Drone.io 官方提供的服务开始工作。我们可以根据自己的需要从免费服务开始,也可以从付费服务开始。它以其漂亮的 Web 界面和强大的功能改变了持续集成的世界。它可以与许多第三方应用程序和部署平台集成。如果您有任何问题或建议,可以直接反馈给我们,谢谢。
通过:
作者:Arun Pyasi[4] 译者:ezio[5] 校对:wxy[6]
本文由 LCTT 原创编译[7],Linux China 自豪发布
[1]:
[2]:
[3]:
[4]:
[5]:
[6]:
[7]:
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。