回覆列表
  • 1 # 檸檬班軟體測試

    使用 Docker 搭建 Jenkins+python3+selenium\helium 專案專案背景

    用 python3 在本地寫了一個專案,這個專案採用 helium+selenium+chrome 進行介面操作,程式碼放在 gitee 上託管。現在基本功能已經實現,想在 Linux 伺服器上部署專案程式碼,實現自動構建。

    自動構建解決方案自動構建工具選型:jenkins中介軟體選型:docker程式碼執行環境:python3指令碼執行工具:Chrome 瀏覽器、chromedriver、helium 庫Ⅰ、安裝 dockerLinux 系統中安裝 docker

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    docker 映象國內加速

    vim /etc/docker/daemon.json

    {

    "registry-mirrors": [

    "https://registry.docker-cn.com",

    "http://hub-mirror.c.163.com",

    "https://docker.mirrors.ustc.edu.cn"

    ]

    }

    # 重啟服務

    systemctl daemon-reload

    systemctl restart docker

    Ⅱ、安裝 jenkins在 Linux 上任意路徑,建立一個用於存放 Jenkins 檔案的資料夾 "jenkins_py"

    mkdir jenkins_py docker run -itd --name=jenkins_py -p 8989:8080 -p 50001:50000 -v $PWD:/var/jenkins_home --privileged=true -u root jenkins/jenkins

    訪問 jenkins:http://ip:8989出現輸入密碼頁面時,獲取密碼:方法 1:

    # 進入容器

    docker exec -it -u root jenkins_py /bin/bash

    # 檢視密碼

    cat /var/jenkins_home/secrets/initialAdminPassword

    方法 2:

    # 在當前宿主linux機器上,進入前面自己建立的jenkins_py資料夾

    cd secrets

    cat initialAdminPassword

    Ⅲ、容器安裝必要軟體進入容器

    docker exec -it -u root jenkins_py /bin/bash

    安裝更新

    # 安裝更新

    apt-get update

    # 檢視系統

    cat /etc/issue

    # 此時容器預設的系統為 debain 9

    # debain預設的軟體源非常慢, 可以更換為國內阿里源

    # 安裝vim

    apt-get install -y vim

    apt-get install -y wget

    # 更換源為阿里源

    vim /etc/apt/sources.list

    deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib

    deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib

    deb http://mirrors.aliyun.com/debian-security stretch/updates main

    deb-src http://mirrors.aliyun.com/debian-security stretch/updates main

    deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib

    deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib

    deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib

    deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib

    # 更新系統

    apt-get update

    # 安裝libssl-dev

    apt-get install libssl-dev

    Ⅳ、配置 Web 自動化環境下載瀏覽器百度搜索"chrome for linux", 下載適合 debain 版本的 Chrome 瀏覽器把下載的檔案上傳到 Linux 機器下載瀏覽器驅動下載 Chrome 瀏覽器 Linux 對應版本的驅動把下載的檔案上傳到 Linux 機器Jenkins 容器中,安裝 Chrome 瀏覽器

    # 把chrome檔案,複製到上面建立的 jenkins_py 資料夾

    cp google-chrome-stable_current_amd64_85.0.4183.102.deb ./jenkins_py/

    # 進入容器

    docker exec -it -u root jenkins_py /bin/bash

    cd /var/jenkins_home

    chmod +x google-chrome-stable_current_amd64_85.0.4183.102.deb

    dpkg -i google-chrome-stable_current_amd64_85.0.4183.102.deb

    配置瀏覽器驅動

    # 解壓驅動zip包

    unzip chromedriver_linux64.zip

    # 複製到 jenkins_py資料夾

    cp chromedriver ./jenkins_py/

    # 進入容器

    docker exec -it -u root jenkins_py /bin/bash

    cd /var/jenkins_home

    chmod +x chromedriver

    mv chromedriver /usr/bin/

    cp /usr/bin/chromedriver /usr/local/bin/

    Ⅴ、安裝 python3安裝 python3

    apt-get install -y python3

    安裝 pip

    # 下載pip

    wget https://bootstrap.pypa.io/get-pip.py

    python3 get-pip.py

    pip3 install --upgrade --force-reinstall setuptools

    修改系統預設 python 版本為 python3

    cd /usr/bin

    ls -l python*

    # 檢視上面的python3的版本

    rm -rf python

    ln -s python3.5 pythonpython3.5

    # 修改為上面對於的python3版本* 修改pip源

    修改 pip 源

    vim /etc/pip.conf

    [global]

    trusted-host = mirrors.aliyun.com

    index-url = http://mirrors.aliyun.com/pypi/simple/

    Ⅵ、jenkins 配置任務建立任務配置 Git配置構建觸發器(可選)配置構建指令碼

    pip install -r requirements.txt 執行專案根目錄中的 requirements.txt 檔案,自動安裝專案需要的庫,這樣就不用擔心程式碼引入了新庫,而 Jenkins 中不存在,導致報錯了。

    cp ../../tools.ini $PWD/src/conf 複製配置檔案。因為 gitee 託管專案時,沒有提交 ini 帶私密資訊的配置檔案

    python main.py 用 python 執行專案

    構建

    注意: 用 docker+jenkins 來執行 selenium 的專案,是無圖形介面的,所以專案中,瀏覽器必須採用無頭模式

    # 參考程式碼

    self.options = ChromeOptions()

    self.options.add_argument("--headless")

    self.options.add_argument("--no-sandbox")

    self.options.add_argument("--disable-gpu")

    self.options.add_argument("--disable-dev-shm-usage")

    start_chrome(headless=True,options=self.options)

    好了,專案構建成功。整個構建步驟、方法,你學會了嗎?

  • 2 # 夕陽雨晴

    1. 問題描述

    你用docker做過什麼好玩或者有逼格的事情?

    問題結論

    docker較底層的docker安裝、映象構建、容器編排、容器釋出等,還是剛開始參加工作那2年接觸過,至今已3年多時間。網際網路公司中,除了基礎運維團隊,其他研發看到的都是整合的開發環境,曉得底層用的docker或者k8s,但就使用者而言,在網站工具上部署、釋出、上線,一個新的映象部署完成。至於底層如果互動和編排,鬼曉得。基於此,我就簡單說說當年基於 docker 的 war 包部署和 jar 包部署,僅供參考。

    2. 簡述 docker 部署示例

    2.1 docker 的使用場景

    讓應用快速打包與容易自動化部署建立輕量、私密的 PAAS 環境實現自動化測試和持續的整合/部署

    2.2 war 包部署示例

    # 編寫 Dockerfile 檔案

    from tomcat:latest

    MAINTAINER sunzc #作者

    COPY demo.war /usr/local/tomcat/webapps #放置到tomcat的webapps目錄下

    # 生成 war 包映象命令

    $ docker build -t demo:v1 . # (. 代表Dockerfile檔案所在的路徑)

    # 啟動容器

    docker run --name demo -p 8080:8080 -v /home/logs/demo/:/home/logs/demo/ -e TZ=Asia/Shanghai -e spring.profiles.active=local --restart=always -d demo:v1

    2.3 jar 包部署示例

    # 編寫 Dockerfile 檔案

    FROM keensoft/centos7-java8

    MAINTAINER sunzc

    # set timezone to PRC

    ENV TZ="Asia/Shanghai" LANG=en_US.UTF-8 PRO_ENV="prod"

    ADD demo.jar /home/App.jar

    ENTRYPOINT java -jar /home/App.jar

    # 編寫start.sh檔案,用於啟動jar程式,並且映象啟動後執行

    java -jar /home/App.jar

    # 生成 jar 包映象命令

    docker build -t demo:v1 .

    # 啟動容器

    docker run --name demo -p 8080:8080 -v -v /home/logs/demo/:/home/logs/demo/ -e TZ=Asia/Shanghai -e spring.profiles.active=local --restart=always -d demo:v1

    3. 小結

    3.1 Docker特性

    隔離性:libcontainer(預設容器)=>核心名稱空間。安全性:內部(cgroups)| 容器和宿主主機(核心能力機制)。可度量性:cgroups(控制組)→資源度量和分配(使用者)。移植性:AUFS(快速更新)→層的概念。

    3.2 Docker優點(比較LXC)

    跨平臺可移植性:按統一標準打包(映象中),可傳播。面向應用:最佳化部署應用(設計哲學)→API,介面及文件(體現)。版本控制:追蹤、查詢、記錄版本資訊(應用程式更改史)和回滾版本等。元件複用:元件式搭建(基礎映象)→Python(執行環境) | postgreasql(基礎映象)。共享性:公共的註冊伺服器(可免費下載原始碼)。

  • 中秋節和大豐收的關聯?
  • 魅族mx6還會不會降價了?