相关地址
官方网址:https://www.jenkins.io/zh/
安装运行
去官网或者其它镜像网站下载稳定war
包,比如:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.303.2/jenkins.war
直接找一个目录使用jar
命令运行:
nohup java -Xms512m -Xmx1024m -jar jenkins.war --httpPort=8090 --prefix=/jenkins --webroot=/data/jenkins/cache > log.log 2>&1 &
安装高版本jenkins(使用高版本jdk)
此处更新于2023-10-20。
现在高版本的jenkins
必须要使用jdk11
或jdk17
或更高版本来运行,但是我们项目上大多都是使用jdk8
。因此这里介绍下怎么单独使用不同版本的jdk运行高版本jenkins
,从而避免与项目使用的jdk
冲突。
很简单,下载你需要的对应版本jdk
(oracle jdk
或openjdk
都行),然后指定它去启动jenkins
:
nohup /data/jenkins/jdk17/bin/java -Xms512m -Xmx1024m -jar jenkins.war --httpPort=8090 --prefix=/jenkins --webroot=/data/jenkins/cache > log.log 2>&1 &
注意,这里必须使用jdk
的全路径。
常用插件
Publish Over SSH
此插件用于配置远程主机,配置后可在任务中引用并发送指令。
Role-based Authorization Strategy
用户角色权限控制。
Manage Roles
创建角色。
Global roles
:控制全局的权限,一般给一个全部的Read
就好了。
Item roles
:控制任务维度的权限,Pattern
是正则匹配(是匹配任务,不是视图),常用的有.*
表示匹配任意的多个字符,如dev.*
;|
表示或者,如dev|uat
。
Assign Roles
授权用户与角色,用户可在系统配置的管理用户
处创建。
常见任务
任务一(直接执行服务器脚本)
新建自由风格软件项目:
上图中构建/构建后操作二者选其一即可。
常见问题
任务控制台输出显示远程服务器日志
在SSH Server
的高级中,勾选Verbose output in console
执行远程服务器脚本找不到环境变量
/usr/bin/env: node: No such file or directory
远程服务器脚本中包含如下命令:
# 编译打包
echo "========>>>>>>>>>>>>> build"
/data/node/node/bin/npm run build:dev
# 日志报错:
/usr/bin/env: node: No such file or directory
使用npm
命令时报错找不到node
。我们都知道npm
需要在node
环境下才可以使用。由于远程服务器已经配置了node
环境变量,但是通过jenkins
去执行时,依然找不到node
。
两种解决方案:
-
在远程服务器中配置
node
的软连接到/usr/bin
目录下,比如:ln -s "$(which node)" /usr/bin/node
-
在执行远程服务器脚本命令之前手动加上缺失的变量环境,比如:
cd /data/zcgl PATH=/data/node/node/bin/node:$PATH sh run-front.sh
which: no java in xxx
通常我们会在脚本中使用mvn
命令去打包编译java
工程,和上面找不到node
错误一样,mvn
命令执行的时候会使用到java
环境,如果找不到可能会报如下错误:
which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
那么这个和上面node
一样的解决方案:
-
在远程服务器中配置
java
的软连接到/usr/bin
目录下,比如:ln -s "$(which java)" /usr/bin/node
-
在执行远程服务器脚本命令之前手动加上缺失的变量环境,比如:
cd /data/zcgl PATH=/data/jdk/jdk1.8/bin:$PATH sh run-front.sh
– end –