centos7服务器 docker-compose 安装jenkins并配置
安装环境
Centos7
默认docker和docker-compose已经安装好
如果没有安装的,可以参考这篇博客
https://www.cnblogs.com/darling331/p/14621427.html
文末有我遇到的一些问题,如果你也遇到了,可以参考下
创建目录文件夹
mkdir jenkins
编辑docker-compose.yml文件
version: '3.1'
services:
jenkins:
image: jenkins/jenkins:lts
restart: always
user: root
container_name: 2jenkins
ports:
- "8080:8080"
expose:
- "8080"
- "50000
privileged: true
volumes:
- $PWD/data/:/var/jenkins_home
- /etc/localtime:/etc/localtime
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
environment:
- JAVA_OPTS='-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
执行docker-compose up -d (-d 参数是表示是否在后台运行镜像实例,跟java -jar && 类似)
启动成功
输入网址进行登录
根据页面上的路径提示,拿到密码
第一次有点慢
如果不是很熟悉自己需要什么插件的话,就选择安装推荐的插件
开始下载插件,进行自动安装
安装完成需要创建用户,或者不创建
这里默认就好
看到这个界面,说明jenkins已经安装成功了
接下来,进入配置界面
安装插件:
所需的插件:
• Maven插件 Maven Integration plugin
• 发布插件 Deploy to container Plugin
需要安装插件如下:
安装插件Deploy to container —支持自动化代码部署到tomcat容器
Git 插件 可能已经安装
Maven Integration :jenkins利用Maven编译,打包所需插件
Publish Over SSH :通过ssh连接
ssh 插件
安装过程:
系统管理—>插件管理---->可选插件—>过滤Deploy to container---->勾选—>直接安装
如果需要配置远程服务,可以在这里配置<这一步我没有用到,没有实践过>
配置jdk、maven命令,全局配置
这里使用jdk8就好了,由于 jdk现在下载需要账户密码,我们在这里进行账号密码授权,没有用户的,可以在网站上注册一个
或者有离线的jdk可以传到服务器上,然后这里配置服务器的路径进行解压安装
maven 安装maven3.x的版本就好了,如果有特殊需要的话,可以选择安装最新的
需要gradle的话,也可以自行进行安装
添加仓库,添加仓库密钥
配置打包脚本 -Dmaven.test.skip=true 表示排除test测试类
clean package -Dmaven.test.skip=true
第一次编译会有一点慢,要下载很多东西
服务器上包存在的目录
遇到的问题及解决方式
问题一
Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: server m
修改 vi /etc/resolv.conf
添加
nameserver 8.8.8.8
nameserver 114.114.114.114
不要执行重启网卡,否则配置会被还原
--systemctl restart network
或者 编辑 /etc/systemd/resolved.conf 这个文件,把 DNS 那一行解开注释
vi /etc/systemd/resolved.conf
问题二
出现电脑访问不了虚拟机的web端口的话,重启下centos防火墙
接着先是看centos7的防火墙的状态,查看的命令为
sudo systemctl status firewalld
查看后,看到active(running)就意味着防火墙打开了
如果想关闭防火墙,命令为:
sudo systemctl stop firewalld
关闭后查看是否关闭成功,如果看到inactive(dead)就意味着防火墙关闭了
打开防火墙的命令为:
sudo systemctl start firewalld
上面打开和关闭防火墙都是临时的,重启电脑后又会恢复到默认的状态(我的默认状态是打开)。如图,我先关闭了防火墙,然后输入reboot重启centos7
重启后查看防火墙状态,还是处于打开的状态
如果是想重启后防火墙还是处于关闭的状态,得使用命令:
sudo systemctl disable firewalld
输入上一步的命令后(sudo systemctl stop firewalld。),关闭防火墙,然后重启
问题三
该Jenkins实例似乎已离线
原因一:升级站点的链接https://updates.jenkins.io/update-center.json默认是https
解决办法:打开一个新的页面输入http://your_jenkins_url/pluginManager/advanced页面最下面找到update site把链接的https改成http,然后保存。
或者直接修改文件Jenkins_home/hudson.model.UpdateCenter.xml
把
我修改后就好了,但是第二次部署的时候,没有遇到这个问题
如果有遇到相同问题,但是有别的解决方案的,请回复我
问题四
启动容器时报错
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)
解决方案:重启docker
systemctl restart docker
问题五
jenkins编译时出现错误
Waiting for Jenkins to finish collecting data
解决:
勾选 Build -> Disable automatic fingerprinting of consumed and produced artifacts
问题六
构建历史时间和当前时间不对
查看宿主机时间,修改时间 tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看Jenkins系统信息
发现时区不对
修改时区
执行
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')
问题七
指纹验证
jenkins Waiting for Jenkins to finish collecting data
构建完成后 Jenkins 对文件进行指纹验证导致的。
这个指纹验证功能在 Maven 项目的构建中是自动开启的。
所以我们只需要关闭在 Maven 构建配置中的自动指纹验证选项就可以了。
问题八
当 Maven 升级到3.8.1 之后,执行 mvn clean package 命令后会报错如下
maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
分析:
maven在3.8.1 的默认配置文件中增加了一组标签,如果仓库镜像是http 而不是https 就会被拦截禁止访问,而当前公司私服一般是http 而不支持https.
jenkins 安装maven的时候,降低maven的版本 到3.8x的上一个版本
文末 附一下一个大佬的安装步骤,大同小异
https://blog.csdn.net/qq_37671523/article/details/107306463
这时候就可以嵌入一些编译完成之后的脚本和要做的事情了,后续慢慢补充,
jenkins还是有很多功能需要摸索的