一、基于Docker安装Jenkins

1、安装docker


2、使用docker安装jenkins

docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
docker run --restart=always -v /home/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /opt/software/apache-maven-3.6.3:/usr/local/maven  --net="host" --name jenkins -d jenkins/jenkins:jdk11

下面对各个参数做出解释:

--restart=always  在容器停止运行的时候,重启容器。用于开机自启和容器意外关闭时的自启动

-v /home/jenkins-data:/var/jenkins_home 将宿主机的 /home/jenkins-data 目录挂载到 /var/jenkins_home。这样做是为了把Jenkins文件存放到宿主机上,就算容器被删除了,新建一个新的容器内容也不会丢失。

-v /var/run/docker.sock:/var/run/docker.sock jenkins容器与Docker守护进程通信, 如果jenkins容器需要实例化其他Docker容器,则该守护进程是必需的。

-v /opt/software/apache-maven-3.6.3:/usr/local/maven 挂在Maven目录

--net="host" 容器使用宿主机的网络。jenkins默认是8080端口,用这条参数,不会修改端口,如果要改端口,请使用 -p 

-p 80:8080 将容器的8080端口映射到宿主机的80端口

--name jenkins 给容器命名

-d 容器后台运行

使用的java8的话建议用jenkinsci/blueocean, 如果使用的是java11,建议使用 jenkins/jenkins:jdk11

3、访问Jenkins的端口未8080

http://localhost:8080

4、关闭防火墙

systemctl stop firewalld.service

5、访问Jenkins的端口未8080

http://localhost:8080

这起终可能会需要等待一段时间,然后进入如下的界面:

docker jenkins升级站点url docker搭建jenkins_服务器

6、进入docker容器

docker exec -it 容器ID /bin/bash

可以用下面的命令,查看容器ID

docker ps

7、查看jenkins管理员密码,其中cat后面的是5页面中的值,并将显示结果复制到5中的管理员密码的输入框,点击继续。

cat /var/jenkins_home/secrets/initialAdminPassword

8、选择安装推荐的插件,然后等待

9、创建第一个管理员用户,填写好后点击保存并完成-》实例配置界面,继续点击保存并完成-》开始使用jenkins

docker jenkins升级站点url docker搭建jenkins_maven_02

docker jenkins升级站点url docker搭建jenkins_maven_03

docker jenkins升级站点url docker搭建jenkins_linux_04

docker jenkins升级站点url docker搭建jenkins_docker_05

二、配置jenkins

1、配置jdk、maven环境

1-1 选择系统管理,然后选择全局工具配置

docker jenkins升级站点url docker搭建jenkins_docker_06

1-2 首先选择新增jdk,然后去除自动安装的勾选,再然后填写别名,填写JAVA_HOME,note:JAVA_HOME路径不知道,可以通过 echo $JAVA_HOME 查看

docker jenkins升级站点url docker搭建jenkins_linux_07

1-3 maven配置: 点击新增maven,默认自动下载就ok,最后保存

docker jenkins升级站点url docker搭建jenkins_maven_08

2、下载maven插件

jenkins默认是不支持maven工程构建的,所以需要下载插件.

2-1系统管理->插件管理

docker jenkins升级站点url docker搭建jenkins_maven_09

2-2 可选插件,搜索Maven Integration,勾选中下图所示,然后点击直接安装。

docker jenkins升级站点url docker搭建jenkins_linux_10

3、新建任务

3-1 首页选择新建任务

docker jenkins升级站点url docker搭建jenkins_服务器_11

docker jenkins升级站点url docker搭建jenkins_docker_12

3-2配置git拉取代码

3-2-1 源码管理->Git->填写Repository URL(git路径)->添加jenkins

docker jenkins升级站点url docker搭建jenkins_linux_13

3-2-2添加git账号/密码

docker jenkins升级站点url docker搭建jenkins_docker_14

3-2-3 选择账号密码

docker jenkins升级站点url docker搭建jenkins_docker_15

3-3 配置build,如下图所示,最后保存

docker jenkins升级站点url docker搭建jenkins_maven_16

3-4 修改maven的setting.xml文件,如果没有私服限制,可以直接跳过这一步!

进入容器,查看maven安装的版本及位置

#查看容器ID
docker ps

#进入容器
docker exec -it 容器ID /bin/bash

#查看maven版本,其中/var/jenkins_home为jenkins中容器中的虚拟安装路径
cat /var/jenkins_home/hudson.task.Maven.xml

我之前安装的maven是3.6.3的版本

修改maven的settings.xml文件

#修改settings.xml文件,配置私服代理
vi /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.6.3/conf/settings.xml

重启docker中的服务

#重启jenkins容器,其中jenkins服务名称,通过docker ps可以获知
docker restart jenkins服务名称

配置完上面的内容之后,就可以拉取代码并mvn install了,可以在jenkins中的控制台中看到

3-5 jenkins配置post steps:

docker jenkins升级站点url docker搭建jenkins_linux_17

选中上面所示的“执行shell”,并在执行shell框中填写如下脚本,

#!/bin/bash
#服务名称
SERVER_NAME=demo-project
#源jar路径,mvn打包完成之后,target目录下的jar包名称,也可以选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar命令执行
JAR_NAME=demo-project
#源jar路径
#/usr/local/jenkins_home/workspace--> jenkins工作目录
#demo项目目录
#target打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/demo-project/target
#打包完成之后,把jar包移动到运行jar包的目录-->work_daemon, work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/var/jenkins_home/workspace/demo-project/target

echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"|
echo "结束进程"
for id in $PID
do 
	kill -9 $id
	echo "killed $id"
done 
echo "结束进程完成"

#复制jar包到执行目录
echo "复制jar包到执行目录: cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH" 
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chomd 755 $JAR_NAME.jar

#前台运行jar包
#java -jar $JAR_NAME.jar
#后台运行jar包
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &

保存,然后重新构建,就可以发现已经可以启动项目了!在docker容器中已经可以访问,但是外面是访问应用的端口号。我们需要开放docker的对应端口号

3-6 docker开发对应端口号,我的应用的端口号为9103

#重启docker容器
systemctl restart docker

#清空未运行的容器
docker rm $(sudo docker ps -a -q)

#开放对应的端口
docker run -p 8080:8080 -p 9103:9103 -p 50000:50000 -d -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

以上只可以部署应用到jenkins机器上,不能部署到其他机器上!

3-7 部署到其他机器上

系统设置—> 管理插件—>可选插件”中安装(Publish Over SSH)插件。安装完成之后,然后在“系统管理—>系统设置—>Publish over SSH”设置要发布的linux服务器的登录信息。