背景
现版本的web自动化的CI/CD触发执行时,用例时间相较于以前大幅度增加,然后并没有web自动化用例的提交和维护,排查原因决定升级服务器中的Chrome版本看是否能有效减少时间。
升级思路
echo "------------------------run_branch.sh params------------------------"
echo "ACCOUNT=${ACCOUNT}"
echo "PASSWORD=${PASSWORD}"
echo "MODULES=${MODULES}"
echo "MOD_MODULES=${MOD_MODULES}"
echo "URL=${URL}"
echo "DOCKER_LOG_PATH=${DOCKER_LOG_PATH}"
echo "DOCKER_LOG_FILE=${DOCKER_LOG_FILE}"
echo ""
docker run -d -v /dev/shm:/dev/shm -v /var/log:/var/log --rm --name ${DOCKER_LOG_FILE} \
docker/robot-web-evn:latest bash -c \
"/opt/run_branch.sh -B ${TEST_BRANCH} -P '-M ${MOD_MODULES} -U ${URL} -R -A ${ACCOUNT} -P ${PASSWORD} -D $DOCKER_LOG_PATH'"
从这段shell中知道在服务器上执行时,会针对不同模块都会起一个新的container,所以我们需要在image中修改Chrome的版本并且升级对应的Chromedriver。
docker镜像的导入和导出
查看正在运行的实例
--docker ps -a
root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87cf238c109b 877e53b69c39 "bash" 5 weeks ago Up 5 weeks optimistic_wing
查看服务器上面的镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker/robot-web-evn latest 877e53b69c39 9 months ago 1.73GB
stf-poc_nginx latest 5b74c4e40526 9 months ago 127MB
stf-poc_storage-temp latest 9269390e9255 9 months ago 950MB
nginx latest 9beeba249f3e 9 months ago 127MB
nginx mainline 9beeba249f3e 9 months ago 127MB
jenkinsci/blueocean latest 9393ec9589f7 9 months ago 568MB
rethinkdb latest cba833c1e775 9 months ago 125MB
ubuntu 16.04 005d2078bdfa 10 months ago 125MB
openstf/stf latest a65a9b509967 10 months ago 950MB
pseudomuto/protoc-gen-doc latest 044fcab256f7 12 months ago 98MB
rethinkdb 2.3 3bf9f80966f0 14 months ago 126MB
sorccu/adb latest 7123ee61b746 2 years ago 30.5MB
openstf/ambassador latest b1f0eb8297cf 5 years ago 6.46MB
基于imageid:877e53b69c39有两个对应的容器实例,所以我们可以进入某一个容器对容器里面的文件作出修改后然后导出为tar文件再将该文件import为image。
执行
docker exec -it 87cf238c109b /bin/bash
进入容器里面,我们需要知道Chrome的路径,查看Dockerfile
FROM ubuntu:16.04
MAINTAINER homer
RUN mkdir -p /home
WORKDIR /opt
RUN echo && cd /home \
&& apt-get update \
&& apt-get install -y python3.6 curl git vim wget \
# && curl https://bootstrap.pypa.io/get-pip.py -o get-pip3.py \
# && python3.6 get-pip3.py \
&& apt-get install python3-pip \
&& pip3 install --upgrade pip \
&& pip install -r packages.txt \
在根目录下有一个home的文件夹会去下载各种安装包
root@87cf238c109b:/# cd home
root@87cf238c109b:/home# ls
# 结果
google-chrome-stable_current_amd64.deb
去usr/local/bin目录查看当前Chrome版本
google-chrome -version
未升级之前的版本号为55
由于之前已经安装过了Chrome的依赖所以我们只需要下载最新的安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
然后将安装包解压,会自动覆盖当前的chrome版本,插件什么的都不会变
sudo dpkg -i ./google-chrome-stable_current_amd64.deb
此时再查看版本号为
Google Chrome 88.0.4324.182
再去网站找到与当前版本符合的Chromedriver
wegt http://npm.taobao.org/mirrors/chromedriver/88.0.4324.96/chromedriver_linux64.zip
将下载的文件解压,放在如下位置
unzip chromedriver_linux64.zip
/usr/bin/chromedriver
容器的文件修改后我们可以退出容器做导出操作
[root@localhost ~]# docker export -o optimistic_wing.tar optimistic_wing
其中-o表示输出到文件,optimistic_wing.tar为目标文件,optimistic_wing是源容器名(name);
导出完毕后用这个tar文件导入为一个新的镜像
[root@localhost ~]# docker import optimistic_wing.tar docker/robot-web-evn
成功之后执行 docker image可以看到新建了一个镜像。