Docker部署jenkins
- https://jenkins.io/zh/doc/book/installing/ 查看官方提供的部署信息
拉取镜像
建议使用的Docker 官方镜像
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts-jdk17
- 运行镜像
docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins
要注意宿主机的外挂文件权限必须是1000用户组,dockerfile有规定(chown -R 1000 /your/home)
- 初始化jenkins服务
jenkins一直卡着 显示正在启动,请稍后
进入上面宿主外置目录 /your/home 修改 hudson.model.UpdateCenter.xml 文件中的"url"标签http://mirror.xmission.com/jenkins/updates/update-center.json
Jenkins插件安装失败处理方法
=安装失败出现的环境========
1.网络或墙的问题导致插件下载安装失败 修改 hudson.model.UpdateCenter.xml 文件中的"url"标签即可解决
2.因为Jenkins版本太低导致插件不支持。如下报错
手动更新版本
1.在服务器中下载jenkins的最新war包:
wget http://mirrors.jenkins.io/war/latest/jenkins.war
2.将下载的war包cp至容器的usr/download目录中:
docker cp jenkins.war ContainerId:/usr/download
3.进入容器:
docker exec -it -u root ContainerId bash
4.查看容器中jenkins war包的位置,并备份原来的war包:
whereis jenkins
cd /usr/share/jenkins
cp jenkins.war jenkinsBAK.war
5.将usr/dowanload下的包cp到/usr/share/jenkins下覆盖:
cp /usr/download/jenkins.war /usr/share/jenkins
6.重启jenkins,更新到新版本:
http://yourIP:8080/restart
jenkins部分全局配置
- 配置jdk和maven,可以如下图自动下载配置,配置会在第一次构建job时生效
- 构建项目配置邮件群发通知
在配置邮箱服务之前要先配置系统管理中jenkins location配置项
SMTP server:SMTP服务器,比如腾讯企业邮箱的SMTP服务器为smtp.exmail.qq.com。
Default Content Type:邮件内容格式,可选Plain text和HTML。
Default Recipients:默认的收件人列表,用逗号分隔。抄送或密送某个收件人可以在其邮箱前面加上cc:或bcc:。
Default Subject:默认的邮件标题。
Default Content:默认的邮件内容。
Enable Debug Mode:开启插件的Debug模式,我们会在日志里看到更多信息。
其他配置保持默认即可。
按钮高级设置,注意Default Triggers触发器设置
jenkins 项目构建配置
- 项目构建不远程部署
*springboot项目构建远程部署
sh 脚本
export BUILD_ID=dontkillme
source /etc/profile
#!/bin/bash
echo "Restarting SpringBoot per_recharge Application"
pid=`ps -ef | grep per_recharge-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "关闭进程:"$pid
fi
echo "授予当前用户权限"
chmod 777 /home/per_recharge-0.0.1-SNAPSHOT.jar
echo "执行....."
#java -jar /usr/local/miniprogram/miniprogram.jar
nohup java -jar -Dspring.profiles.active=test per_recharge-0.0.1-SNAPSHOT.jar --server.port=8080 &
pids=`ps -ef | grep per_recharge-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
echo "新进程:"$pids
echo "启动结束--------"
- war项目构建远程部署tomcat
在构建项目之前需要在tomcat服务端配置用户名和密码让jenkins访问并上传war
1.修改tomcat-uers.xml
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="123456" roles="tomcat,manager-gui,manager-script"/>
2.修改context.xml
<Context antiResourceLocking="true" antiJARLocking="true">
<context>
在构建之前使用ssh执行脚本清除之前的war包,下面时简单的脚本
#!/bin/sh
tomcat_home=/home/tomcat7/apache-tomcat-7.0.92
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
sh $tomcat_home/bin/shutdown.sh
rm -rf $tomcat_home/webapps/qzsmk_card
rm -rf $tomcat_home/webapps/qzsmk_card.war
sh $tomcat_home/bin/startup.sh
在系统管理新增ssh配置
Q.E.D.