基于docker搭建Jenkins自动化构建发布(tomcat war包及Java jar包)

一、linux环境准备

安装jdk

https://www.cnblogs.com/fuzongle/p/12811057.html

安装git(此环节可把代码库的公私钥先行配置好)

https://www.cnblogs.com/fuzongle/p/12830572.html

安装maven

https://www.cnblogs.com/fuzongle/p/12825048.html

安装docker

https://www.cnblogs.com/fuzongle/p/12781828.html

二、安装Jenkins

1.启动docker,下载Jenkins镜像

docker pull jenkins/jenkins
image.png

2.创建Jenkins挂载目录并授权权限(我们在服务器上先创建一个jenkins工作目录 /var/jenkins_mount,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。 如果我们不这样做,那么如果需要修改容器配置文件,将会有点麻烦,因为虽然我们可以使用docker exec -it --user root 容器id /bin/bash 命令进入容器目录,但是连简单的 vi命令都不能使用)

mkdir -p /var/jenkins_mount
chmod 777 /var/jenkins_mount

3.创建并启动Jenkins容器

docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/local/apache-maven-3.8.4:/usr/local/apache-maven-3.8.4 -v /home/jdk/jdk1.8.0_291:/home/jdk/jdk1.8.0_291 --name myjenkins jenkins/jenkins
#参数说明
-d 后台运行镜像

-p 10240:8080 将镜像的8080端口映射到服务器的10240端口。

-p 10241:50000 将镜像的50000端口映射到服务器的10241端口

-v /var/jenkins_mount:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录,以及maven和jdk的目录同样需要挂载,保证容器内能访问到宿主机上的环境

-v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。

--name myjenkins 给容器起一个别名

#如果有端口
docker ps -l

4.查看jenkins是否启动成功,如下图出现端口号,就为启动成功了

docker ps -l
image.png

5.查看docker容器日志。


image.png

6.访问Jenkins页面,输入你的ip加上10240


image.png

7.管理员密码获取方法,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。
vi /var/jenkins_mount/secrets/initialAdminPassword

至此,Jenkins安装结束!

三、访问Jenkins安装插件

1.系统管理→插件管理→可选插件→搜索如下你要安装的插件。
1.1.默认是英文,如果英文水品不怎么好的,建议安装jenkins中文插件,安装下面三个插件后,可以输入自己的IP+端口/restart重启,也可以手动重启。
Locale plugin
Localization Support Plugin
Localization: Chinese (Simplified)

image.png

1.2安装maven插件
image.png

1.3安装git插件,如果你用的是svn就去下载对应的插件
image.png

1.4安装webhook插件

image.png
  1. 系统管理→全局工具配置


    image.png

    2.2.找到自己安装maven插件的位置的配置文件路劲,jdk安装的文件路径


    image.png

    2.3.找到自己安装git插件的路劲,maven插件路劲,填写成功后应用并保存
    image.png

    到此基础配置已完成!

四、新建项目(tomcat项目)

1.主页→新建项目


image.png

2.在General中选择丢弃旧的构建,保持构建天数自定义,保持最大构建个人数,根据个人需求。


image.png

3.配置项目源码地址库
image.png

4.配置git私钥,同PC端配置git公私钥,此处配置好私钥即可,配置好后选择对应的分支


image.png

5.选择构建触发器,此处选择定时轮询策略,即定时检查代码有无更新,有则触发构建
image.png

6.选择构建前置操作,主要是maven的配置及命令,注意:此处可能会提示找不到pom文件,可以看看前篇有提到的Jenkins容器中maven目录的映射是否有配置
image.png

7.配置构建后操作
image.png

8.配置tomcat服务账号密码

编辑tomcat配置目录conf下的tomcat-users.xml文件,插入账号密码并授予脚本权限


9.立即构建进行测试,构建控制台日志中能看到以下success输出则表示构建成功,即可去tomcat服务器查看war包的运行状态



至此,基于tomcat运行的war包项目在Jenkins上的持续构建配置已经完毕,需要注意的是博主环境是基于docker容器运行的Jenkins,所以tomcat环境等同于远端的服务器,这里主要是通过tomcat自身的机制实现war包的更新发布

五、新建项目(Java jar包项目)

大部分配置与前篇tomcat环境配置相同,此处省略。
1.系统管理-系统配置,配置Publish over SSH(如果找不到该项需要先添加该插件),此处配置用作于Java的jar包构建完成后的运行脚本执行,此处私钥配置可自行百度此处不做详解


image.png

2.配置jar包构建后的操作


image.png

3.脚本核心内容,除了环境变量等配置外,下方截图中突出的两处是解决Jenkins构建完成后杀子进程导致jar包未启动即退出的问题。


image.png

image.png

至此基于Jenkins持续构建Java jar包环境已经搭建完毕,可以进行构建测试了。

六、搭建过程中的问题与解决方案

1.构建过程中提示找不到maven配置文件或目录
解决方案:前篇中提到的基于docker运行的Jenkins需要做相关目录的映射处理,另外在系统管理-全局工具配置中,需要配置maven的主目录及配置文件路径,git也一样


image.png

2.maven打包提示找不到启动类,maven插件异常,以及ava: 程序包com.sun.image.codec.jpeg不存在


image.png

解决方案:

                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    1.8
                    1.8
                    UTF-8
                    
                        
                        ${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar
                    
                
            

3.部署至远端tomcat时提示访问受限,The username you provided is not allowed to use the text-based Tomcat Manager (error 403)


image.png

解决方案:除了前篇提到过的在tomcat用户中添加相应配置外,还需要在/webapps/manager/META_INF/context.xml文件,将文件中对访问的来源受限设置注释

  

4.执行jar包脚本时提示 Java:command not found
解决方案:建立Java执行程序软连接


image.png

5.Jenkins构建结束后杀子进程导致的Java jar包部署未结束就退出导致应用运行不起来
解决方案:在执行脚本中设置不杀进程变量,执行启动命令后休眠一段时间使jar包运行起来


image.png

到此整个Jenkins持续构建环境搭建完毕,篇中部分来自以下原文:
https://www.cnblogs.com/fuzongle/p/12840219.html
https://blog.csdn.net/qq_39533847/article/details/81012385

你可能感兴趣的:(基于docker搭建Jenkins自动化构建发布(tomcat war包及Java jar包))