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

news2025/1/13 13:35:59

目录标题

  • 前言
  • 安装JDK1.8、Git、Maven
  • 安装Tomcat
    • 修改tomcat8相关配置
  • 安装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脚本等等。。。路漫漫其修远兮。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1516259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Oracle之DataGuard的初步学习】

** 以下所有均是基于11G版本的 ** 一、DataGuard的部署方式 DG的部署最常用的方式就是直接在备库端部署一个空库然后再设置参数&#xff0c;但是这样做在初始同步时如果数据量过大会耗费较长的时间&#xff1b;相对来说这中方式比较简单不易出错。 还有一种方式就是通过rman的备…

如何打开EDI文件?

使用EDI系统传输文件的过程中&#xff0c;用户可能会遇到这样的问题&#xff1a;如何打开EDI文件&#xff1f;电脑不在身边如何查看EDI文件&#xff1f;EDI文件未按照标准格式呈现如何梳理&#xff1f;为了解决上述问题&#xff0c;方便用户查看文件&#xff0c;知行之桥EDI系统…

Linux启动流程

Linux启动流程总的来说可以分成三个阶段 Linux启动流程图 第一步&#xff1a;上电 在 x86 系统中&#xff0c;将 1M 空间最上面的 0xF0000 到 0xFFFFF 这 64K 映射给 ROM。 当电脑刚加电的时候&#xff0c;会做一些重置的工作&#xff0c;将 CS 设置为 0xFFFF&#xff0c;将 …

mac解决brew install报错“fatal: not in a git directory“

在macbook上使用brew安装软件时&#xff0c;可能会遇到问题&#xff0c;报错如下&#xff1a; fatal: not in a git directory Error: Command failed with exit 128: git 使用brew -v&#xff0c;仔细看&#xff0c;可以发现有两个fatal(致命错误)提示: 解决方案&#xff1a;…

springboot笔记1

快速入门 添加父工程和web启动器 创建启动类 编写处理器controller springboot 配置文件 推荐使用 .yaml 格式 批量读取配置文件 多环境配置和激活 分开写 然后在application.yaml里面激活 SpringBoot–springmvc整合和配置 SpringBoot3整合Druid连接池 pom.xml中导入相…

Oracle P6 负浮时和必须完成日期

前言 学习过计划的人大都有这有这样的经历&#xff0c;即无论是Microsoft Project 亦或是P6见过负浮时那么 Primavera P6 计划中的负浮时是从何而来的呢&#xff0c;那么本文可能会有所帮助。 首先&#xff0c;当活动的最晚日期早于最早日期时&#xff0c;就会出现负浮时。 换…

【python】centos 8新装python3.10.0

1.python源码包准备 2.gcc环境安装 如果系统已具备&#xff0c;可以略过。 有的已经自带了gcc&#xff0c;但是如果编译时启动优化的话&#xff0c;如果gcc版本过老就必须要升级。 3.make环境安装 如果系统已具备&#xff0c;可以略过。 4.更新openssl版本&#xff08;很重…

Coarse-to-Fine Latent Diffusion for Pose-Guided Person Image Synthesis阅读笔记

连更&#xff01;&#xff01; 0 Abstract 先前的姿势引导图像合成方法简单的将人的外观与目标姿势进行对齐&#xff0c;这容易导致过拟合&#xff0c;因为缺乏对source person image的high-level semantic understanding&#xff1b;文章开发了一种新的训练范式&#xff1a;…

双线性插值

先来看看线性插值的情况 如上图&#xff0c;在已知p2 (x2,y2)和p1 (x1,y1)的情况下要求解在区间[x1,x2]上任意点x对应的y值&#xff0c;有如下公式&#xff1a; 因式分解&#xff0c;解开y有&#xff1a; 可以看出是计算点p与p3的距离权重&#xff0c;是计算点p与p2的距离权重&…

C++ 字符串OJ

目录 1、14. 最长公共前缀 2、 5. 最长回文子串 3、 67. 二进制求和 4、43. 字符串相乘 1、14. 最长公共前缀 思路一&#xff1a;两两字符串进行比较&#xff0c;每次比较过程相同&#xff0c;可以添加一个函数辅助比较&#xff0c;查找最长公共前缀。 class Solution { pu…

多域名证书和泛域名证书的区别

多域名证书是一种SSL/TLS证书&#xff0c;其特殊之处在于它可以在同一证书中添加多个域名。这些域名可以是不同的主机名或完全不同的域。与传统的SSL证书只能用于一个域名相比&#xff0c;多域名证书提供了为多个域名提供安全保障的便利。 多域名证书的主要优势包括&#xff1…

matplotlib-直方图

日期&#xff1a;2024.03.114 内容&#xff1a;将matplotlib的常用方法做一个记录&#xff0c;方便后续查找。 # 引入需要的库 from matplotlib import pyplot as plt import numpy as np# 设置画布大小 plt.figure(figsize (20,8),dpi 200)# 全局设置中文字体 plt.rcParams…

【六】【算法分析与设计】二分查找

69. x 的平方根 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 示…

案例分析:分库分表后,我的应用崩溃了

今天我们主要分析一个案例&#xff0c;那就是分库分表后&#xff0c;我的应用崩溃了。 前面介绍了一种由于数据库查询语句拼接问题&#xff0c;而引起的一类内存溢出。下面将详细介绍一下这个过程。 假设我们有一个用户表&#xff0c;想要通过用户名来查询某个用户&#xff0…

阿里云价格战的背后,难以言说附送阿里云服务器优惠价格明细表

2024阿里云服务器优惠活动政策整理&#xff0c;阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;云服务器8核…

leetcode110.平衡二叉树

之前没有通过的样例 return语句只写了一个 return abs(l-r)<1缺少了 isBalanced(root->left)&&isBalanced(root->right);补上就好了 class Solution { public:bool isBalanced(TreeNode* root) {if(!root){return true;}int lgetHeight(root->left);i…

阿里云国际配置DDoS高防(非中国内地)加速线路

DDoS高防&#xff08;非中国内地&#xff09;加速线路只能与DDoS高防&#xff08;非中国内地&#xff09;保险版或无忧版实例结合使用。您将业务&#xff08;部署在中国内地以外地域&#xff09;接入DDoS高防&#xff08;非中国内地&#xff09;实例防护后&#xff0c;可以通过…

upload 上传文件后在下次弹框打开时清空上次上传的内容

文章目录 需求分析 需求 upload 上传文件后在下次弹框打开时清空上次上传的内容 分析 arco-design 暂时无法实现该需求&#xff0c;所以继续使用了 elementPlus 的解决方案 获取 Token const getToken () > {return localStorage.getItem(TOKEN_KEY); };页面 <a-f…

2024年将人力RPO项目当蓝海项目吗?

随着科技的快速发展和全球化趋势的加强&#xff0c;人力资源外包(RPO)项目在过去的几年中异军突起&#xff0c;成为企业优化人力资源配置、降低运营成本的重要手段。然而&#xff0c;到了2024年&#xff0c;我们是否还能将人力RPO项目视为一片尚待开发的蓝海呢? 从市场角度来看…

Ansible管理主机的清单------------inventory

一、 Ansible组成 INVENTORY&#xff1a;Ansible管理主机的清单 /etc/ansible/hosts 需要管理的服务清单,(将你需要管理的主机 、地址 或者名字 写入此文件) MODULES&#xff1a;Ansible执行命令的功能模块&#xff0c;多数为内置核心模块&#xff0c;也可自定义 PLUGINS&…