导读:本文内容比较大而全,但不一定都对您有所帮助,请根据实际情况使用~

安装部分为亲自验证有效~

其余系统管理的配置有的未亲自验证~

一、安装jenkins(CentOS8举例)

1、官网下载地址

https://www.jenkins.io/zh/download/

下载的是jenkins.war文件

2、 安装

1)cd 到jenkins.war路径

2)执行命令(linux和windows相同)

nohup java -jar jenkins.war --httpPort=8081 &   

 #其中nohup和&是为了保证jenkins后台运行;

#默认为8080端口,--httpPort=8081是手动指定8081端口,当服务器的8080端口被占用时,需要手动指定其他未被占用且防火墙关闭的端口

 查看jenkins进程

3)打开浏览器链接 http://ip:port

注意:ip为jenkins服务器ip,port为端口号(默认为8080,可手动指定)

二、配置Jenkins

 1、解锁jenkins

如上图,将/root/.jenkins/secrets   下的 initialAdminPassword 文件中的密码复制粘贴到浏览器中并点击“继续”

 2、安装插件

1)点击“安装推荐的插件” 

2)插件会自动安装,等待即可,需要一点时间安装

 3)输入用户名、密码等所有字段的信息,点击“保存并完成”

注意:填入信息不能有中文(第一次全名 使用中文,保存时报错,进程自动关闭,第二次未使用中文,此问题则没有出现)

出现下图步骤,直接点击【保存并完成】

完成配置,点击【开始使用Jenkins】

 进入Jenkins页面,哈哈!此时已经自动登录系统了;

三、系统管理配置

  • 常见配置:系统配置、全局工具配置、插件管理、节点管理、全局安全配置;
  • 打包分为前端npm打包、后端maven打包;

  • 1、系统配置

1、主目录:

svn代码会自动下载到此目录下的workspace文件夹中,每个项目一个文件夹;

不清楚主目录如何形成的(jenkins配置的?)

2、Maven项目配置

执行者数量、标签、用法 与 系统设置-节点管理-master配置页面一样,不清楚是何种原因;

这3个字段的解释放在master配置页面说明了;

默认视图:非必须;当jenkins项目处创建视图时,此处可选择;视图的作用为将job归类,如每个项目创建一个视图,相同项目的job均放置在此视图中;

3、Jenkin Location 

Jenkins URL:jenkins登录地址;当jenkins做了外网映射等,此处可以查找到jenkins所在的ip和实际端口号;

系统管理员邮件地址:非必须;如果jenkins向外界发邮件,发邮件方的用户名;

4、SonarQube servers

用于配置sonar代码检查

Name:随意;
Server URL:如 http://ip:port/sonarqube
Server authentication token: 输入之前生成的 token;

token获取方式如下:

安装SonarQube服务,在 SonarQube 中生成 Server authentication token
登录 SonarQube 后,在 “My Account” => “Securiy” 中生成 toekn

5、以下几个配置不清楚用法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

此配置为FTP服务器;

个人理解为打包后会上传到此FTP服务器上;未验证; 

  • Publish over SSH
  • 自动部署服务器,可配置多个;当自动部署时,可以选择此处配置的服务器;
  • Publish over SSH本身为jenkins插件,需要安装;

 Name:任意,后续在项目配置时可下拉选择此名称;

Hostname:服务器ip;

Username:服务器账号;

Remote Directory:服务器的根目录,任意目录,建议为“/”;这样在项目配置填写路径时只需填写绝对路径即可;

  • 2、全局工具配置

Maven配置:默认即如下图

 

JDK:

 jdk配置:不确定在哪里使用

 MSBuild:

SonarScanner for MSBuild:

SonarScanner for MSBuild( MSBuild代表测试项目是基于 .NET )

官方提供了 .NET Framework 和 .NET Core 两个版本,我们可以先都加上,之后根据实际项目选择使用哪个。

 SonarQube Scanner:

Name:任意

SONAR_RUNNER_HOME:安装SonarQube Scanner的目录

 Ant:

 Maven:

 NodeJS:

NodeJS:前端vue框架,npm打包需要的,可以增加多个版本的nodejs;

 Windows EXe:

  • 3、插件管理

可选插件:

 已安装:

常用的必须安装插件:

1)Deploy to container    #不理解

2)Maven  Integration    #安装后可新建maven类型的工程

3)Pulish Over  SSH    #安装后可远程传输部署包,实现自动部署

4)Subversion     #打包时使用svn代码库的必须安装此插件

5)Nodejs    #打包时使用npm方式前端打包的必须安装插件

6)SonarQube Scanner   #sonar质量管理配置所需插件

  • 4、节点管理

  • 系统管理-节点管理-新建节点:

1、节点列表

1)名称是识别节点的唯一标识

2)节点新建后,就看不到节点ip,一定要单独记录下来;(ip可以在名称或描述字段中体现;如果未记录,可点击“设置”按钮,左侧点击“日志”,日志内容包含ip地址)

3)点击列表最后一列的“齿轮”图标,进入节点配置界面,可以查看或修改节点配置;

4)当第一列“S”上打叉时,证明此节点与jenkins主节点之间不通信,无法使用此节点; 

2、master节点配置页面

 执行者数量、标签、用法  3个字段与系统管理-系统配置一样;不清楚有何关联;

 以下均为个人理解,不保证正确性: 

执行者数量:在此节点(master节点)同时可执行的job数量;如果超过执行者数量的job数量,需要进行等待;

标签:此处为空;当项目配置时,需要选择“限制项目运行节点”,如果需要选master机,则直接输入“master”(master机名称)即可;

用法:

Use this node as much as possible:项目build时,尽可能多的使用master节点;

Only build jobs with label expressions matching this node:只允许运行绑定到这台机器的job;

如何绑定?个人理解为job的配置“限制项目运行节点”为“master”时;但是此master为主节点名称而非标签(master节点未配置标签)

节点属性:不理解,看起来是maven的环境变量;

3、新建slave节点

1)新建节点:

节点名称:必须填写节点的ip地址,但在节点新建保存后,此ip地址不可见,需要单独记录;

固定节点:可勾选(不理解);

2)创建slave节点配置

以下转载自文章: jenkins配置slave节点 构建项目并执行操作 - 彩笔杀手 - 博客园

a)名字:定义slave的唯一名称标识,可以是任意字符串,通常设置为slave主机名、ip地址;

b)描述:关于slave的描述,通常用于描述与其他slave的区别;

c)Number of executors: 这个值控制着Jenkins并发构建的数量,因此这个值会影响Jenkins系统的负载压力。使用处理器个数作为其值会是比较好的选择;

增大这个值会使每个构建的运行时间更长,但能增大整体构建数量,因为当一个项目在等待I/O时允许CPU去构建另一个项目。

设置这个值为0,相当于移除失效节点,同时不会丢失配置信息;

d)远程工作目录:指定slave的工作目录路径。最好设置为绝对路径,如“/var/jenkins”或“c:\jenkins”。这里填写的是相对于slave主机的路径,正常情况下,不必对master主机可见。

e)标签:用来对多节点分组;标签输入框中可多输入此slave机的多个标签,用空格分隔;

举例如 ‘windows10 java8’,相当于给此slave机 打上2个标签:‘windows10’ 和‘java8’;

当需要构建时,如果job需要在windows10的服务器上运行,那么你可以选择所有节点标记为‘windows10’的机器,这样此job就不会在非‘windows10’标签的服务器节点上运行;

f)用法:控制jenkins如何安排此slave机构建

f1)尽可能的使用这个节点

这是默认和常用的设置。在此模式下,Jenkins会尽可能的使用这个节点。任何时候如果一个构建能使用这个节点构建,那么Jenkins就会使用它。

f2)只允许运行绑定到这台机器的job

这种模式下,Jenkins只会构建那些分配到这台机器的Job。这允许一个节点专门保留给某种类型的Job。(选择位置:job配置页面,可以选择 运行节点)

g)启动方法:控制Jenkins怎么启动slave(转载的,和上图未完全对应)

个人理解:linux slave选择g1方式,windows slave选择g2方式;

g1)Launch slave agents on Unix machines via SSH(Launch agents via SSH)

通过SSH连接,发送命令来启动slave。需要提供slave主机的ip地址和登录账号,可以不具备root权限;

g2) Launch slave agents via Java Web Start(Launch agent by connecting it to the master)

通过JNLP启动一个代理程序启动slave。这种情况下,启动是由slave初始化的,所以主机不一定要ip可达(比如隔着一层防火墙)

 g3)Launch slave via execution of command on the Master

通过从master上执行一个命令来启动slave。当master可以在slave上远程执行一个进程,比如通过ssh/rsh,可以使用这个。

g4)Let Jenkins control this Windows slave as a Windows service

不推荐,往往问题多多。

h)可用性:控制Jenkins何时启动或停止slave;

h1)Keep this slave on_line as much as possible;

默认和常规设置。在这个模式下,jenkins会尽量保持slave在线。如果不通过用户援助,启动slave,如果slave不可获取,jenkins将周期性的尝试启动slave.Jenkins不会主动让slave下线。 

h2)略

h3)略

i)配置后,保存

如果提示“从节点端口被禁用 ”,见下方解决方案;

windows slave环境下:

i1)点击【Launch】下载jnlp文件

i2)将此文件放置在slave节点的远程工作目录

i3) slave机上提前安装java

i4) 双击jnlp文件,弹出窗口,当窗口中提示“Connected”,即为连接成功

  i5)此时jenkins slave配置保存提示“Agent is connected.”

以下均为slave节点配置,根据slave机需要进行配置:

节点属性:

工具位置列表与 系统设置-全局工具配置 一致;用法不清楚

 选择Jenkins专用数据库;

允许用户注册:未勾选的话,其他用户无法注册,此处不理解;

 代理:

1、 需要设置为 随机选取 或 指定端口,否则无法与从节点通信,无法使用slave节点打包;

2、一般为“随机选取”;

此时某个slave节点,与主节点通信端口(jnlp)为随机的,如37280,那么要求jenkins服务器的此端口开放防火墙端口,否则无法通信;

3、如果jenkins服务器的随机端口不开放防火墙,那么此处只能选择“指定端口”,指定一个开放防火墙的端口如8082;但是slave机不止一台,每个slave机一个端口,此处只能设置一个端口?

 

 

 

 SSH Server:

 此处禁用,说明此配置目前没有用到;

四、前端npm打包

前后端分离项目,如bdp框架,前端打包生成dist过程

本地手工打包

手动打包过程了解后,jenkins打包为模仿手动打包过程;jenkins如果打包失败,可以手动打包试试,如果手动也打包失败,则先解决问题后再使用jenkins打包;

1)安装python 3.8.0

2)安装node(npm包含在其中)

3)在前端脚本路径下执行npm install 安装依赖包到node_moudules

4)  在前端脚本路径下执行npm run build 打包,生成dist文件

以下为Jenkins打包过程

jenkins安装在某台服务器上,python和node可以安装在此服务器或其他服务器上,如果安装到其他服务器上,jenkins执行打包时,选择打包节点(服务器)即可;

1)jenkins安装nodejs插件

2)打包服务器安装python- -python安装包解压后进行编译安装,增加环境变量

a)下载python安装包

Python Source Releases | Python.org

下载Python-3.8.0.tgz

b)将下载的安装包上传到服务器中,解压

执行cd到安装包所在路径

tar zxvf Python-3.8.0.tgz

将文件解压到当前路径,如果需要解压到特定路径,需要增加 -C  目标路径

c)准备编译环境,安装python需要的依赖,成功后提示Complete

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

d)编译安装

执行cd Python-3.8.0 进入解压后的Python-3.8.0目录,依次执行以下三个命令:

./configure --prefix=/home/Python-3.8.0
make
make install

其中:/home/Python-3.8.0为python的解压目录

编译安装成功后,可以看到同时安装了setuptools和pip工具;

e)创建软链接,类似于windows的快捷方式,不确定此步骤是否必须(如果有2个python时,必须得加,以便区分,一个python时应该可以不加)

ln -s /home/Python-3.8.0/bin/python3.8  /usr/local/bin/python

其中ln -s 后的第一个路径为 python3.8的路径(感觉有点类似于windows的python3.8.exe),第二个路径为软链接的路径(其余软链接也在此处),其中 /usr/local/bin/python  此处的python为一个别名,也可以是python3,如果是python3,以后调用python3.8时(如下图安装后效果),输入python3才可;

查看软链接:

ls -l /usr/local/bin

结果为:

[root@ecs-cba3-0003 bin]# ls -l /usr/local/bin
total 78476
lrwxrwxrwx 1 root root       33 Apr  7 15:50 cnpm -> ../lib/node_modules/cnpm/bin/cnpm
-rwxr-xr-x 1 root root 80316256 Apr  7 15:21 node
lrwxrwxrwx 1 root root       38 Apr  7 15:21 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 root root       38 Apr  7 15:21 npx -> ../lib/node_modules/npm/bin/npx-cli.js
lrwxrwxrwx 1 root root       32 Apr  8 09:25 python -> /home/Python-3.8.0/bin/python3.8

f)配置环境变量

环境变量文件路径为 /etc/profile

打开配置文件/etc/profile,添加如下配置:

export PYTHON_HOME=/home/Python-3.8.0
export PATH=$PATH:$PYTHON_HOME/bin

执行source /etc/profile,使配置生效;

也可执行echo命令,查看是否配置成功:

[root@ecs-cba3-0003 bin]# echo $PYTHON_HOME
/home/Python-3.8.0

g)安装后效果(执行Ctrl+D退出python命令窗口):

[root@ecs-cba3-0003 ~]# python --version
Python 3.8.0
[root@ecs-cba3-0003 ~]# python
Python 3.8.0 (default, Apr  7 2022, 16:58:35) 
[GCC 8.5.0 20210514 (Red Hat 8.5.0-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

3)打包服务器下载nodejs并安装nodejs--nodejs安装包解压增加环境变量

a)地址:https://nodejs.org/dist/

https://nodejs.org/en/     

下载版本如:node-v10.15.1-linux-x64.tar.gz(最开始使用10版本,后续发现此版本报错,又换的16版本)

b)cd到下载路径,解压缩:tar xvzf node-v10.15.1-linux-x64.tar.gz -C /home/nodejs

c)添加环境变量

i)在/etc/profile文件底部添加如下语句,注意/home/nodejs/node-v10.15.1-linux-x64为实际安装位置:

export PATH=$PATH:/home/nodejs/node-v10.15.1-linux-x64/bin

保存/etc/profile文件后退出

[root@ecs-cba3-0003 jenkins]# vim /etc/profile

ii) 执行语句使环境变量生效:source /etc/profile

此时安装好了node和npm(npm为nodejs内置的)

因为npm有时比较慢(其仓库来源为国外网站),故下方增加一步,安装cnpm,cnpm仓库来源于国内的淘宝团队

d)安装cnpm,配置淘宝镜像

npm install -g cnpm --registry=https://registry.npm.taobao.org

[root@ecs-cba3-0003 jenkins]# source /etc/profile
[root@ecs-cba3-0003 jenkins]# npm install -g cnpm --registry=https://registry.npm.taobao.org
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
/home/nodejs/node-v10.15.1-linux-x64/bin/cnpm -> /home/nodejs/node-v10.15.1-linux-x64/lib/node_modules/cnpm/bin/cnpm
+ cnpm@7.1.1
added 845 packages from 976 contributors in 15.429s

e) node -v      cnpm -v

[root@ecs-cba3-0003 jenkins]# node -v
v10.15.1
[root@ecs-cba3-0003 jenkins]# cnpm -v
cnpm@7.1.1 (/home/nodejs/node-v10.15.1-linux-x64/lib/node_modules/cnpm/lib/parse_argv.js)
npm@6.14.16 (/home/nodejs/node-v10.15.1-linux-x64/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)
node@10.15.1 (/home/nodejs/node-v10.15.1-linux-x64/bin/node)
npminstall@5.8.0 (/home/nodejs/node-v10.15.1-linux-x64/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)
prefix=/home/nodejs/node-v10.15.1-linux-x64 
linux x64 4.18.0-240.10.1.el8_3.x86_64 
registry=https://registry.npmmirror.com

npm和 cnpm区别:
npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等) npm安装插件过程:从http://registry.npmjs.org下载对应的插件包(该网站服务器位于国外,所以经常下载缓慢或出现异常)。
cnpm是国内的淘宝团队分享的镜像,同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm。

3)jenkins上node配置

系统管理--》全局工具配置--》NodeJS安装

五、后端maven打jar包

前后端分离项目,如bdp框架,后端打包生成jar过程

本地手工打包-win10

手动打包过程了解后,jenkins打包为模仿手动打包过程;jenkins如果打包失败,可以手动打包试试,如果手动也打包失败,则先解决问题后再使用jenkins打包;

1)下载svn脚本

能看见pom.xml的

2)安装java

3)下载maven

Index of /dist/maven/maven-3

可下载如下zip包并解压缩,并放置在合适的位置

3、配置环境变量

1)查找“高级系统设置”

2)配置系统变量MAVEN_HOME

  3)系统变量Path中,应用MAVEN_HOME变量,指向MAVEN_HOME的bin目录。

 

  4)测试maven是否安装成功

5)设置 settings.xml (不确定此步骤是否必须)

在apache-maven-3.5.4\conf 的 settings.xml中增加一句话:

<localRepository>C:\Program Files\MavenRepository</localRepository>

4、打包

在svn脚本路径下,cmd中执行命令:mvn package

打包成功如下显示:

个人未打包成功,原因未查找

以下为Jenkins打包过程

未配置,故未写;

个人理解:与本地打包相同,对系统配置的相关模块做一下配置即可;

注意点:

1、当安装完插件,或遇到非常规问题无法解决时,可重启jenkins

重启方式:

1)http://ip:port/restart

2)  windows系统也可重启计算机服务

3)linux系统不知道是否可以重启进程(仅猜测未验证)

问题及解决方案:

1、配置slave,保存后提示 从节点端口被禁用 

解决方法:

1)点击【配置链接】按钮,直接进入“全局安全配置”

2)代理模块,将“禁用”改为“指定端口”或“随机选取”

 2、slave机(Windows slave)双击jnlp,弹出如下提示

解决:表明主节点端口号36329,未开放;

1)主节点开放对应端口号的防火墙;

2)jenkins-系统管理-全局安全配置,代理处 不选“随机选取”,选择“指定端口”,填写一个已经开放的端口;

3、svn脚本,在打包服务器的具体路径,如何配置?

1)master配置方式:暂时不清楚

2)slave配置方式:新建slave节点时,“远程工作目录”即为脚本所在路径;

如windows slave配置如下:

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐