Docker部署jenkins

拉取镜像

建议使用的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.


爱调味品的大哥