一、基于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
4、关闭防火墙
systemctl stop firewalld.service
5、访问Jenkins的端口未8080
这起终可能会需要等待一段时间,然后进入如下的界面:
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
二、配置jenkins
1、配置jdk、maven环境
1-1 选择系统管理,然后选择全局工具配置
1-2 首先选择新增jdk,然后去除自动安装的勾选,再然后填写别名,填写JAVA_HOME,note:JAVA_HOME路径不知道,可以通过 echo $JAVA_HOME 查看
1-3 maven配置: 点击新增maven,默认自动下载就ok,最后保存
2、下载maven插件
jenkins默认是不支持maven工程构建的,所以需要下载插件.
2-1系统管理->插件管理
2-2 可选插件,搜索Maven Integration,勾选中下图所示,然后点击直接安装。
3、新建任务
3-1 首页选择新建任务
3-2配置git拉取代码
3-2-1 源码管理->Git->填写Repository URL(git路径)->添加jenkins
3-2-2添加git账号/密码
3-2-3 选择账号密码
3-3 配置build,如下图所示,最后保存
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:
选中上面所示的“执行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服务器的登录信息。