基于CentOS 6.5 服务器上已装 JDK ,Tomcat 。
1. 在Linux服务器上下载安装Jenkins
- 下载地址 : https://jenkins.io/ 下载如下的war包版本即可
1557365942123.png
- 将其部署到tomcat之中并启动,然后按提示输入 /root/.jenkins/secrets/initialAdminPassword 中的密码
- 安装Jenkins插件(额外推荐插件Rebuilder、Safe Restart,可在系统管理 --> 插件管理中选择安装)
-
创建管理员用户
1557366682598.png
2. 安装git, maven 并进行相关配置
2.1 安装git
-
安装git
yum install git
-
生成密钥并配置到相应的仓库上
ssh-keygen -t rsa -C "youremail@abc.com"//你的邮箱地址 连按三次回车 然后将 /root/.ssh/id_rsa.pub 中的公钥添加进仓库
2.2 安装maven
-
安装maven
将maven zip文件上传至Linux服务器,并解压 unzip filename.zip
-
修改maven 环境变量
vim /etc/profile //添加如下内容 export MAVEN_HOME=maven所在路径 export PATH=$MAVEN_HOME/bin:$PATH //保存并退出 //启动配置 . /etc/profile
2.3将Linux服务器注册到Jenkins上
-
开启服务器上的ssh服务
通过一下命令查看是否开启 netstat -anp | grep :22 若netstat 命令报错 则先安装网络工具并重启服务器 yum install net-tools
-
在Jenkins中操作远程服务器
系统管理 ---> 新建节点

其中JVM选项: 可以用来配置JVM的启动参数
-
启动刚配置的节点
若启动时,报类似如下错误 /var/root/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/roor/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it. 则在服务器端执行如下命令 cd /root/.ssh //对应各自密钥所在文件目录 cat id_rsa.pub > authorized_keys chmod 700 authorized_keys 最后修改节点配置页面中的主机密钥验证策略项 Host Key Verification Strategy 为 Manually trusted key Verification Strategy
-
重新启动节点
[05/09/19 10:54:49] [SSH] Starting agent process: cd "/usr/jenkins" && /usr/java/jdk1.8.0_161/bin/java -jar remoting.jar -workDir /usr/jenkins May 09, 2019 10:54:49 AM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir INFO: Using /usr/jenkins/remoting as a remoting work directory May 09, 2019 10:54:49 AM org.jenkinsci.remoting.engine.WorkDirManager setupLogging INFO: Both error and output logs will be printed to /usr/jenkins/remoting <===[JENKINS REMOTING CAPACITY]===>channel started Remoting version: 3.30 This is a Unix agent Evacuated stdout Agent successfully connected and online
出现以上信息则启动成功
3 Jenkins 与Github/GitLab集成配置
### 3.1 创建新任务
输入任务名,选择构建自由风格的软件i项目 ---> Confirm

3.2 限制项目运行节点
选择项目的运行节点,用GitHub的话可以勾选GitHub项目。

3.3 源码管理
选择git,填写GitHub或GitLab代码库地址。这里会遇到授权失败的问题,搜索了很多方法,最终通过如下两个方法解决(一般通过私钥授权方式即可)。
-
添加私钥授权方式,将服务器中/root/.ssh/id_rsa中的私钥填入进行授权,之后要保证公钥已经添加进Github/GitLab中和写入/root/.ssh/authorized_keys 文件中
1557387813346.png
-
GitHub/GitLab账户密码验证

之后在Credentials中依次选择刚才添加的验证方式即可。
你也可以选择使用自己搭建的GitLab,具体的搭建方式见:个人Gitlab搭建及配置
3.4 构建及部署操作

其中:
- WAR/EAR files : 指的是Jenkins工作目录下war的存放位置,也就是你所要部署的war包名称。
- Context path :浏览器访问时的项目名。
- Credentials :部署到指定tomcat下的授权验证方式
- Tomcat URL : 目标tomcat,部署之前要保证目标Tomcat处于启动状态
3.5 获取tomcat授权方式
在没通过指定tomcat授权的情况下,通过Jenkins部署到该Tomcat下会报出如下错误
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:704)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:876)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:889)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:173)
... 17 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://192.168.10.50:8083/manager/text/list
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:571)
... 20 more
修改对应tomcat目录下的/conf/tomcat-users.xml 文件,添加角色及用户。
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx"/>
修改对应tomcat下的 /webapps/manager/META-INF/context.xml文件,设置所有ip都能访问manager,这点很重要!之前搜索了很多博客都是因为缺少了这一点导致部署失败。
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
最后使用tomcat-user.xml文件中配置的用户进行授权。

返回工程重新构建即可,这次记录暂且到这。
网友评论