歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux中安裝部署Docker管理工具Drone全攻略

Linux中安裝部署Docker管理工具Drone全攻略

日期:2017/3/1 17:29:57   编辑:Linux技術

Drone 是一個構建在Docker之上的開源持續集成平台(CI)。Drone 提供了一組預建的Docker映像,支持12+種語言和幾乎所有主要的數據庫。這意味著你不必花時間來安裝軟件和配置您的構建環境。當然,如果你需要一個高度定制的環境Drone提供了足夠的靈活性來使用自定義Docker映像。

Drone 完全采用Go語言開發。具有快速,高效的特點。

與其他的CI服務相比有什麼不同?
1.Drone是開源的
2.Drone是構建在Docker之上
3.Drone 輕松托管在自己的基礎架構之上
4.Drone 提供一個 CLI 來運行本地構建,在Docker容器中
5.Drone 默認與 GitHub 集成,很快將支持Bitbucket patch

1. 安裝 Docker

首先,我們要安裝 docker,因為這是 Drone 的工作流的最關鍵的元素。Drone 合理的利用了 docker 來構建和測試應用。容器技術提高了應用部署的效率。要安裝 docker ,我們需要在不同的 linux 發行版本運行下面對應的命令,我們這裡會說明 Ubuntu 14.04 和 CentOS 7 兩個版本。

Ubuntu

要在 Ubuntu 上安裝 Docker ,我們只需要運行下面的命令。

復制代碼代碼如下:
# apt-get update
# apt-get install docker.io

安裝之後我們需要使用service 命令重啟 docker 引擎。

復制代碼代碼如下:
# service docker restart

然後我們讓 docker 在系統啟動時自動啟動。

復制代碼代碼如下:
# 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

CentOS

第一,我們要更新機器上已經安裝的軟件包。我們可以使用下面的命令。

復制代碼代碼如下:
# sudo yum update

要在 centos 上安裝 docker,我們可以簡單的運行下面的命令。

復制代碼代碼如下:
# curl -sSL https://get.docker.com/ | sh

安裝好 docker 引擎之後我麼只需要簡單使用下面的systemd 命令啟動 docker,因為 centos 7 的默認初始化系統是 systemd。

復制代碼代碼如下:
# systemctl start docker

然後我們要讓 docker 在系統啟動時自動啟動。

復制代碼代碼如下:
# systemctl enable docker


復制代碼代碼如下:
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'

2. 安裝 SQlite 驅動

Drone 默認使用 SQlite3 數據庫服務器來保存數據和信息。它會在 /var/lib/drone/ 自動創建名為 drone.sqlite 的數據庫來處理數據庫模式的創建和遷移。要安裝 SQlite3 我們要完成以下幾步。

Ubuntu 14.04

因為 SQlite3 存在於 Ubuntu 14.04 的默認軟件庫,我們只需要簡單的使用 apt 命令安裝它。

復制代碼代碼如下:
# apt-get install libsqlite3-dev

CentOS 7

要在 Centos 7 上安裝需要使用下面的 yum 命令。

復制代碼代碼如下:
# yum install sqlite-devel

3. 安裝 Drone

最後,我們安裝好依賴的軟件,我們現在更進一步的接近安裝 Drone。在這一步裡我們只簡單的從官方鏈接下載對應的二進制軟件包,然後使用默認軟件包管理器安裝 Drone。

Ubuntu

我們將使用 wget 從官方的 Debian 文件下載鏈接下載 drone 的 debian 軟件包。下面就是下載命令。

復制代碼代碼如下:
# 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

CentOS

在 CentOS 機器上我們要使用 wget 命令從下載鏈接下載 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. 配置端口

安裝完成之後,我們要先進行配置才能工作起來。drone 的配置文件在/etc/drone/drone.toml 。默認情況下 drone 的 web 接口使用的是80,而這也是 http 默認的端口,如果我們修改它,請按下面所示的修改配置文件裡 server 塊對應的值。

復制代碼代碼如下:
[server]
port=":80"

5. 集成 Github

為了運行 Drone 我們必須設置最少一個和 GitHub、GitHub 企業版,Gitlab,Gogs,Bitbucket 關聯的集成點。在本文裡我們只集成了 github,但是如果我們要集成其他的服務,我們可以在配置文件做修改。為了集成 github 我們需要在github 的設置裡創建一個新的應用:https://github.com/settings/developers 。
2016418120124670.png (1028×504)

要創建一個應用,我們需要在 New Application 頁面點擊 Register,然後如下所示填表。
2016418120156929.png (748×582)

我們應該保證在應用的配置項裡設置了授權回調鏈接,鏈接看起來類似 http://drone.linoxide.com/api/auth/github.com。然後我們點擊注冊應用。所有都做好之後我們會看到我們需要在我們的 Drone 配置文件裡配置的客戶端 ID 和客戶端密鑰。
2016418120210857.png (429×142)

在這些都完成之後我們需要使用文本編輯器編輯 drone 配置文件,比如使用下面的命令。

復制代碼代碼如下:
# nano /etc/drone/drone.toml

然後我們會在 drone 的配置文件裡面找到[github] 部分,緊接著的是下面所示的配置內容

復制代碼代碼如下:
[github]
client="3dd44b969709c518603c"
secret="4ee261abdb431bdc5e96b19cc3c498403853632a"
# orgs=[]
# open=false

2016418120225384.png (680×400)

6. 配置 SMTP 服務器

如果我們想讓 drone 使用 email 發送通知,那麼我們需要在 SMTP 配置裡面設置我們的 SMTP 服務器。如果我們已經有了一個 SMTP 服務,那就只需要簡單的使用它的配置文件就行了,但是因為我們沒有一個 SMTP 服務器,我們需要安裝一個 MTA 比如 Postfix,然後在 drone 配置文件裡配置好 SMTP。

Ubuntu

在 ubuntu 裡使用下面的 apt 命令安裝 postfix。

復制代碼代碼如下:
# apt-get install postfix

CentOS

在 CentOS 裡使用下面的 yum 命令安裝 postfix。

復制代碼代碼如下:
# yum install postfix

安裝好之後,我們需要編輯我們的 postfix 配置文件。

復制代碼代碼如下:
# nano /etc/postfix/main.cf

然後我們要把 myhostname 的值替換為我們自己的 FQDN,比如 drone.linoxide.com。

復制代碼代碼如下:
myhostname = drone.linoxide.com

現在開始配置 drone 配置文件裡的 SMTP 部分。

復制代碼代碼如下:
# nano /etc/drone/drone.toml

找到[smtp] 部分補充上下面的內容。

復制代碼代碼如下:
[smtp]
host = "drone.linoxide.com"
port = "587"
from = "[email protected]"
user = "root"
pass = "password"

2016418120243724.png (641×406)

注意:這裡的 user 和 pass 參數強烈推薦一定要改成某個具體用戶的配置。

7. 配置 Worker

如我們所知的 drone 利用了 docker 完成構建、測試任務,我們需要把 docker 配置為 drone 的 worker。要完成這些需要修改 drone 配置文件裡的[worker] 部分。

復制代碼代碼如下:
# 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 被配置為使用本地的 docker 守護程序可以同時構建4個任務。

8. 重啟 Drone

最後,當所有的安裝和配置都准備好之後,我們現在要在本地的 linux 機器上啟動 drone 服務器。

Ubuntu

因為 ubuntu 14.04 使用了 sysvinit 作為默認的初始化系統,所以只需要簡單執行下面的 service 命令就可以啟動 drone 了。

復制代碼代碼如下:
# service drone restart

要讓 drone 在系統啟動時也自動運行,需要運行下面的命令。

復制代碼代碼如下:
# update-rc.d drone defaults

CentOS

因為 CentOS 7使用 systemd 作為初始化系統,所以只需要運行下面的 systemd 命令就可以重啟 drone。

復制代碼代碼如下:
# systemctl restart drone

要讓 drone 自動運行只需要運行下面的命令。

復制代碼代碼如下:
# systemctl enable drone

9. 添加防火牆例外規則

眾所周知 drone 默認使用了80 端口而我們又沒有修改它,所以我們需要配置防火牆程序允許80 端口(http)開放並允許其他機器可以通過網絡連接。

Ubuntu 14.04

iptables 是最流行的防火牆程序,並且 ubuntu 默認安裝了它。我們需要修改 iptable 以暴露端口80,這樣我們才能讓 drone 的 web 界面在網絡上被大家訪問。

復制代碼代碼如下:
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# /etc/init.d/iptables save

CentOS 7

因為 CentOS 7 默認安裝了 systemd,它使用 firewalld 作為防火牆程序。為了在 firewalld 上打開80端口(http 服務),我們需要執行下面的命令。

復制代碼代碼如下:
# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success

10. 訪問 web 界面

現在我們將在我們最喜歡的浏覽器上通過 web 界面打開 drone。要完成這些我們要把浏覽器指向運行 drone 的服務器。因為 drone 默認使用80 端口而我們有沒有修改過,所以我們只需要在浏覽器裡根據我們的配置輸入http://ip-address/ 或 http://drone.linoxide.com 就行了。在我們正確的完成了上述操作後,我們就可以看到登錄界面了。
2016418120302266.png (682×360)

因為在上面的步驟裡配置了 Github,我們現在只需要簡單的選擇 github 然後進入應用授權步驟,這些完成後我們就可以進入工作台了。
2016418120324032.png (799×472)

這裡它會同步我們在 github 上的代碼庫,然後詢問我們要在 drone 上構建那個代碼庫。
2016418120339592.png (614×220)

這一步完成後,它會詢問我們在代碼庫裡添加.drone.yml 文件的新名稱,並且在這個文件裡定義構建的過程和配置項,比如使用那個 docker 鏡像,執行那些命令和腳本來編譯,等等。

我們按照下面的內容來配置我們的.drone.yml。

復制代碼代碼如下:
image: python
script:
- python helloworld.py
- echo "Build has been completed."

這一步完成後我們就可以使用 drone 應用裡的 YAML 格式的配置文件來構建我們的應用了。所有對代碼庫的提交和改變此時都會同步到這個倉庫。一旦提交完成了,drone 就會自動開始構建。
2016418120357398.png (947×268)

所有操作都完成後,我們就能在終端看到構建的結果了。
2016418120416903.png (840×299)

Copyright © Linux教程網 All Rights Reserved