一、安装 docker环境
可以参考 安装docker文章
二、安装 Jenkins
Jenkins官方文档
1.拉取 Jenkins 镜像
docker pull jenkins/jenkins:latest-jdk8
- 【采坑点】注意在docker镜像库搜索版本号时,应搜索 jenkins/jenkins,目前最新镜像维护的是这个名称。jenkins 这个镜像名称,最新的版本都是几年前维护的。
2.启动 Jenkins 命令
创建/var/jenkins_home 文件夹,设置权限 chmod 777 /var/jenkins_home
docker run -itd -p 9080:8080 -p 9081:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /home/run/apache-maven-3.5.4:/usr/local/maven --name jenkinsTest jenkins/jenkins:latest-jdk8
详解:
- -v /var/jenkins_home:/var/jenkins_home 这是后续构建项目的 workspace,构建出来的包也在这个目录下,同时为了配置 Jenkins方便。
- -v /home/run/apache-maven-3.5.4:/usr/local/maven 因为容器中不带 Maven配置,所以把宿主机的 Maven 直接映射到容器内,方便后续使用。
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
3. 查看容器是否启动成功
- 命令验证
docker ps
-
-
浏览器输入 url:host (127.0.0.1:9080)看到以下页面证明 jenkins 启动成功
4.【踩坑】如果安装完成启动时卡在下面页面
- 问题:国内访问国外安装插件的问题
- 解决方案:使用国内插件库清华源
-
打开 jenkins的配置文件
vi /var/jenkins_home/hudson.model.UpdateCenter.xml
修改配置为
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
安装成功后首页如下:
5.获取管理员账号密码
vi /var/jenkins_home/secrets/initialAdminPassword
6.输入密码点击【继续】
7.选择"安装推荐的插件"
8.【采坑】安装插件比较慢
问题:Jenkins安装插件比较慢或比较卡
解决方案:设置 Jenkins 搜索引擎使用百度,不再使用google 搜索
# 在/var/jenkins_home/updates路径下执行一下命令,替换 default.json 中的搜索引擎地址
sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
- 配置完成后记得重启 jenkins,否则不生效
jenkins 重启方式:浏览器访问127.0.0.1:9080/restart
9.输入账号密码创建管理员账户
10.实例配置,使用默认
11.Jenkins 就绪,开始使用
12.【踩坑】ruby-runtime安装失败,导致 hook 插件安装失败
问题:docker安装Jenkins默认使用的 latest 版本镜像,该镜像是 JDK 11, ruby-runtime插件目前只能支持到 JDK 8,所以安装失败。
解决方案一: 下载一个低版本jkd,将其拷贝到jenkins容器中, 然后偷梁换柱把低版本的jdk替换掉高版本的。
解决方案二:重新下载 JDK 8的 jenkins 镜像,具体操作如上(之所以重新下载,是因为我们的项目稳定版本是使用的 JDK8,这样可以避免后续的很多问题)。
# 在容器外下载就行
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u262-b10/openlogic-openjdk-8u262-b10-linux-x64.tar.gz
# 将下载的jdk拷贝到容器内
docker cp openlogic-openjdk-8u262-b10-linux-x64.tar.gz jenkins:/usr/local
# 以root用户进入容器, -u 指定root用户
docker exec -it -u root jenkins /bin/bash
# 解压 JDK 文件
tar -xvf openlogic-openjdk-8u262-b10-linux-x64.tar.gz
# 改个名
mv openlogic-openjdk-8u262-b10-linux-64/ jdk8
# 找找java命令在哪儿 在 /opt/java/openjdk/bin/java
whereis java
# 先备份一下原java命令
mv /opt/java/openjdk/bin/java /opt/java/openjdk/bin/java.bak
# 偷梁换柱
ln -s /usr/local/jdk8/bin/java /opt/java/openjdk/bin/java
# 测试一下
java -version
换完低版本,回去继续将ruby-runtime插件,装完插件再把java版本改回来
rm -f /opt/java/openjdk/bin/java
mv /opt/java/openjdk/bin/java.bak /opt/java/openjdk/bin/java
-------------------------------------------END Jenkins 安装完成------------------------------------