Jenkins详细安装配置部署

2年前 (2022) 程序员胖胖胖虎阿
368 0 0

目录

 一、安装jdk

 二、安装jenkins

 三、安装git

 四、安装maven

 五、Jenkins全局工具配置

 六、SSH插件安装

七、SSH传输服务器设置

 八、页面配置发布工程

九、目标发布服务器配置

十、构建项目


一、安装jdk

jenkins的安装需要依赖于jdk。

1.新的服务器需要支持文件上传和下载,安装rz(上传)sz(下载)

yum install lrzsz -y

2.使用命令rz上传linux下的jdk安装包到服务器,输入rz后会弹出一个选项框,选择对应的jdk安装包

Jenkins详细安装配置部署

3.解压jdk安装包文件

tar -zxvf jdk*.tar.gz

4.到/usr/local目录下创建存放jkd的目录java:

cd /usr/local

mkdir java

5.目录切到/usr/local/java下,把jdk的解压文件添加到此目录下

cd /usr/local/java

mv /home/zhanglizeng/jdk1.8.0_301/ .

Jenkins详细安装配置部署

6.在环境变量中配置jdk

打开配置文件:

vi /etc/profile

输入字符i开始进行编辑

向配置文件中添加jdk的安装目录:

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

按esc退出编辑

输入:再输入wq(保存并退出),若是输入q!则退出不保存

7.让配置生效:

source /etc/profile

8.检验jdk是否安装成功:

java -version

Jenkins详细安装配置部署

 二、安装jenkins

1.输入命令安装jenkins

​sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

yum install jenkins

2.配置jenkins端口

vim /etc/sysconfig/jenkins
#监听端口
JENKINS_PORT="8080"

3.配置权限,修改为root

vim /etc/sysconfig/jenkins
#修改配置
JENKINS_USER="root"

修改目录权限

chown -R root:root /var/lib/jenkins

chown -R root:root /var/cache/jenkins

chown -R root:root /var/log/jenkins

编辑jenkins的配置文件:

vim /etc/init.d/jenkins

添加jdk的安装目录:

Jenkins详细安装配置部署

 4.重启jenkins:

systemctl restart jenkins
systemctl start jenkins
systemctl status jenkins.service

5.启动jenkins

service jenkins start

6.查看是否开启防火墙

systemctl status firewalld

Jenkins详细安装配置部署

若是为dead,则没有开启防火墙,需要开启防火墙:

systemctl start firewalld

Jenkins详细安装配置部署

 再查看防火墙:

Jenkins详细安装配置部署

 查看是否开放端口8080:

firewall-cmd --list-ports

Jenkins详细安装配置部署

 没有开放,则加入

firewall-cmd --permanent --zone=public --add-port=8080/tcp

重启防火墙

systemctl reload firewalld

再次查看是否开放

Jenkins详细安装配置部署

 7.访问jenkins服务

查看linux的ip地址:

ifconfig -a

Jenkins详细安装配置部署

 访问jenkins地址 http:<ip或者域名>:8080

Jenkins详细安装配置部署

 执行命令查看密码:

cat /var/lib/jenkins/secrets/initialAdminPassword

复制密码输入到管理员密码,登录系统,插件安装选择推荐插件

Jenkins详细安装配置部署

安装进行中

Jenkins详细安装配置部署 插件安装完成以后将会创建管理员账户

Jenkins详细安装配置部署

 安装完成

Jenkins详细安装配置部署

 运行截图:

Jenkins详细安装配置部署

8.设置jenkins控制台中文显示

Manage Jenkins->Manage Plugins安装插件

Jenkins详细安装配置部署

 安装插件 Locale plugin , Localization: Chinese (Simplified) , 如果失败就再安装一次,在可选插件中搜索,勾选,然后点击Install without restart,下面截图为已经安装好的状态

Jenkins详细安装配置部署

 Manage Jeknins-》configure System设置显示语言,找到Locale设置为zh_CN,点击运用保存

Jenkins详细安装配置部署

 重启Jenkins,浏览器中输入(http://域名/restart)http://192.168.153.130:8080/restart即可生效。

如果出现部分翻译,部分没翻译的现象,则删除插件。重启Jenkins(http://域名/restart),再次安装插件(第一次安装只有部分翻译了)

如果安装新的插件,重启了服务,又变成部分汉化了:

①将语言设定为zh_US,Jenkins切换为英文。
②调用restart重启Jenkins:http://域名/restart。
③再次语言设定为zh_CN,刷新即可,此次不能再重启
Jenkins详细安装配置部署

 三、安装git

1.执行安装命令:

yum install git

2.查看安装git是否成功:

git --version

Jenkins详细安装配置部署

 四、安装maven

1.上传maven安装包到linux服务器:rz

Jenkins详细安装配置部署

 2.解压文件:

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

3.切到安装maven的目录:

cd /usr/local

创建目录maven:

mkdir maven

进入到maven目录:

cd maven

把解压的maven包移动到此目录下:

mv /home/zhanglizeng/apache-maven-3.6.3/ .

4.修改maven的setting.xml配置信息

进入目录:

cd /usr/local/maven/apache-maven-3.6.3/conf

编辑setting.xml配置文件:

vi settings.xml

①设置存放jar包的目录:

Jenkins详细安装配置部署

 ②配置私服的serviers

<servers>
   <server>
      <id>umapp-rs</id>
      <username>Nexus umapp</username>
      <password>`Qihoo360!</password>
    </server>
  </servers>

③配置阿里云镜像

<mirrors>
    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

④配置maven私服nexus及激活的配置

 <profiles>
    <profile>
      <id>umapp</id>
      <repositories>
        <repository>
          <id>umapp-rs</id>
          <name>Nexus umapp</name>
          <url>http://xxx:port/nexus/content/repositories/umapp/</url>
        </repository>
      </repositories>
    </profile>
</profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>umapp</activeProfile>
  </activeProfiles>

5.创建存放jar包的目录repo,需要与setting.xml中配置的一致:

切到需要创建的目录下:

cd /usr/local/maven

创建目录:

mkdir repo

给目录赋读写权限:

chmod 777 repo

6.把maven安装信息配置进环境变量中

编辑环境变量:

vi /etc/profile

把maven信息加进去保存并退出(wq):

export M2_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$M2_HOME/bin:$PATH

Jenkins详细安装配置部署

 7.重新加载环境变量:

source /etc/profile

8.查看maven是否安装成功:

mvn -v

Jenkins详细安装配置部署

 五、Jenkins全局工具配置

在jenkins首页依次进入系统管理>>全局工具配置:

1.jdk配置:输入jdk安装的目录

Jenkins详细安装配置部署

 2.git配置:输入git的目录

Jenkins详细安装配置部署

 3.maven配置:输入maven的目录

Jenkins详细安装配置部署

 六、SSH插件安装

jenkins打完包需要上传到新的服务器上,此处使用ssh的方式上传,添加ssh插件。系统管理-》插件管理-》可选插件

Jenkins详细安装配置部署

所需插件如下:如果已经安装,无需再次安装SSH 、Maven Integration 、Git plugin、Publish Over SSH。

安装完成后新建工程时,构建环境选项才会出现SSH相关的选项

Jenkins详细安装配置部署

 附加:截止到发稿前,新版本的jenkins不提供Publish Over SSH插件,从可选库里面检索不到,jenkins官网暂停了插件,原因是存在XSS和CSRF攻击,目前没有修复,但是我们使用内网部署,不存在这种情况,外网部署的情况需要慎重考虑。

Jenkins详细安装配置部署

Jenkins详细安装配置部署

 可以手动添加Publish Over SSH插件到jenkins,需要的文件下载git地址:

https://github.com/zhangliqingyun/publishssh.git

目录切到:

/var/lib/jenkins/plugins

Jenkins详细安装配置部署

 把这两个文件添加进行,解压赋值上对应的权限

Jenkins详细安装配置部署

添加完成后即可在已安装插件中显示,创建项目的时候可以直接使用,在配置ssh服务器的位置也显示

Jenkins详细安装配置部署

Jenkins详细安装配置部署

 

七、SSH传输服务器设置

点击系统管理-》系统配置,系统设置主要定义,Jenkins本身的一些配置,邮件、远程服务器管理、构建参数等,这里先配置远程主机,后面自动发布时会用到,找到Publish over SSH相关部分。

Jenkins详细安装配置部署

 1.Jenkins SSH Key配置jenkins部署所在服务器的信息

 Passphrase:SSH的密码,使用用户名/密码登录时为用户名的密码,使用私钥登录时为私钥的密码,没有就留空

 Path to key:SSH私钥的文件路径

 Key:私钥

①在安装jenkins的服务器上执行命令生成私钥信息

ssh-keygen -t rsa

全部按回车执行不需要输入密码,执行完或会在目录/root/.ssh下生成私钥信息

Jenkins详细安装配置部署

 ②Passphrase内输入登录服务器的密码

③Path to key内输入私钥的文件地址:

/root/.ssh/id_rsa

④Key为id_rsa的文本内容,可以使用命令:sz id_rsa把文件下载下来,把文本内容粘贴进行

2.SSH Servers配置需要把打好的jar包上传到的服务器信息(发布业务系统的服务器)

Jenkins详细安装配置部署

 点击新增添加ssh服务器,可以根据需要添加多台。

Name:SSH节点配置的名称,在Job中使用Publish over SSH插件时,此名称将出现在"SSH Server"中"Name"的下拉列表中。

Jenkins详细安装配置部署

 

Hostname: 主机IP

Username:主机用户名

Remote Derictory: 运程机器上真实存在的目录,并且"Username"指定的用户要有访问此目录的权限,插件将把文件传送到此目录下;

登录服务器创建目录:

mkdir u01

给u01目录赋权限:

chmod 775 u01

Jenkins详细安装配置部署

 登录远程服务器使用秘密的方式,点击高级展开进行设置:

Jenkins详细安装配置部署

 勾选使用秘密登录: Use password authentication, or use a different key,点击Change Password设置添加的用户登录服务器的密码

Jenkins详细安装配置部署

 也可以不使用密码,免密登录的方式:把部署jenkins的rsa.pub文件拷贝到目标机器的authorized_keys下

Jenkins详细安装配置部署

Jenkins详细安装配置部署

 点击Test Configuration按钮测试配置的服务器是否能正常链接:当出现Success表示链接正常

Jenkins详细安装配置部署

 八、页面配置发布工程

1.创建视图,把工程放在视图中进行管理

Jenkins详细安装配置部署

 2.在创建的视图中添加任务

Jenkins详细安装配置部署

 3.输入任务名称,选择构建一个maven项目,勾选添加到当前视图进行创建

Jenkins详细安装配置部署

4.General选择丢弃旧的构建,输入保持构建的最大个数

Jenkins详细安装配置部署

 5.源码管理选择Git的方式,添加项目的git地址

Jenkins详细安装配置部署

 点击添加访问git地址的用户名和密码信息,此用户需要有权限访问git链接:

Jenkins详细安装配置部署

 填写对应的用户名密码即可:

Jenkins详细安装配置部署

 指定需要打包的分支:

Jenkins详细安装配置部署

 6.构建环境

选择:Send files or execute commands over SSH after the build runs 把打包好的jar文件发送后执行命令的方式

Jenkins详细安装配置部署

Name:目标主机名称,前面配置主机时有提到,在第七部分的第2点配置的,若是配置了多台,则此处为下拉选择。

  Source files:需要传输的文件路径,jenkins默认打出来的jar包放在/var/lib/jenkins/workspace目录下,后面的目录umapp-cloud-service-todolist为创建任务的名称,此处只用填写项目打包后的结尾文件名即可,前缀默认会拼接

Jenkins详细安装配置部署

 

Remove prefix:移除文件前缀,当从jenkins服务器把jar文件通过ssh发送到目标服务器后,目标服务器存放jar的目录,需要去掉的前缀(源jenkins存放jar的目录为基础)

Remote directory:远程目录,此目录是基于前面第七部分的第2点配置ssh server时定义的目录(/u01)为根目录。按此配置,则目标服务器上需要存在/u01/builds的目录

7.build打出jar包

Root Pom:配置pom.xml的文件目录

Goals and options:配置maven执行的命令

Jenkins详细安装配置部署

 -Pdev为激活dev配置,此处的配置对应项目properties或yml配置文件的active(激活配置)

Jenkins详细安装配置部署

--pl xxx-service/xxx-service-xx:只打包xxx-service/xxx-service-xx这个项目,因为xxx-service目录下可能存在多个项目

-am:表示同时处理选定模块所依赖的模块,此处xxx-service-xxx可能会依赖于其他模块,使用am(also-make)把依赖的一并打包进来

九、目标发布服务器配置

1.首先确保jar文件操作的目录/u01存在(若不存在可以执行创建命令mkdir u01),并且有权限(若没有权限可以执行命令:chmod 775 u01),在上面第七部分第1点已经介绍创建过此目录

Jenkins详细安装配置部署

 2.在u01目录下创建存放jar包的目录builds:

mkdir builds

并且赋权限:

chmod 775 builds

builds的命名对应第八部分的第6点Remote directory内容

Jenkins详细安装配置部署

 3.在u01下创建存放执行文件的目录scripts:

mkdir scripts

并且赋权限:

chmod 775 scripts

scripts的命名对应第八部分的第6点Exec command的部分内容

Jenkins详细安装配置部署

4.在自己的电脑创建一个名为:umapp-cloud-devops.sh的linux执行文件,编辑好后上传到/u01/scripts目录下,文件命名对应第八部分的第6点Exec command的部分内容。

可执行文件接收4个参数,提供start启动的方法,重启restart的方法,停止stop的方法,删除备份del_bak的方法,备份bak的方法

#!/bin/bash
 
# 操作名称
optionName=$1
# Jar项目名称
appName=$2
# 项目路径
appDir=$3
# 内存配置级别 0:256m 1:512m 2:1G 3:2G 4:4G
MemConfLevel=$4
# 创建项目目录
appPath="/u01/project/umapp/$appDir"
if [ ! -d "$appPath" ];
then
    mkdir $appPath
fi
 
# 帮助说明
function usage()
{
  echo "Usage:   sh /u01/scripts/umapp-cloud-devops.sh [-optionName] [appName] [appDir] [MemConfLevel]"
  echo "Example: sh /u01/scripts/umapp-cloud-devops.sh restart umapp-cloud-auth-1.0.0 auth 0"
  echo "where options include:"
  echo "     start        启动app"
  echo "     stop         停止app"
  echo "     restart      重启app"
  echo "     status       查看状态"
}
 
if [ "$optionName" == "--help" ];
then
  usage;
  exit 1
fi
 
if [ "$optionName" == "" ];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m"
    exit 1
fi
 
if [ "$appName" == "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi
 
if [ "$appDir" == "" ];
then
    echo -e "\033[0;31m 未输入项目路径 \033[0m"
    exit 1
fi
 
if [ "$MemConfLevel" == "" ];
then
    echo -e "\033[0;31m 未输入内存配置级别 \033[0m"
    exit 1
fi
 
# 统计运行应用数
function getCount()
{
    count=`ps -ef |grep java|grep "$appName.jar"|grep -v grep|wc -l`
    echo $count
}
 
# 获取pid
function getPid()
{
    pid=`ps -ef | grep "$appName.jar" | grep -v grep | awk '{print $2}'`
    echo $pid
}
 
# 启动应用
function start()
{
    source /etc/profile
    # 统计运行应用数
    count=`getCount`
    if [ $count != 0 ];then
        echo "$appName is running..."
    else
        echo "$appName is start..."
        # 拷贝并覆盖Jenkins生成在builds文件下的jar 到所属的项目路径下
        cp -rf /u01/builds/"$appName.jar" /u01/project/umapp/$appDir/
        chmod 775 -R /u01/project/umapp/$appDir
        cd /u01/project/umapp/$appDir
        echo "begin config..."
        if [ "$MemConfLevel" = 0 ];then
            XmsSize=256m
            MetaSize=125m
        elif [ "$MemConfLevel" = 1 ];then
            XmsSize=512m
            MetaSize=256m
        elif [ "$MemConfLevel" = 2 ];then
            XmsSize=1G
            MetaSize=512m
        elif [ "$MemConfLevel" = 3 ];then
            XmsSize=2G
            MetaSize=1G
        elif [ "$MemConfLevel" = 4 ];then
            XmsSize=4G
            MetaSize=2G
        fi
        JAVA_OPTS="-Xms${XmsSize} -Xmx${XmsSize} -XX:CompressedClassSpaceSize=${MetaSize} -XX:MetaspaceSize=${MetaSize} -XX:MaxMetaspaceSize=${MetaSize} -Xloggc:logs/gc.log"
        echo "before start..."
        nohup java -jar "$appName.jar" >$appName 2>&1 &
        echo "after start..."
    fi
}
 
# 停止应用
function stop()
{
    echo "stop $appName..."
    count=`getCount`
    if [ $count != 0 ];then
        pid=`getPid`
        echo "stop $appName kill pid $pid"
        kill $pid
        sleep 2
        count=`getCount`
        if [ $count != 0 ];then
            echo "stop $appName kill -9 pid $pid"
            kill -9 $pid
        fi
    fi
}
 
# 备份应用
function bak()
{
    echo "bak start..."
    bakPath="/u01/bak/umapp/$appDir"
    if [ ! -d "$bakPath" ];
    then
        mkdir $bakPath
    fi
    bakName="/u01/project/umapp/$appDir/${appName}.jar"
    if [ -f "$bakName" ];
    then
        mv -f $bakName $bakPath/${appName}_`date +%Y%m%d%H%M%S`.jar
    fi
     
}
 
# 删除过期的备份程序只保留最新3次的
function del_bak
{
    echo "del_bak start..."
    bak_DIR=/u01/bak/umapp/$appDir
    if [ -d $bak_DIR ]; then
        cd $bak_DIR
        bak_count=`ls -lthr | grep -v 'total' | grep  "$appName.jar" |  wc -l`
        if (($bak_count > 3));then
            del_count=`expr $bak_count - 3`
            ls -thr | grep -v 'total' | grep  "$appName.jar"| head -$del_count | xargs rm -rf
        fi
    fi
    echo "del_bak success..."
}
 
 
# 重启应用
function restart()
{
    stop
    del_bak
    bak
    start
    status
}
 
# 打印启动状态
function status()
{
    count=`getCount`
    if [ $count != 0 ];then
        echo "$appName is success..."
    else
        echo "$appName is not success..."
    fi
}
 
case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    --help)
    usage;;
    *)
    echo -e "请使用--help察看可用选项" ;;
esac

5.创建可执行文件需要的目录

①umapp-cloud-devops.sh文件有一个存放jar包启动文件的目录project,把jar从/u01/builds下移动到/u01/project/umapp下,所以在/u01下创建对应的目录:

mkdir project

并且赋权限:

chmod 775 project

chmod 775 project

进入到project:

cd project/

再创建umapp目录:

mkdir umapp

并且赋权限:

chmod 775 umapp

②umapp-cloud-devops.sh文件有一个从/u01/project/umapp备份jar包到/u01/bak/umapp的操作,所以在/u01下创建对应的目录:

mkdir bak

并且赋权限:

chmod 775 bak

进入到bak:

cd bak/

再创建umapp目录:

mkdir umapp

并且赋权限:

chmod 775 umapp

6.配置系统启动需要的日志文件目录

根据项目配置的日志目录在/u01目录下创建日志目录:

mkdir logs

并且赋权限:

chmod 775 logs

Jenkins详细安装配置部署

Jenkins详细安装配置部署

十、构建项目

点击项目名称进入构建页面

Jenkins详细安装配置部署

 点击立即构建

Jenkins详细安装配置部署

 点击构建的序号查看构建情况

Jenkins详细安装配置部署

点击控制调输出查看构建情况

Jenkins详细安装配置部署 最后输出Finished: SUCCESS表示构建成功,从服务的注册中心nacos可以查看系统构建成功

Jenkins详细安装配置部署

 

版权声明:程序员胖胖胖虎阿 发表于 2022年10月25日 上午4:48。
转载请注明:Jenkins详细安装配置部署 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...