一、實現思路

  1. 在mac本地安裝Docker Desktop

  2. 創建jenkins容器

  3. 根據自動化項目依賴包構建python鏡像(構建自動化python環境)

  4. 運行新的python容器,執行jenkins從倉庫中拉下來的自動化項目

  5. 執行完成之后刪除容器

二、環境準備

1、一臺mac

2、在mac上安裝Docker Desktop,打開軟件

3、在docker上拉取Jenkins鏡像(我這里用的是一位朋友的包)

qinhaili/new_enkins:haili

4、在docker上拉取python鏡像(我這里用的是一位朋友的包)

qinhaili/python3:haili

三、創建jenkins容器

  1. 命令
    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
  2. 參數說明
    -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容器中
  3. 運行效果
    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","")

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

 

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