Docker搭建Jenkins、mysql、分布式自动化、镜像制作,及遇到的坑
一、Docker搭建Jenkins
查看所有Linux环境变量
$ env
1. Docker搭建Jenkins
# 拉取jenkins镜像
$ docker pull jenkins/jenkins# 强制删除容器
$ docker rm -f myjenkins# 新建jenkins_home文件夹
$ mkdir /home/wyt/jenkins_home# 设置权限
$ sudo chown -R 1000:1000 /home/wyt/jenkins_home/# 运行容器
$ docker run --name myjenkins -itd --network host -v /home/wyt/jenkins_home:/var/jenkins_home --env JAVA_OPTS="-Xmx2048m" jenkins/jenkins# 后台启动-d,-it当前bash启动
$ docker run --name myjenkins -d -p 8080:8080 -p 50000:50000 -v /home/wyt/jenkins_home:/var/jenkins_home jenkins/jenkins# 注意实际内存不要超过物理内存的一半
$ docker run --name myjenkins -itd -p 8080:8080 -p 50000:50000 -v /home/wyt/jenkins_home:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" jenkins/jenkinsPS:注意挂载权限:sudo chown -R 1000:1000 /home/wyt/jenkins_home/
jenkins启动脚本
#! /bin/bash
docker rm -f myjenkins
# docker run --name myjenkins -p 5003:8080 -p 5004:50000 jenkins
# docker run --mame myjenkins -itd -p 5003:8080 -p 5004:50000 --env JAVA_OPTS="-Xmx8192m" -v /home/wyt/jenkins_home:/var/jenkins_home jenkins:2.60.3
docker run --name myjenkins
-d -p 8080:8080
-p 50000:50000
-v /home/wyt/jenkins_home:/var/jenkins_home
-v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3
-v /usr/local/allure-2.17.2:/usr/local/allure-2.17.2
--env JAVA_OPTS="-Duser.timezone=GMT+08 -Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" jenkins/jenkins
进入容器交互
docker exec -it myjenkins bash
2. 四种网络模式
官方文档:https://docs.docker.com/network/
案例:搭建测试环境常用模式,前端不变,只更换后端服务
https://gitee.com/WeiboGe2012/conan
https://gitee.com/WeiboGe2012/holmes
conan镜像文件制作在8.2
holmes镜像文件制作在8.3
#! /bin/hash
docker rm -f holmes conan
# 应用briage模式暴露前端的服务
docker run --name=conan -d -p 8999:4200 conan
# 应用contoiner模式,将后端服务挂在conan上面
docker run --name=holmes -d --network=contoiner:conan holmes
3. Docker搭建Mysql
# 强制删除容器
$ docker rm -f some-mysal# 搭建并连接MYSQL服务
$ docker run --name some-mysal -v /home/wyt/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwer1234 -p 8081:3306 -d mysql# 下面不知道是什么
$ docker run -d --name test_sleep_infinity --link some-mysql centos sleep infinity
4. 搭建TESTLINK
老版本两个服务在同一台电脑上可以使用link
通过testlink容器 访问mariadb容器
# 强制删除
$ docker rm -f mariadb testlink$ docker volume create --name mariadb_data
$ docker run -d --name mariadb
-e ALLOW_EMPTY_PASSWORD=yes
-e MARIADB_USER=bn_testlink
-e MARIADB_PASSWORD=bitnami
-e MARIADB_DATABASE=bitnami_testlink
-v mariadb_data:/bitnami/mariadb
-p 8081:3306 bitnami/mariadb:latest# 使用--link的方式将mariadb注入,或者使用-e的方式将mariadb的环境变量注入
$ docker volume create --name testlink_data
$ docker run -d --name testlink
-p 8082:8080 -p 8083:443
-e ALLOW_EMPTY_PASSWORD=yes
-e TESTLINK_DATABASE_USER=bn_testlink
-e TESTLINK_DATABASE_PASSWORD=bitnami
-e TESTLINK_DATABASE_NAME=bitnami_testlink
-v testlink_data:/bitnami/testlink
--link mariadb bitnami/testlink:latest
访问http://localhost:8082
新版本两个服务不在同一台电脑上不可以使用link
通过testlink容器 访问mariadb容器
官方文档 https://registry.hub.docker.com/r/bitnami/testlink
第 1 步:创建网络
$ docker network create testlink-network
第 2 步:为 MariaDB 持久化创建一个卷并创建一个 MariaDB 容器
$ docker volume create --name mariadb_data
$ docker run -d --name mariadb --env ALLOW_EMPTY_PASSWORD=yes --env MARIADB_USER=bn_testlink --env MARIADB_PASSWORD=bitnami --env MARIADB_DATABASE=bitnami_testlink --network testlink-network --volume mariadb_data:/bitnami/mariadb bitnami/mariadb:latest
第 3 步:为 TestLink 持久性创建卷并启动容器
$ docker volume create --name testlink_data
$ docker run -d --name testlink -p 8082:8080 -p 8083:8443 --env ALLOW_EMPTY_PASSWORD=yes --env TESTLINK_DATABASE_USER=bn_testlink --env TESTLINK_DATABASE_PASSWORD=bitnami --env TESTLINK_DATABASE_NAME=bitnami_testlink --network testlink-network --volume testlink_data:/bitnami/testlink bitnami/testlink:latest
https://localhost:8082
4. 使用SELENIUM DOCKER(拉镜像)
https://registry.hub.docker.com/搜索对应版本的镜像
命令启动
$ docker rm -f hub chrome1 chrome2
$ docker run --name=hub
-p 8081:4444
-e GRID_TIMEOUT=0
-e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true
-e GRID_NEW_SESSION_WAIT_TIMEOUT=-1
-e GRID_BROWSER_TIMEOUT=15000
-e GRID_TIMEOUT=30000
-e GRID_CLEAN_UP_CYCLE=30000
-d selenium/hub:3.141.59# 图形界面
# NODE_MAX_INSTANCES、NODE_MAX_SESSION,能够启动多少个浏览器
$ docker run --name=chrome1
-p 8082:5900
-e NODE_MAX_INSTANCES=6
-e NODE_MAX_SESSION=6
-e NODE_REGISTER_CYCLE=5000
-e DBUS_SESSION_BUS_ADDRESS=/dev/null
-v /dev/shm:/dev/shm
--link hub
-d selenium/node-chrome-debug:3.141.59VNC密码是:secret
访问http://localhost:8081
点击console
再添加10个
# 图形界面
# NODE_MAX_INSTANCES、NODE_MAX_SESSION,能够启动多少个浏览器
$ docker run --name=chrome2
-p 8083:5900
-e NODE_MAX_INSTANCES=10
-e NODE_MAX_SESSION=10
-e NODE_REGISTER_CYCLE=5000
-e DBUS_SESSION_BUS_ADDRESS=/dev/null
-v /dev/shm:/dev/shm
--link hub
-d selenium/node-chrome-debug:3.141.59
返回在进入console
5. 分布式自动化demo
selenium/hub和selenium/node-chrome-debug在同一台
电脑部署,可使用selenium.sh脚本
docker rm -f hub chrome1
docker run --name=hub
-p 8081:4444
-e GRID_TIMEOUT=0
-e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true
-e GRID_NEW_SESSION_WAIT_TIMEOUT=-1
-e GRID_BROWSER_TIMEOUT=15000
-e GRID_TIMEOUT=30000
-e GRID_CLEAN_UP_CYCLE=30000
-d selenium/hub:3.141.59# 图形界面
# NODE_MAX_INSTANCES、NODE_MAX_SESSION,能够启动多少个浏览器
docker run --name=chrome1
-p 8082:5900
-e NODE_MAX_INSTANCES=6
-e NODE_MAX_SESSION=6
-e NODE_REGISTER_CYCLE=5000
-e DBUS_SESSION_BUS_ADDRESS=/dev/null
-v /dev/shm:/dev/shm
--link hub
-d selenium/node-chrome-debug:3.141.59
selenium/hub和selenium/node-chrome-debug
不在同一台
电脑部署,可使用selenium.sh脚本
解决办法:
进入hub:docker exec -it hub bash
查看信息:env | grep HUB 或 env | grep GRID
把buh信息以-e的形式注入到chrome1启动
源码 https://gitee.com/WeiboGe2012/techUI
下载VNC viewer地址 https://www.realvnc.com/de/connect/download/viewer/
6. 持续自动化集成(此版本jenkins不是docker版)
前提:
1、已安装maven环境
2、已安装allure环境
全局工具配置:maven
全局工具配置:allure
添加Allure插件
添加Maven Integration
添加git或gitee插件
创建techUI任务
下面这步有两种方式实现
方式一:走shell命令
#! /bin/bashmvn clean test -DsuiteXmlFile=testng-parallel.xml
方式二:走maven命令
配置allure路径,就是项目target目录
保存,立即执行,查看VNC-Viewer有三个浏览器同时执行
三个浏览器执行时间
7. 持续自动化集成(此版本jenkins是docker版)
前提:
1、已安装maven环境
2、已安装allure环境
全局工具配置:maven
全局工具配置:allure
添加Allure插件
添加Maven Integration
添加git或gitee插件
创建techUI任务
配置allure路径,就是项目target目录
保存,立即执行,遇到问题:不执行测试用例,尚未解决,有解决的请留言
8. docker镜像制作
官方文档:https://docs.docker.com/engine/reference/builder/
8.1 创建dockerfile/Dockerfile文件
目录
$ cd dockerfile
$ ll
Dockerfile
entrypoint.sh
Dockerfile文件
# 继承centos镜像
FROM centos
# 将entrypoint.sh打入到镜像内root目录下面
ADD entrypoint.sh /root
# 只有在容器启动时生效,在容器内env查询不到
ENV JAVA_HOME=/usr/local/jdk1.8.0_231
ENV PATH=$JAVA_HOME:$PATH
# 安装git、vim,注意有多个都写在一个RUN指令里面,写多个RUN指令会有多个镜像层(例如在pull jenkins镜像时下载多少行就有多少层),实在不行才写多个RUN指令;/root/.bashrc环境变量,在容器内env可以查看到
# RUN yum install -y vim
RUN yum install -y git vim && echo "export JAVA_HOME=/usr/local/jdk1.8.0_231" >> /root/.bashrc && echo "export PATH=$JAVA_HOME:$PATH" >> /root/.bashrc# 指定镜像启动时的脚本
ENTRYPOINT ["/bin/bash","/root/entrypoint.sh"]
entrypoint.sh保证进程不结束
#! /bin/bashping www.baidu.com
# 或
#/usr/sbin/sshd -0
#while true
#do
# sleep 10
#done
执行命令制作镜像
$ cd dockerfile
# -f
docker build -t 镜像名称 .
8.2 conan镜像制作
FROM centos:7ADD entrypoint.sh /rootWORKDIR /root
USER rootRUN yum install -y wget git && wget https://nodejs.org/dist/v16.13.1/node-v16.13.1-linux-x64.tar.xz && tar xvJf node-v16.13.1-linux-x64.tar.xz && cd node-v16.13.1-linux-x64 && ln -s /root/node-v16.13.1-linux-x64/bin/npm /usr/bin/ && ln -s /root/node-v16.13.1-linux-x64/bin/node /usr/bin/ && chmod 777 -R /root/node-v16.13.1-linux-x64
# && alias cnpm="npm --registry=https://registry.npm.taobao.org --cache=$HOME/.npm/.cache/cnpm --disturl=https://npm.taobao.org/dist --usrconfig=$HOME/.cnpmrc"
# && npm --registry=https:.//registry.npm.taobao.org --cache=$HOME/.npm/.cache/cnpm --disturl=https://npm.taobao.org/dist --userconfig=$HOME/.cnpmrc i -g @angular/cli&& npm install -g cnpm --registry=https://registry.npm.taobao.org && export PATH=$(npm prefix -g)/bin:$PATH && echo "$(npm prefix -g)" && cnpm i -g @angular/cliENV PATH=/root/node-v16.13.1-linux-x64/bin:$PATH
ENTRYPOINTr ["/root/entrypoint.sh"]
8.3 holmes镜像制作
requirements.txt文件不确定是什么
FROM centos:7ADD entrypoint.sh /root
ADD requirements.txt /rootWORKDIR /root
USER root
RUN yum install -y epel-release && yum install -y python34 git python34-setuptools python34-devel.x86_64 && easy_install-3.4 pip && yum install -y gcc && yum install -y soci-mysql-devel.x86_64 && ln -s /usr/local/mysql/bin/mysql /usr/bin && pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ENTRYPOINT ["/root/entrypoint.sh"]
遇到问题1
访问http://localhost:8080,报错:An error occurred during installation: No such plugin: cloudbees-folder
解决办法:
https://blog.csdn.net/DDJ_TEST/article/details/122210331
遇到问题2
重新启动连接的服务
遇到问题3
解决办法:
https://blog.csdn.net/DDJ_TEST/article/details/122133095
遇到问题4
解决办法:
https://blog.csdn.net/DDJ_TEST/article/details/122132581
遇到问题5
解决办法:
https://blog.csdn.net/DDJ_TEST/article/details/122164927
遇到问题6
解决办法:
标签:
相关文章
-
无相关信息