一、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
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
5.查看docker容器日志。
6.访问Jenkins页面,输入你的ip加上10240
7.管理员密码获取方法,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。
vi /var/jenkins_mount/secrets/initialAdminPassword
至此,Jenkins安装结束!
三、访问Jenkins安装插件
1.系统管理→插件管理→可选插件→搜索如下你要安装的插件。
1.1.默认是英文,如果英文水品不怎么好的,建议安装jenkins中文插件,安装下面三个插件后,可以输入自己的IP+端口/restart重启,也可以手动重启。
Locale plugin
Localization Support Plugin
Localization: Chinese (Simplified)
1.2安装maven插件
1.3安装git插件,如果你用的是svn就去下载对应的插件
1.4安装webhook插件
-
系统管理→全局工具配置
2.2.找到自己安装maven插件的位置的配置文件路劲,jdk安装的文件路径
2.3.找到自己安装git插件的路劲,maven插件路劲,填写成功后应用并保存
到此基础配置已完成!
四、新建项目(tomcat项目)
1.主页→新建项目
2.在General中选择丢弃旧的构建,保持构建天数自定义,保持最大构建个人数,根据个人需求。
3.配置项目源码地址库
4.配置git私钥,同PC端配置git公私钥,此处配置好私钥即可,配置好后选择对应的分支
5.选择构建触发器,此处选择定时轮询策略,即定时检查代码有无更新,有则触发构建
6.选择构建前置操作,主要是maven的配置及命令,注意:此处可能会提示找不到pom文件,可以看看前篇有提到的Jenkins容器中maven目录的映射是否有配置
7.配置构建后操作
8.配置tomcat服务账号密码
编辑tomcat配置目录conf下的tomcat-users.xml文件,插入账号密码并授予脚本权限
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
9.立即构建进行测试,构建控制台日志中能看到以下success输出则表示构建成功,即可去tomcat服务器查看war包的运行状态
至此,基于tomcat运行的war包项目在Jenkins上的持续构建配置已经完毕,需要注意的是博主环境是基于docker容器运行的Jenkins,所以tomcat环境等同于远端的服务器,这里主要是通过tomcat自身的机制实现war包的更新发布
五、新建项目(Java jar包项目)
大部分配置与前篇tomcat环境配置相同,此处省略。
1.系统管理-系统配置,配置Publish over SSH(如果找不到该项需要先添加该插件),此处配置用作于Java的jar包构建完成后的运行脚本执行,此处私钥配置可自行百度此处不做详解
2.配置jar包构建后的操作
3.脚本核心内容,除了环境变量等配置外,下方截图中突出的两处是解决Jenkins构建完成后杀子进程导致jar包未启动即退出的问题。
至此基于Jenkins持续构建Java jar包环境已经搭建完毕,可以进行构建测试了。
六、搭建过程中的问题与解决方案
1.构建过程中提示找不到maven配置文件或目录
解决方案:前篇中提到的基于docker运行的Jenkins需要做相关目录的映射处理,另外在系统管理-全局工具配置中,需要配置maven的主目录及配置文件路径,git也一样
2.maven打包提示找不到启动类,maven插件异常,以及ava: 程序包com.sun.image.codec.jpeg不存在
解决方案:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<verbose />
<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
3.部署至远端tomcat时提示访问受限,The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
解决方案:除了前篇提到过的在tomcat用户中添加相应配置外,还需要在/webapps/manager/META_INF/context.xml文件,将文件中对访问的来源受限设置注释
<Context antiResourceLocking = "false" privileged = "true" > <!--注释这里,去除对访问权限的设置 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> </Context >
4.执行jar包脚本时提示 Java:command not found
解决方案:建立Java执行程序软连接
5.Jenkins构建结束后杀子进程导致的Java jar包部署未结束就退出导致应用运行不起来
解决方案:在执行脚本中设置不杀进程变量,执行启动命令后休眠一段时间使jar包运行起来
到此整个Jenkins持续构建环境搭建完毕,篇中部分来自以下原文:
https://www.cnblogs.com/fuzongle/p/12840219.html
https://blog.csdn.net/qq_39533847/article/details/81012385