Jenkins详细安装配置部署

目录

  • 简介
  • 一、安装jdk
  • 二、安装jenkins
        • 这里如果熟悉 Jenkins ,可以【选择插件来安装】,如果不熟悉,还是按照推荐来吧。
        • 注意:
  • 三、插件安装
        • 如果上面插件安装,选择的不是【安装推荐的插件】,而是【选择插件来安装】--【无】
    • 1. 缓存插件列表。
    • 2. 修改Jenkins镜像源。
        • 中文版![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/226a96da8ca9441ba908b9065cdfd110.png)
        • 英文版:
    • 3. 下载汉化插件。
  • 四、卸载Jenkins
  • 五、常见问题
      • 1. 实例离线
          • 具体操作如下:
  • 六、安装git
  • 七、安装maven: /usr/local/soft/cicd
  • 八、Jenkins全局工具配置
      • 1. jdk配置:输入jdk安装的目录
      • 2. git配置:输入git的目录
      • 3. maven配置:输入maven的目录
  • 九、SSH插件安装
      • 附加:截止到发稿前,新版本的jenkins不提供Publish Over SSH插件
  • 十、SSH传输服务器设置
        • 1.Jenkins SSH Key配置jenkins部署所在服务器的信息
        • 2.SSH Servers配置需要把打好的jar包上传到的服务器信息(发布业务系统的服务器)
  • 十一、页面配置发布工程
  • 十二、目标发布服务器配置
        • 4.在自己的电脑创建一个名为:umapp-cloud-devops.sh的linux执行文件,编辑好后上传到/u01/scripts目录下,文件命名对应第八部分的第6点Exec command的部分内容。
  • 十三、构建项目
  • 十四、构建前端web工程
  • 十五、权限分配

简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具。主要做的事情就是从git中拉取代码,根据配置信息打包;把打好的包传输到目标服务器,并可以执行一些shell脚本,使项目打包发布一键完成。

在这里插入图片描述

一、安装jdk

jenkins的安装需要依赖于jdk。

参考: https://editor.csdn.net/md/?articleId=135966281

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

    yum install lrzsz -y
    
  2. 使用命令rz上传linux下的jdk安装包到服务器,输入rz后会弹出一个选项框,选择对应的jdk安装包(最新版的jenkins需要jdk11以上),2022年7月2日起,jenkins新版本不再支持java8,仅支持java11和java17。

二、安装jenkins

  1. 输入命令安装jenkins

    ​sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificatesudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install jenkins
    
  2. 查看Jenkins服务配置文件

    systemctl status jenkins
    

    在这里插入图片描述

  3. 修改Jenkins服务配置文件
    修改用户和组为root;指定jdk目录;修改启动端口号

    vim /usr/lib/systemd/system/jenkins.service
    在这里插入图片描述
    在这里插入图片描述

  4. 重新加载系统配置

     systemctl daemon-reload
    
  5. 启动jenkins

    # 启动
    systemctl start jenkins# 停止
    systemctl stop jenkins
    
  6. 开放Jenkins访问端口。(端口与配置文件中一致)

    firewall-cmd --zone=public --add-port=8088/tcp --permanent
    firewall-cmd --reload
    
  7. 浏览器访问(ip:port),出现这个界面说明安装成功,查看Jenkins密码进行下一步
    在这里插入图片描述

    sudo yum install -y fontconfigfc-cache --force

    然后重启:

    systemctl restart jenkins
    

    在这里插入图片描述

  8. 点击选择插件安装,然后选择无进行下一步:

    这里如果熟悉 Jenkins ,可以【选择插件来安装】,如果不熟悉,还是按照推荐来吧。

    7-1、在这里插入图片描述
    7-2、
    在这里插入图片描述

注意:

这里如果不熟悉Jenkins,可以选择【安装推荐的插件】。即可,省事。

  1. 创建用户

    在这里插入图片描述

  2. 保存实例【】
    在这里插入图片描述

  3. 进入Jenkins。
    在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/648bd9c3fbec43a5a2fd1f33875f924c.png)

三、插件安装

如果上面插件安装,选择的不是【安装推荐的插件】,而是【选择插件来安装】–【无】

1. 缓存插件列表。

点击Manage Jenkins --》 Manage Plugins --》Available 等待浏览器加载完成。(这样做是为了把Jenkins官方的插件列表下载到本地
在这里插入图片描述
新版本
在这里插入图片描述
旧版本
在这里插入图片描述

2. 修改Jenkins镜像源。

进入配置目录,修改镜像源为清华源。

cd /var/lib/jenkins/updatessed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

在这里插入图片描述

然后回到jenkins的Plugins页面,点击Advanced,把Update Site改为国内插件下载地址 。

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述

Sumbit后,在浏览器输入: http://ip:port/restart ,重启Jenkins。
http://192.168.21.3:8086/restart

中文版在这里插入图片描述
英文版:

在这里插入图片描述

3. 下载汉化插件。

点击Manage Jenkins --》Manage Plugins ,点击 Available ,搜索 “Chinese”。
在这里插入图片描述

安装完成后重启jenkins。
在这里插入图片描述

四、卸载Jenkins

依次执行命令。

1、rpm卸载
rpm -e jenkins2、检查是否卸载成功
rpm -ql jenkins 3、彻底删除残留文件:
find / -iname jenkins | xargs -n 1000 rm -rf

五、常见问题

1. 实例离线

由于网速较慢,即使该Jenkins所在机器可以联网,但是还是会出现该jenkins实例已经离线,这个时候不要慌。我们先将Jenkins服务关闭,修改Jenkins镜像源重新启动即可。
在这里插入图片描述

具体操作如下:
  1. 停止jenkins

    systemctl stop jenkins
    
  2. 进入Jenkins工作目录

    cd /var/lib/jenkins
    
  3. 修改镜像源

    vim hudson.model.UpdateCenter.xml 
    将url修改为
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    

    在这里插入图片描述

  4. 重启jenkins即可

    重启后重新根据上述步骤操作

    systemctl start jenkins
    

六、安装git

  1. 先验证有没有安装
    git --version
    
  2. 如果没有安装,执行安装命令:
    yum install git
    
  3. 查看安装git是否成功:
    git --version
    

七、安装maven: /usr/local/soft/cicd

  1. 打开maven 网站 https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/
    选择版本:
    在这里插入图片描述

https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz

  1. 如果没有 wget ,先安装, 如有,忽略

    yum install -y wget  
    

    然后:

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gztar -zxvf apache-maven-3.9.5-bin.tar.gz
    mv apache-maven-3.9.5 maven
    cd maven
    

    在这里插入图片描述

  2. 单独配置Maven

    vim /etc/profile
    export M2_HOME=/usr/local/maven
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH

如图:
在这里插入图片描述

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/binexport JAVA_HOME=/usr/local/soft/java/openjdk17
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexport PATH=$PATH:/usr/local/soft/node-v16/bin# minio
export MINIO_ROOT_USER=ltkj
export MINIO_ROOT_PASSWORD=ltkj.comexport LD_LIBRARY_PATH=/usr/local/lib
export LIBLEPT_HEADERSDIR=/usr/local/include
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig# mvn
export M2_HOME=/usr/local/soft/cicd/maven
export PATH=$M2_HOME/bin:$PATH
  1. 修改maven的setting.xml配置信息

    4-1、进入目录:

    cd  /usr/local/soft/cicd/maven/conf
    

    4-2、编辑setting.xml配置文件:

    vi settings.xml
    

    4-2-1、设置存放jar包的目录:
    在这里插入图片描述

    4-2-2、配置私服的serviers

    <servers><server><id>releases</id><username>knet</username><password>knetfordeployment</password></server><server><id>Project Releases</id><username>knet</username><password>knetfordeployment</password></server><server><id>Project Snapshots</id><username>knet</username><password>knetfordeployment</password></server><server><id>huaweicloud</id><username>anonymous</username><password>devcloud</password></server></servers>
    

    4-2-3、配置阿里云镜像

    <mirrors><mirror><id>public</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>spring</id><mirrorOf>*</mirrorOf><name>阿里云spring仓库</name><url>https://maven.aliyun.com/repository/spring</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云spring插件仓库</name><url>https://maven.aliyun.com/repository/spring-plugin</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云gradle-plugin</name><url>https://maven.aliyun.com/repository/gradle-plugin</url></mirror>
    </mirrors>
    

    4-2-4、配置maven私服nexus及激活的配置

     <profiles><profile><id>maven-repo</id><repositories><repository><id>spring</id><url>https://maven.aliyun.com/repository/spring</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository><!--https://developer.aliyun.com/mvn/guide     --><repository><id>jcenter</id><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></profile>
    </profiles><activeProfiles><activeProfile>maven-repo</activeProfile>
    <!--    <activeProfile>alwaysActiveProfile_</activeProfile>--></activeProfiles>
    
  2. 创建存放jar包的目录repo,需要与setting.xml中配置的一致:

    切到需要创建的目录下:

    cd /usr/local/soft/cicd/
    

    创建目录:

    mkdir repo
    

    给目录赋读写权限:

    chmod 777 repo
    

————————————————

八、Jenkins全局工具配置

在jenkins首页依次:进入【系统管理】>>【全局工具配置】:
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

九、SSH插件安装

jenkins打完包需要上传到新的服务器上,此处使用ssh的方式上传,添加ssh插件。
【系统管理】-> 【插件管理】-> 【可选插件】
在这里插入图片描述

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

在这里插入图片描述

安装完成后新建工程时,构建环境选项才会出现SSH相关的选项
在这里插入图片描述

附加:截止到发稿前,新版本的jenkins不提供Publish Over SSH插件

从可选库里面检索不到,jenkins官网暂停了插件,原因是存在XSS和CSRF攻击,目前没有修复,但是我们使用内网部署,不存在这种情况,外网部署的情况需要慎重考虑。

在这里插入图片描述

可以手动添加Publish Over SSH插件到jenkins,需要的文件下载git地址:
https://github.com/zhangliqingyun/publishssh.git

参考:https://blog.51cto.com/u_13272819/6540815
目录切到:

/var/lib/jenkins/plugins

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

在这里插入图片描述

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

十、SSH传输服务器设置

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

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

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

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

Key:私钥

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

ssh-keygen -t rsa

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

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

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

/root/.ssh/id_rsa

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

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

在这里插入图片描述
点击新增添加ssh服务器,可以根据需要添加多台。
Name:SSH节点配置的名称,在Job中使用Publish over SSH插件时,此名称将出现在"SSH Server"中"Name"的下拉列表中。
在这里插入图片描述

Hostname: 主机IP

Username:主机用户名

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

登录服务器创建目录:

mkdir u01

给u01目录赋权限:

chmod 775 u01

登录远程服务器使用秘密的方式,点击高级展开进行设置:
在这里插入图片描述

勾选使用秘密登录: Use password authentication, or use a different key,点击Change Password设置添加的用户登录服务器的密码
在这里插入图片描述

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

vi authorized_keys

,把公钥内容粘贴进行,然后重启目标服务器的shh

systemctl restart sshd.service

在这里插入图片描述

在这里插入图片描述

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

十一、页面配置发布工程

1.创建视图,把工程放在视图中进行管理
在这里插入图片描述
2.在创建的视图中添加任务

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

在这里插入图片描述
4.General选择丢弃旧的构建,输入保持构建的最大个数
在这里插入图片描述
5.源码管理选择Git的方式,添加项目的git地址
在这里插入图片描述
点击添加访问git地址的用户名和密码信息,此用户需要有权限访问git链接:

在这里插入图片描述

填写对应的用户名密码即可:
在这里插入图片描述

指定需要打包的分支:
在这里插入图片描述

6.构建环境

选择:Send files or execute commands over SSH after the build runs 把打包好的jar文件发送后执行命令的方式
在这里插入图片描述

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

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

在这里插入图片描述

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执行的命令

在这里插入图片描述
-Pdev为激活dev配置,此处的配置对应项目properties或yml配置文件的active(激活配置)

在这里插入图片描述
–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点已经介绍创建过此目录
在这里插入图片描述
2.在u01目录下创建存放jar包的目录builds:

mkdir builds

并且赋权限:

chmod 775 builds

builds的命名对应第八部分的第6点Remote directory内容
在这里插入图片描述

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

mkdir scripts

并且赋权限:

chmod 775 scripts

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

在这里插入图片描述

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" ];
thenmkdir $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" ];
thenusage;exit 1
fiif [ "$optionName" == "" ];
thenecho -e "\033[0;31m 未输入操作名 \033[0m"exit 1
fiif [ "$appName" == "" ];
thenecho -e "\033[0;31m 未输入应用名 \033[0m"exit 1
fiif [ "$appDir" == "" ];
thenecho -e "\033[0;31m 未输入项目路径 \033[0m"exit 1
fiif [ "$MemConfLevel" == "" ];
thenecho -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 ];thenecho "$appName is running..."elseecho "$appName is start..."# 拷贝并覆盖Jenkins生成在builds文件下的jar 到所属的项目路径下cp -rf /u01/builds/"$appName.jar" /u01/project/umapp/$appDir/chmod 775 -R /u01/project/umapp/$appDircd /u01/project/umapp/$appDirecho "begin config..."if [ "$MemConfLevel" = 0 ];thenXmsSize=256mMetaSize=125melif [ "$MemConfLevel" = 1 ];thenXmsSize=512mMetaSize=256melif [ "$MemConfLevel" = 2 ];thenXmsSize=1GMetaSize=512melif [ "$MemConfLevel" = 3 ];thenXmsSize=2GMetaSize=1Gelif [ "$MemConfLevel" = 4 ];thenXmsSize=4GMetaSize=2GfiJAVA_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 ];thenpid=`getPid`echo "stop $appName kill pid $pid"kill $pidsleep 2count=`getCount`if [ $count != 0 ];thenecho "stop $appName kill -9 pid $pid"kill -9 $pidfifi
}# 备份应用
function bak()
{echo "bak start..."bakPath="/u01/bak/umapp/$appDir"if [ ! -d "$bakPath" ];thenmkdir $bakPathfibakName="/u01/project/umapp/$appDir/${appName}.jar"if [ -f "$bakName" ];thenmv -f $bakName $bakPath/${appName}_`date +%Y%m%d%H%M%S`.jarfi}# 删除过期的备份程序只保留最新3次的
function del_bak
{echo "del_bak start..."bak_DIR=/u01/bak/umapp/$appDirif [ -d $bak_DIR ]; thencd $bak_DIRbak_count=`ls -lthr | grep -v 'total' | grep  "$appName" |  wc -l`if (($bak_count > 3));thendel_count=`expr $bak_count - 3`ls -thr | grep -v 'total' | grep  "$appName"| head -$del_count | xargs rm -rffifiecho "del_bak success..."
}# 重启应用
function restart()
{stopdel_bakbakstartstatus
}# 打印启动状态
function status()
{count=`getCount`if [ $count != 0 ];thenecho "$appName is success..."elseecho "$appName is not success..."fi
}case $1 instart)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 projectchmod 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

在这里插入图片描述
在这里插入图片描述

十三、构建项目

点击项目名称进入构建页面
在这里插入图片描述

点击立即构建
在这里插入图片描述

点击构建的序号查看构建情况
在这里插入图片描述

点击控制调输出查看构建情况
在这里插入图片描述

最后输出Finished: SUCCESS表示构建成功,从服务的注册中心nacos可以查看系统构建成功
在这里插入图片描述

十四、构建前端web工程

前面第八、九、十是构建的java maven项目,此处构建的是纯前端项目。

1.添加前端打包需要的插件,系统管理-》插件管理,添加NodeJs Plugin。
在这里插入图片描述
2.配置node全局工具,系统管理-》全局工具配置,找到NodeJs相关配置,选择NodeJs版本。

注意NodeJs的版本选择,需要跟安装jenkins的服务器对应,太高的NodeJs版本,需要的Glibc版本比较高,否则打包的时候会报找不到高版本的Glibc。

/lib64/libm.so.6: version `GLIBC_2.27‘ not found
可以通过命令查看服务器Glibc的版本信息

strings /lib64/libc.so.6 |grep GLIBC

此处我们选择nodeJS-14.17.6。

3.创建一个任务,新建任务-》构建一个自由风格的软件项目

在这里插入图片描述
4.General选择丢弃旧的构建,输入保持构建的最大个数

在这里插入图片描述

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

在这里插入图片描述

点击添加访问git地址的用户名和密码信息,此用户需要有权限访问git链接:
在这里插入图片描述

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

在这里插入图片描述
指定需要打包的分支:
在这里插入图片描述

6.构建环境选择Provide Node & npm bin/ folder to PATH,选择在全局配置中配置的nodejs
在这里插入图片描述

7.构建步骤选择执行shell(Execute shell)
在这里插入图片描述

配置bulid构建的脚本

#查看环境path
echo $PATH
#打印node版本
node -v
#打印npm版本
npm -v
#安装镜像文件,镜像文件的地址具体根据前端使用的库进行配置
npm install yarn --registry=http://registry.npm.xxx.org/
#开始构建
npm run build
#进入构建完的dist目录
cd dist
#移除上次打的压缩包
rm -rf dist.tar.gz
#把dist目录下的文件全部打成压缩包
tar -zcvf dist.tar.gz *
cd ../

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

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

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

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

Exec command:配置传输到目标服务器后执行的命令

#进入存放tar.gz文件的目录
cd /u01/project
#移除存放前端文件的目录
rm -rf webProject
#创建存放前端文件的目录
mkdir webProject
#解压tar.gz文件,并放到上面创建的目录下
tar -zxvf dist.tar.gz -C webProject
#移除tar.gz文件
rm -rf dist.tar.gz

9.保存配置,立即构建,构建成功后,在目标服务器存在此dist文件
在这里插入图片描述

10.若是要访问前端项目,只需在nginx中配置下反向代理即可访问前端页面。
在这里插入图片描述

十五、权限分配

1.添加用户,系统管理-》jenkins专有用户数据库-》新建用户,填写用户信息
在这里插入图片描述
2.添加角色分配插件,系统管理-》插件管理,添加Role-based Authorization Strategy插件

在这里插入图片描述
3.修改权限方式 ,系统管理-》全局安全配置,授权策略改为Role-Based Strategy

在这里插入图片描述
修改完成后,在系统管理才会出现Manage and Assign Roles

在这里插入图片描述
4.配置权限,系统管理-》Manage and Assign Roles,可以配置角色,给用户分配角色。

在这里插入图片描述
5.配置角色,系统管理-》Manage and Assign Roles-》Manage Roles

Global roles:最外层比较宏观的权限,全局角色,针对此角色配置操作某个菜单的权限

Item roles:针对任务进行的权限划分,使用正则标识式进行配置

在这里插入图片描述

此处全局角色,配置了一个view,只分配了一个read的权限;任务添加了一个web角色,使用正则表达式匹配任务名为web开头的任务。
在这里插入图片描述

6.给用户分配角色,系统管理-》Manage and Assign Roles-》Assign Roles

此处给用户张三、李四分配的view角色,登录进来后看不到删除、编辑、添加相关的菜单。

在这里插入图片描述
在这里插入图片描述

在item roles给张三、李四勾上可以操作的任务

在这里插入图片描述

此时用户张三、李四登录可以看到分配的任务,使用正则标识式匹配的任务列表
在这里插入图片描述

而我们系统中是有两个任务的,下面的图是管理员看到的效果。
在这里插入图片描述

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

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

相关文章

ZYNQ学习之PetaLinux与Vitis的安装

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 一、Petalinux安装 1.1、Petalinux资源下载 百度云安装包&#xff1a; Petalinux 安装…

FFMPEG C++封装(一)(C++ FFMPEG)

1 概述 FFMPEG是一个C语言开源视音频编解码库。本文将FFMPG4.1.3进行C封装&#xff0c;形成C FFMPG库。 2 架构 架构图如下所示&#xff1a; 架构说明: Init 初始化FFMPEG库。IStream 输入流&#xff0c;FFMPEG的输入音视频文件。Packet 音视频数据包Decoder 音视频编码器F…

OpenHarmony:RichEditor组件样例开发

使用 richEditor 组件实现一个富文本编辑框&#xff0c;包含富文本编辑区域和功能栏&#xff0c;功能栏中有多个按键&#xff0c;可以调整字体大小、字体样式、字体颜色、布局&#xff0c;并可以插入图片。 api 版本&#xff1a;api11 主页面 import { TitleBar } from ../.…

element跑马灯/轮播图,第一页隐藏左边按钮,最后一页隐藏右边按钮(vue 开箱即用)

图示&#xff1a; 第一步&#xff1a; <el-carousel :class"changeIndex0?leftBtnNone:changeIndeximgDataList.length-1? rightBtnNone:" height"546px" :autoplay"false" change"changeNext"><el-carousel-item v-for…

Stata 15 for Mac:数据统计分析新标杆,让研究更高效!

Stata 是一种统计分析软件&#xff0c;适用于数据管理、数据分析和绘图。Stata 15 for Mac 具有以下功能&#xff1a; 数据管理&#xff1a;Stata 提供强大的数据管理功能&#xff0c;用户可以轻松导入、清洗、整理和管理数据集。 统计分析&#xff1a;Stata 提供了广泛的统计…

A Little Is Enough: Circumventing Defenses For Distributed Learning

联邦学习的攻击方法&#xff1a;LIE 简单的总结&#xff0c;只是为了能快速想起来这个方法。 无目标攻击 例如总共50个客户端&#xff0c;有24个恶意客户端&#xff0c;那么这个时候&#xff0c;他需要拉拢2个良性客户端 计算 50 − 24 − 2 50 − 24 0.923 \frac{50-24-2}{…

瑞_23种设计模式_中介者模式

文章目录 1 中介者模式&#xff08;Mediator Pattern&#xff09;1.1 介绍1.2 概述1.3 中介者模式的结构1.4 中介者模式的优缺点1.5 中介者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《2…

Java项目:80 springboot师生健康信息管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的角色&#xff1a;管理员、宿管、学生 管理员管理宿管员&#xff0c;管理学生&#xff0c;修改密码&#xff0c;维护个人信息。 宿管员…

数组类模板(类模拟实现静态数组)

目录 介绍&#xff1a; 案例描述&#xff1a; 思路&#xff1a; 对要求分别分析实现&#xff1a; 创建对应的类&#xff1a; 1.定义一个数组类 2.类中属性有&#xff1a;数组&#xff0c; 容量&#xff0c; 大小 3.数组函数有&#xff1a; 构造函数&#xff08;容量&am…

排序---数组和集合

1、数组排序 Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序&#xff0c;并且是按照从小到大的排序。 public static void main(String[] args) {Integer []arr {1,2,3,4,5,6};//升序Arrays.sort(arr);for (int x:arr){System.out.print(x " ");}Sys…

IRIS / Chronicles 定义 Item Response Type 字段属性

Response Type 在关系数据库中可能没有这个选项&#xff0c;我们对关系数据库表中的数据返回的数据就是是数据&#xff0c;通常不再做过多定义。 但是 IRIS 会对返回的数据也做一些定义&#xff0c;这个就是我们说的 Response Type。 Single &#xff08;单一&#xff09; 这…

二维随机变量的条件分布-已知X概率密度,X条件下的Y概率密度求解y的概率密度

问题&#xff1a;设数X在区间(0,1)上随机地取值,当观察到Xx(0<x<1)时,数Y在区间(x,1)上随机地取值.求Y的概率密度f(y)&#xff1f; 求解&#xff1a; 首先&#xff0c;数X在区间(0,1)上均匀分布&#xff0c;因此其概率密度函数fX​(x)为&#xff1a; fX​(x)1 0<…

Unity类银河恶魔城学习记录11-7 p109 Aplly item modifiers源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemData_Equipment.cs using System.Collections; using System.Collecti…

K8S安装和部署(kubeadmin安装1主2从)

这里用kubeadmin方式进行安装部署 1. 准备三台服务器 服务器地址 节点名称 192.168.190.200 master 主 192.168.190.201 node1 从 192.168.190.202 node2 从 2. 主机初始化&#xff08;所有主机&#xff09; 2.1根据规划设置主机名 #切换到192.168.190.200 hostnamectl…

327京东一面

1.项目相关 2.手撕SQL 两道 3.JMeter性能测试 首先&#xff0c;进行基准测试&#xff1a; 单用户测试&#xff08;单用户循环多次得到的数据&#xff09;&#xff1b;为多用户并发执行提供参考 其次&#xff0c;进行负载测试&#xff1a; 通过逐步增加系统负载&#xff0…

大数据学习-2024/3/29-oracle使用介绍

在plsql中登录ORACLE数据。 默认用户&#xff1a; 1、sys&#xff1a; 角色&#xff1a;数据库超级管理员账户。 权限&#xff1a;具有最高的权限&#xff0c;可以执行任何操作&#xff0c;包括操作数据字典和控制文件。可以创建和删除数据库对象&#xff0c;授予和回收其他用户…

Linux系统中安装一些常用的插件备用

Linux系统中安装一些常用的插件备用 1.安装wget yum -y install wget 2.安装vim yum -y install vim-enhanced 3.更换yum源为国内的阿里云源&#xff08;选择&#xff09; 1、备份CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.…

代码随想录算法训练营第二十四天| 理论基础,77. 组合

题目与题解 参考资料&#xff1a;回溯法理论基础 带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 77. 组合 题目链接&#xff1a;​​​​​​​​​​​​​​77. 组合 代码随想录题解&#xff1a;77. 组合 视频讲解&#xff…

InputStreamReader类详解

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

Radash一款JavaScript最新的实用工具库,Lodash的平替!

文章目录 Lodash 的痛点进入正题--Radash特点 举例几个常用的api 一说lodash应该大部分前端同学都知道吧&#xff0c;陪伴我们好多年的JavaScript工具库&#xff0c;但是自从 ES6 出现后就慢慢退出前端人的视线&#xff0c;能ES6写的代码绝对不会用Lodash&#xff0c;也不是完全…