一、實現思路
-
在mac本地安裝Docker Desktop
-
創建jenkins容器
-
根據自動化項目依賴包構建python鏡像(構建自動化python環境)
-
運行新的python容器,執行jenkins從倉庫中拉下來的自動化項目
-
執行完成之后刪除容器
二、環境準備
1、一臺mac
2、在mac上安裝Docker Desktop,打開軟件
3、在docker上拉取Jenkins鏡像(我這里用的是一位朋友的包)
qinhaili/new_enkins:haili
4、在docker上拉取python鏡像(我這里用的是一位朋友的包)
qinhaili/python3:haili
三、創建jenkins容器
- 命令
docker run -dit --name=jenkins_save01 -p 9999:8080 -u=root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker qinhaili/new_enkins:haili - 參數說明
-i:表示運行容器
-t:表示容器啟動后會進入其命令行
-d:守護式方式創建容器在后臺運行
--name:容器名稱
-p 9999:8080:端口映射,宿主機端口:jenkins容器端口
-u=root:指定容器用戶為root用戶
-v /var/run/docker.sock:/var/run/docker.sock:將docker.sock映射到jenkins容器中
docker.sock文件是docker client與docker daemon通訊的文件
-v /usr/bin/docker:/usr/bin/docker:將宿主機docker客戶端映射到jenkins容器中 - 運行效果
1、看到返回容器ID表示jenkins容器創建成功

四、配置jenkins容器
1、在瀏覽器中輸入http://localhost:9999

2、在終端內輸入命令獲取管理員密碼
1)執行命令:docker logs jenkins_save01

3、復制密碼輸入到密碼框,點下一步,來到如下頁面(中間需要等待一段時間,大概1分鐘左右,耐心等待)

4、取消默認插件勾選,進入下一步

5、設置管理員用戶名和密碼(以后就用這個賬號密碼登陸你的jenkins)

6、配置實例

7、jenkins初始化完成看到如下界面

五、jenkins安裝插件
1、點上一步驟開始使用jenkins,來到如下界面

2、點Manage Jenkins來到如下頁面

3、點Manage Plugins安裝插件
1)Git插件安裝

2)Docker插件安裝

3)HTML Publisher 插件安裝

4)安裝完成后重啟jenkins容器
docker restart jenkins_save01
六、創建jenkins任務
1、重新登陸jenkins,點New Item

2、創建自由風格的項目

七、配置jenkins任務
1、配置構建記錄保留規則

2、Git倉庫配置




3、配置構建后操作
1)添加構建后操作模塊

2)配置運行腳本

3)配置jenkins中展示的測試報告路徑



4)保存項目所有配置

八、構建有項目執行環境的python鏡像
-
將項目依賴包導出來到req.txt文件中,txt文件名稱可以隨意寫
pip freeze > req.txt -
在宿主機(安裝docker的機子)上新建一個目錄(我的目錄在/app),將req.txt文件復制進去
在終端內輸入mkdir app 切換到app目錄下:cd app/ 查看目錄下的文件:ls 打開編輯req.txt文件,將項目依賴包的文件,復制到req.txt文件內:vim req.txt 復制后,按esc切換模式,輸入:wq 保存退出
-
在app目錄下創建Dockerfile文件(文件名必須是Dockerfile,沒有后綴)
打開編輯Dockerfile文件,將內容復制到文件內:vim Dockerfile
復制后,按esc切換模式,輸入:wq 保存退出
查看目錄下的文件:ls
此時有兩個文件
-
req.txt文件內容如下,版本號根據自己的安裝寫
unittestreport==1.3.2 openpyxl==3.0.7 ddt==1.4.2 pytest==6.2.2 selenium==3.141.0 pymysql==1.0.2 faker==8.1.0 jsonpath==0.82 BeautifulReport==0.1.3 rsa==4.7.2 pytest-html==3.1.1 allure-pytest==2.9.43 requests-toolbelt==0.9.1
- Dockerfile內容以及解釋如下
FROM python:3-alpine #基于python:3-alpine這個基礎鏡像鏡像構建鏡像 WORKDIR /app #切換工作空間目錄 ADD ./req.txt /app #將python項目依賴包文件添加到鏡像 RUN pip3 install -r req.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安裝依賴包 CMD ["python3", "start_all.py"] #設置容器執行后自動執行的命令,這里start_all.py是我們自動化框架的執行入口文件
- 在app目錄下執行鏡像構建命令
docker build -t py48:nana .
-t:鏡像名稱
點(.):點表示Dockerfile文件所在的目錄,我現在在app目錄下,點表示當前目錄

- 構建成功后會看到一個新的鏡像(docker images)

九、 完成run.sh
1、run.sh內容如下
echo "運行容器python執行自動化" #輸出日志 #-w=$WORKSPACE:指定workspace #--volumes-from=jenkins_save01:將jenkins容器中的workspace映射到python容器中,此時jenkins中git拉下來的代碼就會被映射進去 docker run --rm -w=$WORKSPACE --volumes-from=jenkins_save01 python3.9:haili echo "python執行自動化執行成功"
1)將run.sh復制到你的項目根目錄下
2)提交代碼到Git倉庫
git add .
git commit -am'update'
git push
十、去構建jenkins任務
1、回到jenkins首頁,找到項目點構建

2、查看構建過程

3、點構建記錄

4、查看構建過程(python自動化項目的輸出日志也在這里可以看到)

5、構建過程如下圖

6、查看測試報告

7、此時的測試報告會沒有樣式,因為被Jenkins禁用了CSS樣式,需要我們手動解決

十一、解決測試報告沒有樣式的問題


把這個代碼放進去執行:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

執行成功返回是空,說明沒問題

十二、重新構建可以看到有樣式的測試報告

浙公網安備 33010602011771號