Centos 7 下jenkins安装教程

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Centos 7 下jenkins安装教程

Centos 7 下jenkins安装教程

1、环境准备

在安装jenkins前我们需要准备一台安装centos7的虚拟机,并能够访问网络,可以参考教程VMware安装Centos7及网络配置,然后需要安装jdk,maven,git,以及docker等基础组件。

1.1、安装jdk8

jdk8下载地址链接,此处提供的是百度云盘的下载地址,请自行下载,然后进行安装操作。我的安装目录为/usr/local/java,将下载好的安装包上传到安装目录【/usr/local/java】下,执行解压操作即可,命令如下

tar -xvzf jdk-8u281-linux-x64.tar.gz

image-20220501163544262

配置环境变量编辑/etc/profile.d/java8.sh文件,将下面内容copy到java8.sh文件中,然后退出并保存

vi /etc/profile.d/java8.sh

配置内容

export JAVA_HOME=/usr/local/java/jdk1.8.0_281
export JAVA_BIN=/usr/local/java/jdk1.8.0_281/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

使配置生效

source /etc/profile

查看配置是否生效

java -version

image-20220501164140635

经检验,配置生效。

1.2、安装maven

首先下载maven安装文件,此处我选择的版本是3.6.3,下载地址,下载后上传到服务器目录【/usr/local/tools】下,同样执行解压操作。命令如下:

tar -xvzf apache-maven-3.6.3-bin.tar.gz

修改目录名称为maven3

mv apache-maven-3.6.3 maven3

配置环境变量,编辑/ect/profile文件,将下面的配置copy到文件最下方,保存退出即可

vi /etc/profile

配置内容

MAVEN_HOME=/usr/local/tools/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

使配置生效,并验证安装是否成功

source /etc/profile
mvn -version

验证结果如下图

image-20220501165621702

配置阿里云maven私服镜像库,修改maven配置文件/usr/local/tools/maven3/conf/settings.xml,将阿里云私服镜像库添加到节点中。

  <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/public</url>
 </mirror>

1.3、安装git

安装git是为了让jenkins能够从git仓库拉取代码,安装及验证安装结果命令如下

yum install git
git --version

image-20220501170247561

1.4、docker安装

如果你的项目暂时未用到docker,请忽略此步操作,如果需要docker安装请参考此教程docker基础教程

2、安装jenkins

此处我们使用离线安装包方式安装。

2.1、下载jenkins

我们在服务器上创建/appserver/app目录,然后进入该目录并执行如下命令进行jenkins可运行包下载

mkdir -p /appserver/app
cd /appserver/app
yum install wget
wget https://get.jenkins.io/war-stable/2.332.2/jenkins.war

启动jenkins,我们创建一个jenkins启动脚本,start-jenkins.sh (启动命令可以接参数start|restart|stop)分别标识启动,重启,停止服务

vi start-jenkins.sh

脚本内容如下:

#!/bin/sh  
#  
#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用
#也可以作为启动java程序的独立脚本来使用。  
#  
#Author: tudaxia.com, Date: 2011/6/7  
#  
#警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。  
#在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,  
#可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,  
#增加在执行kill命令前的一系列检查。  
#   
###################################  
# 以下这些注释设置可以被chkconfig命令读取   
# chkconfig: - 99 50   
# description: Java程序启动脚本   
# processname: test   
# config: 如果需要的话,可以配置   
###################################   
#  
###################################  
#环境变量及程序执行参数  
#需要根据实际环境以及Java程序名称来修改这些参数  
###################################  
#JDK所在路径  
#JAVA_HOME="/usr/local/java/jdk1.8.0_281"
  
#执行程序启动所使用的系统用户,考虑到安全,推荐不使用root帐号  
#RUNNING_USER=bmsp
  
#Java程序所在的目录(classes的上一级目录)  
APP_HOME=/appserver/app
  
#需要启动的Java主程序(main方法类)  
APP_MAINCLASS=jenkins.war
  
#拼凑完整的classpath参数,包括指定lib目录下所有的jar  
CLASSPATH=$APP_HOME/classes  
for i in "$APP_HOME"/lib/*.jar; do  
   CLASSPATH="$CLASSPATH":"$i"  
done  
  
#java虚拟机启动参数  
JAVA_OPTS="-ms1024m -mx1024m -Xmn256m -Djava.awt.headless=true -XX:MaxMetaspaceSize=512m -Djava.security.egd=file:/dev/../dev/urandom"
  
###################################  
#(函数)判断程序是否已启动  
#  
#说明:  
#使用JDK自带的JPS命令及grep命令组合,准确查找pid  
#jps 加 l 参数,表示显示java的完整包路径  
#使用awk,分割出pid ($1部分),及Java程序名称($2部分)  
###################################  
#初始化psid变量(全局)  
psid=0  
  
checkpid() {  
   javaps=`jps -l | grep $APP_MAINCLASS`
  
   if [ -n "$javaps" ]; then  
      psid=`echo $javaps | awk '{print $1}'`  
   else  
      psid=0  
   fi  
}  
  
###################################  
#(函数)启动程序  
#  
#说明:  
#1. 首先调用checkpid函数,刷新$psid全局变量  
#2. 如果程序已经启动($psid不等于0),则提示程序已启动  
#3. 如果程序没有被启动,则执行启动命令行  
#4. 启动命令执行后,再次调用checkpid函数  
#5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]  
#注意:echo -n 表示打印字符后,不换行  
#注意: "nohup 某命令 >/dev/null 2>&1 &" 的用法  
###################################  
start() {  
   checkpid  
  
   if [ $psid -ne 0 ]; then  
      echo "================================"  
      echo "warn: $APP_MAINCLASS already started! (pid=$psid)"  
      echo "================================"  
   else  
      echo -n "Starting $APP_MAINCLASS ..."  
      nohup java $JAVA_OPTS -jar $APP_MAINCLASS --httpPort=8090 &
      #su - $RUNNING_USER -c "$JAVA_CMD"  
      checkpid  
      if [ $psid -ne 0 ]; then  
         echo "(pid=$psid) [OK]"  
      else  
         echo "[Failed]"  
      fi  
   fi  
}  
  
###################################  
#(函数)停止程序  
#  
#说明:  
#1. 首先调用checkpid函数,刷新$psid全局变量  
#2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行  
#3. 使用kill -9 pid命令进行强制杀死进程  
#4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $?  
#5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed]  
#6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。  
#注意:echo -n 表示打印字符后,不换行  
#注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值  
###################################  
stop() {  
   checkpid  
  
   if [ $psid -ne 0 ]; then  
      echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "  
      # su - $RUNNING_USER -c "kill -9 $psid"  
      kill -9 $psid
      if [ $? -eq 0 ]; then  
         echo "[OK]"  
      else  
         echo "[Failed]"  
      fi  
  
      checkpid  
      if [ $psid -ne 0 ]; then  
         stop  
      fi  
   else  
      echo "================================"  
      echo "warn: $APP_MAINCLASS is not running"  
      echo "================================"  
   fi  
}  
  
###################################  
#(函数)检查程序运行状态  
#  
#说明:  
#1. 首先调用checkpid函数,刷新$psid全局变量  
#2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid  
#3. 否则,提示程序未运行  
###################################  
status() {  
   checkpid  
  
   if [ $psid -ne 0 ];  then  
      echo "$APP_MAINCLASS is running! (pid=$psid)"  
   else  
      echo "$APP_MAINCLASS is not running"  
   fi  
}  
  
###################################  
#(函数)打印系统环境参数  
###################################  
info() {  
   echo "System Information:"  
   echo "****************************"  
   echo `head -n 1 /etc/issue`  
   echo `uname -a`  
   echo  
   echo `java -version`
   echo  
   echo "APP_HOME=$APP_HOME"  
   echo "APP_MAINCLASS=$APP_MAINCLASS"  
   echo "****************************"  
}  
  
###################################  
#读取脚本的第一个参数($1),进行判断  
#参数取值范围:{start|stop|restart|status|info}  
#如参数不在指定范围之内,则打印帮助信息  
###################################  
case "$1" in  
   'start')  
      start  
      ;;  
   'stop')  
     stop  
     ;;  
   'restart')  
     stop  
     start  
     ;;  
   'status')  
     status  
     ;;  
   'info')  
     info  
     ;;  
  *)  
     echo "Usage: $0 {start|stop|restart|status|info}"  
     exit 1  
esac  
exit 0  

给启动脚本执行权限,并启动jenkins

chmod +x start-jenkins.sh
./start-jenkins start

查看启动日志,看到初始化管理员密码数据即表示启动成功,copy对应的密码,通过ip+port方式进行访问,上面脚本中指定的端口为8090,我们在启动日志中也能够看到启动的端口为8090。

tail -f nohup.out

image-20220501180850519

在浏览器中输入:http://192.168.2.6:8090即可看到如下界面,将日志中的初始密码粘贴进去,即可。如果不想看日志,也可以直接通过如下命令查看密码

cat /root/.jenkins/secrets/initialAdminPassword

image-20220501180924964

image-20220425161544915

选择双击【安装推荐的插件】

image-20220501181113293

然后进入插件安装环节,如下图

image-20220425152328238

安装完成后,我们创建一个管理员账号

image-20220501181852298

实例配置

image-20220501181936981

至此安装完毕

image-20220501182013482

image-20220501182231752

3、环境配置

安装完成后我们需要进行基本相关配置,如jdk、maven、git。

3.1、配置编译环境

选择Manage Jenkins菜单

image-20220501182455086

选择全局工具配置

image-20220501182607746

3.1.1、配置JDK

maven配置文件直接使用默认即可,选择新增jdk,然后设置JAVA_HOME设置为我们上面安装的目录即可,记得取消勾选【Install automatically】。

image-20220501182842914

3.1.2、配置git

如果不知道git的路径,可以通过如下命令查看,如下图我们可以看到git可执行路径为【/usr/bin/git】,记得取消勾选【Install automatically】

whereis git

image-20220501183337589

image-20220501183219208

3.1.3、maven配置

设置maven安装目录,记得取消勾选【Install automatically】

image-20220501183647650

然后点击应用即可。

3.1.4、安装maven插件

首先我们回到首页,选择新建Iterm,发现此时没有创建maven项目选项,这是因为我们没有安装maven integration插件。所以我们要想构建maven项目,需要先安装maven集成插件。

安装前

image-20220501184056478

同样回到首页选择【Manage Jenkins】然后选择【Manage Plugins】

image-20220501184427487

选择可选插件【available】,然后找到【Maven Integration】插件,勾选

image-20220501184547636

勾选,并选择下载完成后自动重启jenkins服务

image-20220501184729600

拉到最下面,勾选【安装完成后重启Jenkins】

image-20220501184925708

安装完毕后,单击【新建Item】按钮后,我们可以看到多了一个【构建一个maven项目】选项,如下图

image-20220501185348144

4、构建maven项目

配置完毕后我们来构建一个测试项目,项目代码为【git@gitlabs.jianjang.com:zhangjian_sh/docker-demo.git】,由于项目代码在gitlab仓库中,且为私有项目,故而我们需要先配置凭证信息,我们通过ssh keys进行配置。

4.1、gitlab ssh key配置

4.1.1、ssh 秘钥生成

首先在jenkins服务器上生成ssh秘钥信息,生成后的rsa公钥及私钥文件目录为【/root/.ssh/】图所示,命令如下:

文件 说明 备注
/root/.ssh/id_rsa 私钥文件
/root/.ssh/id_rsa.pub 公钥文件
ssh-keygen -t rsa

image-20220501191404906

4.1.2、gitlab配置ssh key

选择gitlab用户的配置

image-20220501191928525

选择SSH Keys菜单,如下图

image-20220501192013582

将4.1.1章节生成的公钥文件内容copy到下面的输入框中,然后设置一个过期时间,正常选择一个很久的日期即可。当然考虑到安全性,最好经常更新最好。然后点击【Add key】即可。

image-20220501194613133

添加完成

image-20220501194953054

然后我们验证一下是否生效,在jenkins服务器下拉取代码,选择项目中的Clone with SSH对应的地址

git clone git@gitlabs.jianjang.com:zhangjian_sh/docker-demo.git

image-20220501195107125

拉取成功如下图

image-20220501195434854

4.1.3、jenkins凭证配置

选择【Manage Jenkins】菜单中的【Manage Credential】

image-20220501195733398

路径比较深,参考下图,然后选择【添加凭据】,类型选择【SSH Username with private key】,然后设置id,描述,名称(此处名称只是个唯一标识),最后需要将刚才4.1.1章节生成的服务器私钥copy出来粘贴到下面的私钥文本框中,如下图:

image-20220501200131669

将id_rsa私钥内容copy到Private Key对应的输入框中

image-20220501200458598

添加成功,如下图:

image-20220501200618347

4.2、构建项目

回到首页,新建任务,单击【新建Item】,输入项目名称,然后选择【构建一个maven项目】

image-20220501200932224

image-20220501201023577

选择【源码管理】,配置代码仓库信息及选择获取凭据信息,然后单击【应用】然后单击【保存】即可。

image-20220501202025370

开始构建项目,选择下图中的Build Now,然后我们在下面的【Build History】就可以看到当前的构建任务了,如下图:

image-20220501202315670

查看构建日志,单击构建号进入构建信息明细页面,如下图,然后单击【控制台输出】可以看到构建的明细,包括拉取代码,编译打包过程的日志输出,如下图任务构建成功。

image-20220501202657356

image-20220501202513634

至此,jenkins的安装过程到此结束,以及简单的maven项目构建,下一篇文章,我们将说一说如何使用jenkins对springboot项目进行构建和部署,敬请期待,谢谢。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
119 64
|
2月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
125 61
|
21天前
|
缓存 Linux
解决CentOS 7停止更新后yum源失效问题【图文教程】
以上步骤完成后,你的 CentOS 7 系统就会使用阿里云的 yum 源,更换yum以后就可以正常使用啦。
391 2
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
111 1
Linux系统之Centos7安装cockpit图形管理界面
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
107 3
|
2月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
154 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
93 2