共计 11566 个字符,预计需要花费 29 分钟才能阅读完成。
背景
最近安装 Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在 90% 以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形成思路,现分享给大家,希望大家在安装的时候少走弯路。
PS:本人很痛恨那种粘贴复制,毫无思考的博主,本想着拿着解决问题的心态,但结果还是一样,不但浪费了大家的时间,还浪费了大家的感情,所以,我把我遇到的问题和解决的方式记录下来和大家分享。
知识背景
首先需要理解的是,Jenkins 是帮我们将代码进行统一的编译打包、还可以放到 tomcat 容器中进行发布。
意思是我们通过配置,将以前:编译、打包、上传、部署到 Tomcat 中的过程交由 Jenkins,Jenkins 通过给定的代码地址 URL,将代码拉取到其“宿主服务器”(这是我个人的称呼,在下边会用到,就是 Jenkins 的安装位置),进行编译、打包和发布到容器中。
因此我们可以注意到的是,在 Jenkins 的宿主服务器中必须要有可以进行:代码 clone(Git)、代码编译(Maven)、代码运行(Tomcat)的基本环境,其他文章上来就是安装 jenkins,忽略了一些基本的配置。
下边就开始讲解各部分的安装过程,如果已经安装某一步的环境,则可以以此进行下一步。
一、Git 的安装
1、安装依赖
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
注意:perl-ExtUtils-MakeMaker 也是这些安装列表中的一员,不要因为显示的换行造成大家认为是两条执行命令。
2、下载 Git
选择一个目录,存放下载的 git,例如我的是:/home/xuliugen/tmp,大家可以根据需求到官网下载相应的版本
wget https://github.com/git/git/archive/v2.3.0.zip
3、解压 git
下载之后是这样的,不要感到奇怪,直接解压即可
因为下载的是一个 zip,所以使用命令将其解压到 git 目录下:
# 参数 -d 后边的是解压到的目录
unzip v2.3.0 -d git
4、编译安装 git
进入 git 目录
将其安装在“/usr/local/git”目录下, 命令如下:
make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
5、配置 Git
sudo vim /etc/profile # 编辑 profile 文件
然后而已看到这个文件已经有很多配置了,只需要在最下边添加 git 的路径即可:
export PATH=/usr/local/git/bin:$PATH
将这段话放在最后边,然后使用 source 命令应用修改:
source /etc/profile
6、检验 Git 是否安装成功
git --version
二、Maven 安装
1、下载和解压 Maven
Maven 的安装包下载可以根据需求找到合适的版本,解压之后,我的位置是:
2、配置 Maven
编辑:~/.bash_profile 文件, 根据注释相应的修改即可
# maven 所在的目录
export M2_HOME=/home/xuliugen/software/maven/apache-maven-3.3.3
# maven bin 所在的目录
export M2=$M2_HOME/bin
# 将 maven bin 加到 PATH 变量中
export PATH=$M2:$PATH
# 配置 Java_HOME 所在的目录,注意这个目录下应该有 bin 文件夹,bin 下应该有 java 等命令
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0
然后运行:source ~/.bash_profile 应用修改
3、查看 Maven 是否安装成功
使用:mvn -version 即可查看结果
三、Jenkins 的部署
Jenkins 的安装很简单,直接将 war 放到容器中进行运行即可
1、将 jenkins 放到 Tomcat 中并解压,启动 Tomcat,成功启动之后访问 ip 和端口如下:
启动成功之后,进入的界面如上,表示启动成功。
2、安装插件
在进行配置之前,由于使用的是 Git 拉去代码的方式,所以要首先安装插件
找到:插件管理 在“可选插件”界面使用 ctrl+f 搜索:Deploy to container Plugin 插件(这个是支持将代码部署到 tomcat 容器的)
勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。
安装完之后,如果勾选了:安装完成后重启 jenkins 那么会重启 jenkins。
然后安装:GIT plugin,何上边的步骤一样,如果使用上述的方式,由于网络的原因,可能会安装失败,这就需要我们使用另一种方式进行安装。
使用同样的方式在“可选插件”中搜索 GIT plugin,找到之后点击蓝色链接(最好右键在新窗口中打开,放置覆盖 jenkins 界面)
会跳转到 Git Plugin 的插件信息地址:
可以看到 Plugin ID 为:git,然后在:http://updates.jenkins-ci.org/download/plugins/ 这地地方搜索(ctrl+f)即可找到,点进去,选择一个版本进行下载:
点进去下载的是一个 hpi 文件
然后同样的在:系统管理–管理插件–高级 Tab 中,下拉可以看到上传插件,然后选择文件上传刚才下载的 hpi 文件,即可,上传完之后,会自动安装。上述安装 Deploy to container Plugin 的方式也可以采用这种方式。
都安装完之后,在已安装 Tab 中可以看到刚安装的插件:
3、进行配置
看到上图中的左侧有一个:系统管理 点击去
上边的第一行黄色信息,表示编码问题,在 Tomcat–>conf–>server.xml 文件中修改即可
4、Jenkins 系统设置
点击:系统设置,这里没有强调的都设置为默认即可
(1)JDK,别名是任意的, 选择自己 jdk 的位置,jenkins 推荐使用 sun jdk 而不是 openjdk
(2)Git 的配置
注意这里的 git 位置,是可执行文件的地址,即是 git–bin–下的可执行文件 git 的目录(类似于 java 中 bin 下的 java 可执行文件位置)
如果填错,后期回报无法找到 git 等错误(最下边,其他问题下的第三个问题),请大家注意!
Jenkins 的分布式构建及部署——节点 http://www.linuxidc.com/Linux/2015-05/116903.htm
(3)Ant 的配置
由于本次并没有用到 Ant,不做配置,大家可以根据配置进行设置
(4)Maven 的配置,选择自己 maven 的存放位置
(5)Jenkins Location
这里配置的是 ip 加端口和一个路径名称,邮箱要进行设定,后期会发送 jenkins 执行的结果到邮件中
(6)邮件通知
这里我配置的 QQ 邮箱,大家根据情况进行设置相应的 smtp 服务器,用户名、密码分别为自己的 QQ 邮箱何密码,如果不进行设置,后期 jenkins 构建项目的时候会报错,报错信息很好理解也很好找到是没有配置邮件的问题。
首先,要保证邮件的 smtp 和 pop 是开启状态的,这样的话才可以通过验证:
最后点击下边的应用、保存即可
5、Configure Global Security
然后回到系统管理,看到 Configure Global Security 点击进去,根据下边进行配置即可
点击应用 保存之后,然后在屏幕的右上角,有一个登录 - 注册,点击注册即可实现用户的登录。
这里,如果是公司内网的话,或者最后搭建的 jenkins 是公司使用,那么最好用户名和密码为公司的账户密码,邮件也是公司的邮件,这样的话方便后期的操作。
至此 Jenkins 的基本配置完成。
创建 Job
1、创建项目
点击登录之后,会看到下边的界面中:My Views
点击进去
点击:创建一个新任务
选择 maven 项目,点击 OK,这里的 Item 名称是后边需要用到的,下边的配置也有用到这个的,大家可以很好的对应。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-02/128641p2.htm
2、进行项目的配置
(1)源码管理选择 Git,这个时候添加 url 之后,下边会报错,显示让去认证,认证即可(其他的安装中又遇到这个问题),如果认证失败,请下载认证 Github Authentication plugin 插件,这个在插件管理的可选插件中搜索安装。
我这里的 rul 是我在 gitos 上的一个项目,credentials 是我在 gitos 上的用户名和密码认证。
(2)构建触发器,就是什么时候执行 jenkins 的自动化部署
选择第一个,其他的基本是定时执行什么的,大家可以自行查找,查看如何设置,根据需要进行配置
(3)Post Steps
选择上图中的,然后下边 的 Execute shell 如下,脚本的编写在下边进行了详细的说明:
#!/bin/bash
#copy file and restart tomcat
export Java_HOME=/data/home/server/jdk
export CATALINA_HOME=/home/xuliugen/dubbo-provider
export CATALINA_BASE=/home/xuliugen/dubbo-provider
export BUILD_ID=dontKillMe
tomcat_path=/home/xuliugen/dubbo-provider
project=dubbo-provider
war_name=dubbo-provider.war
war_path=http://132.153.131.237/:8022/jenkins/job/ManenDemo/ws/targetserver_port=8082
file_path=~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target
$tomcat_path/bin/shutdown.sh
sleep 3s
echo "rm -rf ${tomcat_path}/webapps/ROOT/*"
rm -rf ${tomcat_path}/webapps/ROOT/*
cd $file_path
cp ${war_name} ${tomcat_path}/webapps/ROOT/
cd $tomcat_path/webapps/ROOT/
unzip ${war_name}
rm -rf ${war_name}
sleep 5s
#$tomcat_path/bin/startup.sh
cd $tomcat_path/bin/
./startup.sh
echo "server restarted"
- 1
(4)邮件通知
至此基本设置完毕,点击应用、保存
(5)立即构建
点击左上角的立即构建
然后看到下边的 Build History 点击蓝色的进去,会进入 Console
下边是进行 jar 的下载,会下载到宿主服务器的 maven 仓库中:
下边的信息表示项目编译通过:
下边是运行脚本的信息:
脚本的分析
在 Jenkins 的服务器上查看:
可以看到在 /root/.jenkins 这个目录,实际存放了 Jenkins 拉取 Git 代码之后编译好 war 的位置,到此,大家也许都该明白了,编译后的位置就在这里啊!然后,接着是部署到宿主服务器的 Tomcat 容器中,如何将编译好的 war 放到 tomcat 中,这就需要脚本来完成,也是上述过程中配置的过程,下边对每一行进行分析。
首先我们应该明白,将编译好的 war 放到 tomcat 容器中,我们首先要知道这两个的位置:编译后 war 的位置和目标容器的位置,很显然我们是知道的。
1、脚本文件的头,这个没得说
#!/bin/bash
2、环境变量设置
export JAVA_HOME=/data/home/server/jdk
export CATALINA_HOME=/home/xuliugen/dubbo-provider
export CATALINA_BASE=/home/xuliugen/dubbo-provider
export BUILD_ID=dontKillMe
上边的各个位置,大家也许都知道,CATALINA_HOME 和 CATALINA_BASE 的位置就是 Tomcat 容器的位置,这里根据需求我将 Tomcat 容器的名字改为 dubbo-provider 了,如果改成 /home/xuliugen/tomcat 是不是更好理解。
export BUILD_ID=dontKillMe 这一句很重要,因为该 job 启动完后执行下一 job,jenkins 直接把 tomcat 进程杀了,所以无论脚本中怎么写了启动 tomcat 的命令,他是不会启动的。虽然上述截图中显示了 Tomcat started、server restarted 但是访问项目地址是访问不了的,这在:其他问题的第二个说明了这个问题。
3、其他路径位置
tomcat_path=/home/xuliugen/dubbo-provider # 我的 Tomcat 位置
project=dubbo-provider # 我的项目编译的名称
war_name=dubbo-provider.war # 最后打包的 war 名称
war_path=http://132.153.131.237/:8022/jenkins/job/ManenDemo/ws/targetserver_port=8082 # 宿主服务器的 ip 何端口
file_path=~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target # 编译好的 war 包存放地址
这个:war_path 其实也就是 Jenkins 的宿主服务器位置 IP,端口为 jenkins 运行的端口,大家只需要将 ip 地址端口 ManenDemo 换成自己的即可;
file_path:就是 Jenkins 帮我们编译好的项目 war 的位置,上图中大家也可以看到,并且大家不可以完全按照上边的路径,要找到自己宿主服务器上实际 war 的位置,进行设置。
4、耳熟能详的执行命令
下边就是我们在使用原始方式,部署 war 的命令,大家很简单的可以理解,其中:
注意:个人写脚本的能力有限,所以我是假设项目已经在运行的情况下,因此我上来就是先关闭 Tomcat,(正确的方式,应该判断端口是否打开,如果本身 tomcat 未启动,我的这种情况,会在 Jenkins 的 Console 中报拒绝连接的问题,如下图)。
另外用到了 sleep 3s 这个可以让线程休眠一下,这样的话可以看一下 tomcat 的日志信息。
下边的脚本就是删除原来容器中的文件,然后将编译好的 war 移动到容器中,解压。运行 tomcat。
$tomcat_path/bin/shutdown.sh
sleep 3s
echo "rm -rf ${tomcat_path}/webapps/ROOT/*"
rm -rf ${tomcat_path}/webapps/ROOT/*
cd $file_path
cp ${war_name} ${tomcat_path}/webapps/ROOT/
cd $tomcat_path/webapps/ROOT/
unzip ${war_name}
rm -rf ${war_name}
sleep 5s
cd $tomcat_path/bin/
./startup.sh
echo "server restarted"
- 1
将项目布署到远程 Tomcat
上述创建项目,可以看出是在本地进行执行的,也就是进行编译后执行的 Tomcat 是何 Jenkins 的宿主服务器是在一起的,这很显然不符合我们常规的公司及其部署的方案,通常是将编译之后的代码在运行到其他的 Tomcat 服务器中的,下边有两种方式,将编译之后的项目部署到远程服务器中。
1、使用脚本的方式部署到远程服务器
2、使用 Deploy to container Plugin
插件部署到远程服务器
上述的开始阶段就安装了这个插件,下边就开始发挥其作用。
在创建的 Job 左侧点击设置,其他配置何在远程搭建项目是一致的,不同的是在这个地方:
以前我们在编译之后,将编译后的通过脚本补助到 Jenkins 的宿主服务器,使用插件,就不需要这种方式了。
还有就是的在构建之后,将编译后的文件**/target/dubbo-provider.war
(就是上边的~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target 目录)部署到下边的远程 Tomcat 容器中;这里 Containers 的用户名和密码是 Tomcat 管理员的账户密码,Tomcat URL 就是你需要进行部署的远程 Tomcat 服务器的 ip 和端口。
这里需要进行设置的是远程 Tomcat 的管理员信息,修改远程 Tomcat 容器下的 conf–tomcat-users.xml 文件,在内添加下边的内容:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager,manager-script,manager-gui"/>
即可实现远程的访问,测试是可以通过的,但是有一个问题,通过这种方式,只将 war 复制到了 wenapps 下:
因此这种方式的话,我们访问的时候必须是 ip、端口和项目名,例如:
http://115.159.151.247:8030/dubbo-provider/
当然这种方式 也是在实际的应用中不提倡的,解决方式就是修改 Tomcat 默认的访问路径即可,设置 Tomcat–conf–server.xml 文件如下:
在 Host 节点之间添加:
<Context path="" docBase="dubbo-provider" debug="0" reloadable="true" />
或者在 docBase 里边输入项目的绝对路径,例如我的:
<Context path="" docBase="/home/xuliugen/dubbo-provider/webapps/dubbo-provider" debug="0" reloadable="true" />
然后重启 Tomcat,这样的话,http://ip:8030/dubbo-provider/ 和 http://ip:8030 这两种方式都可以访问到该项目。
其他问题
1、部署项目的时候报错
这个大家很好理解,是因为下载 jar 失败的问题,由于是第一次使用 Maven,需要第一次下载很多 jar 到 Maven 仓库中,由于网络的问题下载失败,大家可以多次构建让他重新下载,或者直接到:https://repo.maven.apache.org/maven2 根据报错的 jar,在 maven2 中找到自己缺失的 jar,然后在/root/.m2/repository
相应的位置添加 jar 即可。
2、编写脚本文件启动 tomcat 但是项目仍然运行不起来
就是上边说道的问题了:
添加:export BUILD_ID=dontKillMe
,因为该 job 启动完后执行下一 job,jenkins 直接把 tomcat 进程杀了,所以无论脚本中怎么写了启动 tomcat 的命令,他是不会启动的。
3、遇到下边的问题
这就是在系统设置的时候,设置的 git 的地址不对,上述已经说明了,应该是 git 的可执行文件的地址,如果只是 git 的目录,是无法找到 git 这个可执行文件的,如下:
可以看出使用的是这个:/usr/local/git/bin/git 进行 git 仓库的配置何代码的拉取,因此这设置 git 的目录,jenkins 默认是不会找 bin 目录下的 git 可执行文件的。
至此,Jenkins 的部署完成,希望对大家有所帮助。
Jenkins 的详细介绍:请点这里
Jenkins 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-02/128641.htm
背景
最近安装 Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在 90% 以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形成思路,现分享给大家,希望大家在安装的时候少走弯路。
PS:本人很痛恨那种粘贴复制,毫无思考的博主,本想着拿着解决问题的心态,但结果还是一样,不但浪费了大家的时间,还浪费了大家的感情,所以,我把我遇到的问题和解决的方式记录下来和大家分享。
知识背景
首先需要理解的是,Jenkins 是帮我们将代码进行统一的编译打包、还可以放到 tomcat 容器中进行发布。
意思是我们通过配置,将以前:编译、打包、上传、部署到 Tomcat 中的过程交由 Jenkins,Jenkins 通过给定的代码地址 URL,将代码拉取到其“宿主服务器”(这是我个人的称呼,在下边会用到,就是 Jenkins 的安装位置),进行编译、打包和发布到容器中。
因此我们可以注意到的是,在 Jenkins 的宿主服务器中必须要有可以进行:代码 clone(Git)、代码编译(Maven)、代码运行(Tomcat)的基本环境,其他文章上来就是安装 jenkins,忽略了一些基本的配置。
下边就开始讲解各部分的安装过程,如果已经安装某一步的环境,则可以以此进行下一步。
一、Git 的安装
1、安装依赖
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
注意:perl-ExtUtils-MakeMaker 也是这些安装列表中的一员,不要因为显示的换行造成大家认为是两条执行命令。
2、下载 Git
选择一个目录,存放下载的 git,例如我的是:/home/xuliugen/tmp,大家可以根据需求到官网下载相应的版本
wget https://github.com/git/git/archive/v2.3.0.zip
3、解压 git
下载之后是这样的,不要感到奇怪,直接解压即可
因为下载的是一个 zip,所以使用命令将其解压到 git 目录下:
# 参数 -d 后边的是解压到的目录
unzip v2.3.0 -d git
4、编译安装 git
进入 git 目录
将其安装在“/usr/local/git”目录下, 命令如下:
make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
5、配置 Git
sudo vim /etc/profile # 编辑 profile 文件
然后而已看到这个文件已经有很多配置了,只需要在最下边添加 git 的路径即可:
export PATH=/usr/local/git/bin:$PATH
将这段话放在最后边,然后使用 source 命令应用修改:
source /etc/profile
6、检验 Git 是否安装成功
git --version
二、Maven 安装
1、下载和解压 Maven
Maven 的安装包下载可以根据需求找到合适的版本,解压之后,我的位置是:
2、配置 Maven
编辑:~/.bash_profile 文件, 根据注释相应的修改即可
# maven 所在的目录
export M2_HOME=/home/xuliugen/software/maven/apache-maven-3.3.3
# maven bin 所在的目录
export M2=$M2_HOME/bin
# 将 maven bin 加到 PATH 变量中
export PATH=$M2:$PATH
# 配置 Java_HOME 所在的目录,注意这个目录下应该有 bin 文件夹,bin 下应该有 java 等命令
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0
然后运行:source ~/.bash_profile 应用修改
3、查看 Maven 是否安装成功
使用:mvn -version 即可查看结果
三、Jenkins 的部署
Jenkins 的安装很简单,直接将 war 放到容器中进行运行即可
1、将 jenkins 放到 Tomcat 中并解压,启动 Tomcat,成功启动之后访问 ip 和端口如下:
启动成功之后,进入的界面如上,表示启动成功。
2、安装插件
在进行配置之前,由于使用的是 Git 拉去代码的方式,所以要首先安装插件
找到:插件管理 在“可选插件”界面使用 ctrl+f 搜索:Deploy to container Plugin 插件(这个是支持将代码部署到 tomcat 容器的)
勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。
安装完之后,如果勾选了:安装完成后重启 jenkins 那么会重启 jenkins。
然后安装:GIT plugin,何上边的步骤一样,如果使用上述的方式,由于网络的原因,可能会安装失败,这就需要我们使用另一种方式进行安装。
使用同样的方式在“可选插件”中搜索 GIT plugin,找到之后点击蓝色链接(最好右键在新窗口中打开,放置覆盖 jenkins 界面)
会跳转到 Git Plugin 的插件信息地址:
可以看到 Plugin ID 为:git,然后在:http://updates.jenkins-ci.org/download/plugins/ 这地地方搜索(ctrl+f)即可找到,点进去,选择一个版本进行下载:
点进去下载的是一个 hpi 文件
然后同样的在:系统管理–管理插件–高级 Tab 中,下拉可以看到上传插件,然后选择文件上传刚才下载的 hpi 文件,即可,上传完之后,会自动安装。上述安装 Deploy to container Plugin 的方式也可以采用这种方式。
都安装完之后,在已安装 Tab 中可以看到刚安装的插件:
3、进行配置
看到上图中的左侧有一个:系统管理 点击去
上边的第一行黄色信息,表示编码问题,在 Tomcat–>conf–>server.xml 文件中修改即可
4、Jenkins 系统设置
点击:系统设置,这里没有强调的都设置为默认即可
(1)JDK,别名是任意的, 选择自己 jdk 的位置,jenkins 推荐使用 sun jdk 而不是 openjdk
(2)Git 的配置
注意这里的 git 位置,是可执行文件的地址,即是 git–bin–下的可执行文件 git 的目录(类似于 java 中 bin 下的 java 可执行文件位置)
如果填错,后期回报无法找到 git 等错误(最下边,其他问题下的第三个问题),请大家注意!
Jenkins 的分布式构建及部署——节点 http://www.linuxidc.com/Linux/2015-05/116903.htm
(3)Ant 的配置
由于本次并没有用到 Ant,不做配置,大家可以根据配置进行设置
(4)Maven 的配置,选择自己 maven 的存放位置
(5)Jenkins Location
这里配置的是 ip 加端口和一个路径名称,邮箱要进行设定,后期会发送 jenkins 执行的结果到邮件中
(6)邮件通知
这里我配置的 QQ 邮箱,大家根据情况进行设置相应的 smtp 服务器,用户名、密码分别为自己的 QQ 邮箱何密码,如果不进行设置,后期 jenkins 构建项目的时候会报错,报错信息很好理解也很好找到是没有配置邮件的问题。
首先,要保证邮件的 smtp 和 pop 是开启状态的,这样的话才可以通过验证:
最后点击下边的应用、保存即可
5、Configure Global Security
然后回到系统管理,看到 Configure Global Security 点击进去,根据下边进行配置即可
点击应用 保存之后,然后在屏幕的右上角,有一个登录 - 注册,点击注册即可实现用户的登录。
这里,如果是公司内网的话,或者最后搭建的 jenkins 是公司使用,那么最好用户名和密码为公司的账户密码,邮件也是公司的邮件,这样的话方便后期的操作。
至此 Jenkins 的基本配置完成。
创建 Job
1、创建项目
点击登录之后,会看到下边的界面中:My Views
点击进去
点击:创建一个新任务
选择 maven 项目,点击 OK,这里的 Item 名称是后边需要用到的,下边的配置也有用到这个的,大家可以很好的对应。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-02/128641p2.htm