在Docker上搭建持續集成環境,環境採用 Jenkins、subversion。html
環境:使用CentOS7系統。linux
1、 配置Jenkins 容器:docker
# docker pull jenkins //下載容器bash
在 Docker 主機上,建立一個目錄(例如,/home/jenkins_home),並修改權限(chmod 777)以便 Jenkins 容器能讀寫該目錄,socket
若是不是root權限下,最好對jeckins_home受權到當前使用用戶名下,如:chgrp -R admin jenkins_home , chown -R admin jenkins_home tcp
# cd /home svn
# mkdir /jenkins_home工具
# chmod 777 jenkins_home/測試
啓動jeckins,-v 映射端口與目錄,也可直接目錄建在/var上,ui
不須要對應,可直接#docker run -d -t --name myjenkins -p 8080:8080 -v /home/jenkins_home jenkins //linux中建立jenkins_home
#docker run -d -t --name myjenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home jenkins
上述命令執行完成後,可直接在宿主機上訪問, http://192.168.153.151:8080/ 訪問,以下:
能夠安裝插件,系統管理->插件管理,可選插件進行搜索:
該插件可以集成 Jenkins 與 Docker:
該插件用以發佈構建生成 HTML 報表,方便往後查看:
2、配置subversion容器:
#docker pull bsboiko/subversion
#docker run -i -t bsboiko/subversion /bin/bash //進入交互模式
在容器中建立目錄
root@56d82455dfa7:/# mkdir -p /var/svn/repos
基於該目錄建立 Subversion 資源庫
root@56d82455dfa7:/# svnadmin create /var/svn/repos
root@56d82455dfa7:/# cd /var/svn/repos/conf
在資源庫目錄下的 svnserve.conf 文件中刪除「password-db = passwd」前面的註釋符 #,
root@56d82455dfa7:/# vi svnserve.conf
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = /var/svn/repos //認證空間名,版本庫所在目錄
:wq
並在 passwd 文件中添加一行「lb=1234」,是本身定義的用戶名/密碼
root@56d82455dfa7:/# vi passwd
lb=1234 //這裏的username和password本身設置
:wq
root@56d82455dfa7:/# vi authz //authz最後加上如下兩行(這兩行解決了 SVN客戶端解決authorization failed問題)
[groups]
admin = lb
user = shenrui
[/]
@admin = rw
@user = rw
* = r
按ESC,:wq保存
root@56d82455dfa7:/# exit
#docker commit 56d82455dfa7 mysvn //保存下來建立一個新鏡像 mysvn,56d82455dfa7是container id
啓動 mysvn 容器。啓動時,添加容器到主機的端口映射「-p 3690:3690」
#docker run -t -d -p 3690:3690 --name mysvn mysvn svnserve -d --foreground -r /var/svn/repos
# docker images //查看一下安裝的鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
mysvn latest 263b26a72e17 3 minutes ago 351.6 MB
jenkins latest e9a6b4ad873f 2 days ago 708.9 MB
bsboiko/subversion latest 00a5c92e7403 21 months ago 351.5 MB
$ docker ps //查看運行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f4ebcd30df8 jenkins "/bin/tini -- /usr/lo" 22 seconds ago Up 21 seconds 0.0.0.0:8080->8080/tcp, 50000/tcp myjenkins
e5eac8cda3c1 mysvn svnserve -d --foregr" 21 minutes ago Up 21 minutes 0.0.0.0:3690->3690/tcp mysvn
可進入查看SVN啓動狀況
# docker exec -it e5eac8cda3c1 /bin/bash
root@263b26a72e17:/# netstat -natp | grep svnserve
root@263b26a72e17:/# ps aux | grep svnserve //ps -ef|grep svnserve
(或重啓動,可直接使用鏡像,不須要此操做):
root@263b26a72e17:/# kill -9 4650 (進程ID)
root@263b26a72e17:/#svnserve -d -r /var/svn/repos
可在window用SVN工具測試是否成功,用Repo-browser菜單功能。地址:svn://192.168.153.151/repos
3、配置Sahi 鏡像
# docker pull shenrui/sahi
# docker run -i -t shenrui/sahi /bin/bash //進入交互模式
3、配置TCP監聽端口
接下來要開啓 Docker 的 TCP 監聽端口。開啓的方法在不一樣的系統上有所不一樣。如 Docker 主機爲 RHEL 6.5。開啓的方法是在/etc/sysconfig/docker 中設置 other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock",而後運行「service docker restart」重啓 Docker 服務。
本實例 Docker 主機採用CentOS 7,方法以下:
在一個新的Socket中啓用一個遠程API
#touch /etc/systemd/system/docker-tcp.socket
#cd /etc/systemd/system/
#vi docker-tcp.socket //輸入下列內容
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service
[Install]
WantedBy=sockets.target
按Esc,:wq保存
#chmod 755 sockets.target
啓用這個服務開機啓動
#systemctl enable docker-tcp.socket
#systemctl stop docker
#systemctl start docker-tcp.socket
#systemctl start docker
測試是否成功
docker -H tcp://127.0.0.1:2375 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
916723fd2350 jenkins "/bin/tini -- /usr/lo" 20 minutes ago Up 20 minutes 0.0.0.0:8080->8080/tcp, 50000/tcp myjenkins
完成後,進入 Jenkins 的系統配置頁面(系統管理>系統設置),在最底部比以前增長了一個 Cloud 的部分。點擊 新增一個雲(Add a new cloud),選擇 Docker 添加一個 Docker 主機。這裏,由於 Jenkins 運行在 Docker 的容器裏,直接用私有 IP(ifconfig 裏 docker0 對應的 IP)加端口 2375 填寫 Docker URL 輸入域。
原文引用:http://www.ibm.com/developerworks/cn/opensource/os-cn-JenkinsDockerSahi/index.html
引用:http://sahipro.com/docs/using-sahi/configuring-sahi-with-xvbf.html