超详细jenkins 自动部署项目
安装1、在安装使用Jenkins之前,要说一下所需要的所有开发环境(1)版本控制子系统(SVN):SVN服务器、项目对应版本库、版本库中钩子程序(提交代码后,触发Jenkins自动打包并部署到应用服务器)(2)持续集成子系统(存在Jenkins的服务器):JDK、Tomcat、 Maven(3)Jenkins:主体程序、SVN 插件、Maven 插件、Deploy to Web Conta...
所需要软件包
百度云地址:https://pan.baidu.com/s/1z7vgniToFETLsly-T6wCrQ
安装
1、在安装使用Jenkins之前,要说一下所需要的所有开发环境
(1)版本控制子系统(SVN):SVN服务器、项目对应版本库、版本库中钩子程序(提交代码后,触发Jenkins自动打包并部署到应用服务器)
(2)持续集成子系统(存在Jenkins的服务器):JDK、Tomcat、 Maven
(3)Jenkins:主体程序、SVN 插件、Maven 插
(4)应用发布子系统(项目的运行环境):JDK、Tomcat
2、安装svn
#安装svn
yum install subversion
#创建svn文件夹
mkdir /usr/local/svn
#创建目录文件
mkdir /usr/local/svn/project1
#创建项目
svnadmin create /usr/local/svn/project1
#4. 为了便于管理,将所有版本库的密码和权限设置在同一个文件下面,操作步骤如下:
# 4.1 取出project1下面conf文件夹下的authz和passwd两个文件到svn根目录下面
mv /usr/local/svn/project1/conf/authz /usr/local/svn
mv /usr/local/svn/project1/conf/passwd /usr/local/svn
# 4.2 修改每个版本库目录conf文件夹下面的svnserve.conf文件, 将
# anon-access = read ,#auth-access = write ,# password-db = passwd,#authz-db = authz
# 修改为: anon-access = none ,auth-access= write,password-db = ../../passwd,authz-db = ../../authz (password-db = ../../passwd,authz-db = ../../authz代表相对路径而非绝对路径)
# svnserve.conf 文件中anon-access 一定要打开注释并设置为none
vi /usr/local/svn/project1/conf/svnserve.conf
添加用户
在[user]下面添加 username = passwd,记得“=”前后的空格,如下图:
添加角色
启动
sudo svnserve -d -r /usr/local/svn
2、安装Tomcat (提供的tomcat包已修改好)
我这里直接解压了下载好的Tomcat包
(1)设置并记录Tomcat 服务器(项目运行环境)的访问账号密码,配置文件位置:tomcat/conf/tomcat-users.xml。
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat_user" password="123456"
roles="manager-gui,manager-script,manager-jmx,manager-status" />
3、安装jenkins(提供的tomcat包已修改好)
1)、把Jenkins.war放在Tomcat解压目录/webapps目录下,
2)、打开Tomcat 解压目录/server.xml修改URL地址的编码解码字符集tomcat/conf/server.xml.修改端口,避免冲突
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9000" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
3)、启动Tomcat 并通过浏览器访问:http://192.168.70.131:9000/jenkins
注意:此处的Tomcat是运行Jenkins的Tomcat,不一定是项目所运行的Tomcat,这两个可能不是放在一个Tomcat里。
jenkins客户端设置
依照提示,查看/root/.jenkins/secrets/initialAdminPassword 文件内容,填入文本框,这里填入的密文同时也是admin账号的密码。或者在tomcat 控制台也没看到。
选择哪种方式都不会对后续操作有太大影响,因为有需要的插件我们可以在后续有针对性的安装,在这里选择“安装推荐的插件”。
打×的插件是由于网络传输导致的安装失败,后面再重新安装即可。注意:这个步骤中如果选择了安装插件则系统必须能够联网。
可以选择使用admin账户继续,后面有需要仍然有机会注册新账户。
开始使用Jenkins
点保存,继续配置。
点击全局工具配置
设置全局maven的settings配置文件
设置全局jdk。我这里设置两个jdk。可以设置多个。
设置全局maven
点保存,继续配置。
安装插件时受到网络状况的影响有可能会失败,不要紧,多试几次,直到成功。
Jenkins配置项目
配置项目所需要的jdk版本
配置svn代码地址
指定SVN的账户密码,要去前面配置的一致!!!设置完,一定要点add,再选一次。配置好的效果,如下图:
svn每种环境对应不同的配置文件。这里可以设置多个moudle。打包时候会替换指定路径 的svn对应的项目配置文件。点击add moudle
配置 当前项目配置文件所在地址。解决不同环境使用不同配置文件。不用创建多个job。
注意:此处设置的local moudle Directory 先清空该目录下的文件,然后把svn取到的配置文件放到该目录下。
项目创建时针对不同环境的配置文件需要放在一个统一目录下,该目录下不应该存在其他文件。
例如我的项目环境配置文件和其他一些文件放在了同一个目录下。
我采用的方式是:1.svn 下载好项目文件和配置文件之后,我把src/mian/resource/config 下的文件移动到该文件在原始项目中位置。然后在删除config 目录(此目录是local/moudle/directiory 指定的,非项目目录,所以删除无所谓)。先执行shell 脚本,在进行maven 的clean install 操作
如果构建之后还需要执行脚本。例如启动tomcat(jenkins 必须保证部署项目的tomcat启动,才能部署进去)
构建—》增加构建步骤-----》执行shell
在执行shell输入框中输入以下命令(根据自己需求)
(1)第一行:BUILD_ID=DONTKILLME 必须添加。否则jenkins构建完毕后会杀掉所有其启动的进程。例如脚本中启动了tomcat,但是构建完成之后,他会把启动的tomcat 杀掉。
(2)第二行:执行带参脚本
(3)第三行:把环境配置文件移动到 在项目中的原始位置。我这里环境配置文件在resources文件夹下。
(4)第四行:删除后生成的环境配置文件夹。
构建—》增加构建步骤-----》调用顶层maven目标
输入maven命令
点击保存,指定构建操作。
(1)WAR/EAR files 所对应的路径是相对于/root/.jenkins/workspace/apple 路径下的位置
(2)Context path 如果填写【/】 则在tomcat webapp 下生成ROOT.war 。访问路径http://ip:port
(3)Containers:选择与服务器想符合的Tomcat;
这里的Tomcat指项目运行的Tomcat,用户名密码之前配置过!!!
点击保存
发布到远程服务器
系统管理–》系统设置
拉到页面最下面。找到SSH Servers
Remote Directory:设置远程服务器的根目录。job里面使用的远程目录会基于这个目录设置。
设置登陆用户密码
应用—》保存
执行脚本清除远程服务器tomcat下的war包及解压后的文件
job中设置远程服务器部署项目。按照下图配置。
Source files: war包所在位置。
基于/root/.jenkins/workspace/{projectName}/ 目录下所有的文件和目录。此处必须是相对路径。
Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。
/root/.jenkins/workspace/accessment_movie_dev/target/accessment_movie.war
例如上面的** 也就是target 目录。这个目录需要移除。所以这里设置/target ,最终只会把accessment_movie.war 发送到远程服务器指定目录下。否则这里不设置,则会在远程服务器目录下生成一个target目录,目录下存放accessment_movie.war文件。
Remote directory source files 存放在远程服务器的位置,这里只能填写相对路径,相对于上面远程服务器全局设置的Remote directory。
Exec command 远程服务器执行的命令。
jenkins增加用户,赋予不同视图
安装下面的插件
插件安装好后在系统管理里能看到这个说明安装成功
然后在系统管理—>全局安全配置中:
保存之后点击:系统管理—>Manage and Assign Roles,然后点击Manage Roles
增加权限组,分配权限
点击 系统管理—》管理用户—》新建用户
点击 系统管理–》Manage and Assign Roles–》Assign Roles
至此,用户赋予不同视图完成,登陆用户,查看视图。
最后补充个知识点。由于我项目中某些jar 是在本地的。打包时候需要把这些jar 也打进去。需要进行如下配置
**directory:**本地jar所在路径
p
r
o
j
e
c
t
.
b
a
s
e
d
i
r
是
项
目
根
路
径
。
也
可
以
使
用
{project.basedir}是项目根路径。也可以使用
project.basedir是项目根路径。也可以使用{pom.basedir} 是pom文件所在路径。
targetPath:打包到war包的哪个目录下
filtering:Filtering 是 maven 的 resource 插件 提供的功能,作用是用环境变量、pom文件里定义的属性 和指定配置文件里的属性替换属性(*.properties)文件里的占位符(${jdbc.url})
include:directory中哪些需要打包进去 。*代表所有
更多推荐
所有评论(0)