構(gòu)建Web UI 自動(dòng)化測(cè)試環(huán)境(3)
在容器中創(chuàng)建目錄 /var/svn/repos(mkdir -p /var/svn/repos),并基于該目錄創(chuàng)建 Subversion 資源庫(kù)(svnadmin create /var/svn/repos)。 在資源庫(kù)目錄下的 svnserve.conf 文件中刪除在容器中創(chuàng)建目錄 /var/svn/repos(mkdir -p /var/svn/repos),并基于該目錄創(chuàng)建 Subversion 資源庫(kù)(svnadmin create /var/svn/repos)。
在資源庫(kù)目錄下的 svnserve.conf 文件中刪除“password-db = passwd”前面的注釋符 #,并在 passwd 文件中添加一行“shenrui = password”。
用命令“docker commit mysvn”把上面所做的修改保存下來創(chuàng)建一個(gè)新鏡像 mysvn。
最后,用命令“docker run -t -d -p 3690:3690 --name mysvn mysvn svnserve -d --foreground -r /var/svn/repos”啟動(dòng) mysvn 容器。啟動(dòng)時(shí),添加容器到主機(jī)的端口映射“-p 3690:3690”以便之后直接通過主機(jī) IP 提交測(cè)試腳本。
至此,Docker 上有兩個(gè)正在運(yùn)行的容器(docker ps),名字分別是 myjenkins 和 mysvn。
準(zhǔn)備 Sahi 測(cè)試腳本
為實(shí)例編寫的 Sahi 測(cè)試腳本是針對(duì)developerWorks 中國(guó)網(wǎng)站做的一些簡(jiǎn)單測(cè)試。目錄結(jié)構(gòu)如下圖。Downloads.sah 和 topics.sah 分別點(diǎn)擊首頁(yè)上的“軟件下載”和“技術(shù)主題”鏈接,然后驗(yàn)證跳轉(zhuǎn)后的頁(yè)面的標(biāo)題。Search.sah 在首頁(yè)的搜索框中輸入 docker 并對(duì)搜索結(jié)果頁(yè)面進(jìn)行簡(jiǎn)單驗(yàn)證。Mytest.suite 是一個(gè)測(cè)試套件文件,用來包含其他三個(gè)測(cè)試腳本。
圖 7. Sahi 測(cè)試腳本目錄
run_tests.sh 的文件內(nèi)容如下。它首先調(diào)用 init.sh 啟動(dòng) Xvfb 和 Sahi,然后觸發(fā)測(cè)試腳本的運(yùn)行。命令中指定了 JUnit 報(bào)表的輸出路徑和 Sahi 自身的 HTML 報(bào)表的輸出路徑。
圖 8. run_tests.sh 文件內(nèi)容
將測(cè)試腳本提交到 Docker 的 Subversion 容器(svn://172.17.42.1/mytest)。
配置 Jenkins
首先,安裝兩個(gè) Jenkins 插件:
Docker Plugin
該插件能夠集成 Jenkins 與 Docker。其功能前文已有描述。
HTML Publisher Plugin
該插件用以發(fā)布構(gòu)建生成 HTML 報(bào)表,方便日后查看。
接下來,要開啟 Docker 的 TCP 監(jiān)聽端口。開啟的方法在不同的系統(tǒng)上有所不同。本實(shí)例 Docker 主機(jī)為 RHEL 6.5。開啟的方法是在/etc/sysconfig/docker 中設(shè)置 other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock",然后運(yùn)行“service docker restart”重啟 Docker 服務(wù)。CoreOS 上的開啟方法請(qǐng)參見Customizing docker。
進(jìn)入 Jenkins 的系統(tǒng)配置頁(yè)面(Manager Jenkins>Configure System),在最底部比之前增加了一個(gè) Cloud 的部分。點(diǎn)擊 Add a new cloud,選擇 Docker 添加一個(gè) Docker 主機(jī)。這里,因?yàn)?Jenkins 運(yùn)行在 Docker 的容器里,直接用私有 IP(ifconfig 里 docker0 對(duì)應(yīng)的 IP)加端口 4243 填寫 Docker URL 輸入域。
圖 9. Docker Cloud 配置
Figure xxx. Requires a heading
接下來,添加 Docker 鏡像。
圖 10. Docker 鏡像配置
建議將 Jenkins Slave 的 workspace 目錄映射到 Docker 主機(jī)的一個(gè)文件夾,這樣 workspace 的內(nèi)容才能持久保存,并且從 Subversion 或者其他版本控制軟件更新代碼的時(shí)候才會(huì)以增量方式更新。在該實(shí)例中,配置如下。
圖 11. Docker 鏡像 Volumes 配置
同之前在啟動(dòng) Jenkins 容器部分講到的一樣,必須修改主機(jī)上的目錄的權(quán)限,以確保容器能夠?qū)ζ渥x寫。
現(xiàn)在,可以創(chuàng)建 Jenkins Job 了。
圖 12. Job 配置 – Docker 容器部分
此時(shí),Job 配置的頁(yè)面里比之前增加了一個(gè) Docker Container 的部分。在 Label Expression 里輸入“docker”與之前定義的 shenrui/sahi 鏡像綁定 (該輸入域的值與鏡像配置里的 Labels 輸入域值相同)。
Source Code Management 部分,選擇 Subversion,并填入之前在 Subversion 容器上創(chuàng)建的資源庫(kù) URL。
圖 13. Job 配置 – 源代碼管理部分
頁(yè):
[1]