【个人博客项目】使用Jenkins简单的搭建一下

目录标题

前言

为了学习一下工作中常用到的jenkins,于是挑了个最简单的模式动手操作了一遍。

环境->阿里云服务器:CentOS7.0

https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=pvezicr7

项目->网上找一个可在本地跑的Maven项目

安装JDK1.8、Git、Maven

已经安装的同学请忽略

JDK1.8请移步:https://www.cnblogs.com/zs-notes/p/8535275.html

Git请移步:http://weibingsheng.cn/blog/index.php/home/index/read.html?id=285

Maven请移步:https://www.cnblogs.com/jimisun/p/8054819.html

注意:配置JDK和Maven的环境变量

安装Tomcat

已经安装的同学请忽略

以下操作命令都在根目录执行
下载tomcat安装包:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gz

解压安装包:
tar -zxvf apache-tomcat-8.5.4.tar.gz

在根目录下执行(local目录中创建tomcat目录):
mkdir /usr/local/tomcat

将tomcat相关文件移动到创建的tomcat目录:
mv apache-tomcat-8.5.4/* /usr/local/tomcat

启动Tomcat:
cd /usr/local/tomcat/bin           //进入bin目录下:
./startup.sh                              //启动tomcat
./shutdown.sh                         //关闭tomcat

修改tomcat8相关配置

修改tomcat-users.xml文件:
vi /usr/local/tomcat/apache-tomcat-8.5.4/conf/tomcat-users.xml

主要为了jenkins通过maven实现tomcat下热部署所做的配置,我们知道tomcat manager可以在不停止tomcat的情况实现war的部署。这样,在jenkins中项目通过Maven打包后直接放在tomcat的webapps目录下后tomcat就会自动发布。
配置role和user是的maven可以获得操作tomcat的权限,修改tomcat的tomcat-users.xml文件,添加如下配置:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>

这里配置的username,password在jenkins中会用到

然后开放manager访问权限(这一步一定不能少,不然会报权限错误):
【权限错误:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: 
           The username you provided is not allowed to use the text-based】

修改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" />-->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

安装Jenkins

jenkins可以直接下载运行;也可以只下载war包格式,然后放到tomcat的webapps中启动;jenkins本来就是一个webApp。

这里我下载了可以直接运行的jenkins。

$ yum install yum-fastestmirror -y  #安装自动选择最快源的插件
#添加Jenkins源:
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
$ yum install jenkins               #安装jenkins

启动方式:
$ sudo service jenkins start

访问方式:
浏览器输入http://你服务器的公网ip:8080/

tomcat和jenkins的端口如果冲突就选择其中一个修改端口
Jenkins如果要更改配置(端口):
$ vim /etc/sysconfig/jenkins
$ sudo service jenkins restart

然后我们在浏览器输入http://你服务器的公网ip:8080/后便可以访问自己的jenkins了,当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。

根据上面提示在linux的根目录下执行

cat  /var/jenkins_home/secrets/initialAdminPassword

找到密码后,直接复制到输入框中,点击继续,进入一下界面,证明解锁成功

点击推荐安装(install suggested plugins)即可,如果安装失败可以跳过,之后再在jenkins管理界面手动安装就行。

下载完成后会让创建一个管理员用户,需要设置用户名、密码等。默认配置即可。管理员相关配置完成后,需要重启,点击重启。

浏览器再次输入你的服务器IP:8080,便可进入到登录页,输入上面设置的管理员用户名和密码即可登录到管理后台。

手动安装需要的插件(maven和热部署),进入到管理后台后

点击系统管理->插件管理->可选插件

过滤搜索框输入Maven Integration来搜索Maven Integration插件。

过滤搜索框输入Maven Integration来搜索Maven Integration插件。

点击直接安装(install without restart)。下面搜索并安装热部署插件Deploy to container,安装完这俩插件了,需要重启jenkins。

注意:可以自行去查一下jenkins启动Maven常用的插件安装,这里就不赘述了

进入jenkins管理后台配置jdk、maven、git

进入到管理后台后,点击系统管理->全局工具管理

配置git,由于git在linux下安装还需要其他的依赖库,在容器内安装这些比较麻烦,所以这里直接让jenkins自行安装。勾选自动安装单选框。

创建一个maven项目并实现自动化部署

条件:maven类型的、github上的Web项目;已经启动的tomcat8的应用服务器。

注意:若在同一台服务器上tomcat8和jenkins的端口冲突

jenkins创建maven任务,点击新建任务,进入创建界面。

进入配置界面:首先配置general,勾选github。并填写github上项目地址。

构建后操作:配置maven生成war信息、上下文及web容器信息、Credentials 和tomcat Url。

WAR/EAR files选择你需要部署的war包在工作空间下的**相对路径**
Context path意为发布到目标tomcat的webapp后的文件夹名字
Credentials 需要先添加一个用户,点击添加,用户名和密码是tomcat_user.xml中配置的
Tomcat URL 就是你需要连接的tomcat地址和端口号

到此配置基本完成,点击应用,保存。

手动构建,测试下:进入到已经创建的任务界面,点击立即构建。点击左下角的 build history 查看控制台日志(console Output)。第一次构建会有点慢,需要等一会儿。

注意点:项目中的数据库是连接的本地的话就需要换掉,如果用远程服务器的数据库记得远程授权。

如果报了类似这样的错误:the Tomcat Manager responded "FAIL - " instead of the expected "OK" message
那就要去tomcat中查看下报错,可以能是项目报错了。
例如:# [java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect to database in eclipse [closed]](https://stackoverflow.com/questions/11869697/java-sql-sqlexception-access-denied-for-user-rootlocalhost-using-password)
就需要用一个能够远程访问的数据库了。

以上笔记只作为一个基础来看,若有错误还请指正,后面还有很多扩展的内容要学习,比如:不同场景下jenkins的配置、Maven打包时对于dev,uat等环境下的自定义操作、手写shell脚本等等。。。路漫漫其修远兮。

相关推荐
技术小齐3 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风3 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
落幕4 小时前
C语言-进程
linux·运维·服务器
chenbin5204 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯4 小时前
Jenkins插件管理切换国内源地址
运维·jenkins
AI服务老曹4 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
sszdzq6 小时前
Docker
运维·docker·容器
book01216 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
bugtraq20217 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi7 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证