此文档以Jenkins 2.387.1版本为基础。
一、安装部署
1.1 下载
使用war安装,直接下载war包进行部署;
官方jenkins下载地址:www.jenkins.io/download/
直连地址:get.jenkins.io/war-stable/…
1.2 部署环境
硬件要求建议,下面摘自官网:
注意环境要求需要:
- OpenJDK JDK / JRE 11 - 64 bits
- OpenJDK JDK / JRE 17 - 64 bits
如果使用jdk8 在运行的时候会启动不了。
这里目前使用的jdk17,下载地址:www.oracle.com/java/techno…
1.3 运行
使用: java -jar jenkins.war
建议自定义脚本nohup后台启动。
启动时如果报错:Cannot load from short array because "sun.awt.FontConfiguration.head" is null
解决方案:
yum install fontconfig
fc-cache --force
url地址: http://localhost:8080
如果想修改访问参数如端口号:java -jar jenkins.war --httpPort=9090
通过命令help查看更多参数:java -jar jenkins.war --help
如果想自定义环境变量可以设置JENKINS_HOME:
set JENKINS_HOME=my-jenkins-config //jenkins生成的自定义目录可以在此目录查看,否则会默认生成在当前用户的 .jenkins 目录下面。
1.4 激活
通过地址访问页面时会出来下面的访问页面,可以通过它提供的文件去cat下密码或者直接在打印的日志中复制密码过来激活。
1.5 插件配置
插件配置,如果不清晰自己想安装哪些插件,可以直接使用推荐配置进行下一步。
如果有些插件后面需要使用可以在:配置管理-》插件管理里面进行安装;
常用的java后台项目环境需要插件:maven,git ,publish over ssh
常用的前端项目打包插件:nodejs
maven和nodejs环境也可以使用的本地服务器环境,把它配置到服务器的环境即可。
二、应用配置
2.1 系统配置
在publish over ssh中添加需要管理的ssh server,用于应用部署:
2.2 全局工具配置
maven:
jdk使用系统默认的即可:
git可以自己在服务器安装,找到bin目录:
安装git:yum install git
nodejs
这里注意也可以在本地安装nodejs并使用,如果使用本地环境则此处的nodejs可以不用配置,且在配置前端配置任务时可以不用配置nodejs环境(因为它会默认读取本地环境);
使用nodejs打包前端应用时,需要注意pnpm在ci/cd时会有bug打包存在问题,可以使用其他打包方式如:npm/cnpm
2.3 gitlab仓库凭证
需要连接gitlab仓库,首先需要添加下凭证,这里建议使用密钥SSH Username with private key凭证;
-
你可以按如下命令来生成 sshkey:
ssh-keygen -t rsa -b 2048 -C""
-
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key
cat ~/.ssh/id_rsa.pub
-
复制生成后的 ssh key,添加到gitlab项目中。
三、任务构建
3.1 创建任务
genneral
可以添加参数进行构建,在使用时可以通过变量获取:
git源码管理
也可以在高级中配置超时时间:
构建触发器
选择触发时机:
在高级中别忘了生成密钥在gitlab中配置:
当gitlab中有push操作时会推送到jenkins服务器触发构建;
需要在gitlab中的webhook中进行配置:
构建环境
构建步骤
java项目使用maven打包,如果是前端包则使用shell脚本配置打包即可:
构建后操作
查看控制台输出结果:
3.2 前端配置需要nodejs环境
如果用的是本地nodejs环境此处可以不用配置。
3.3 验证
在webhooks中点击tes触发push event即可:
成功触发会响应200:
查看jenks中的构建历史记录及部署环境验证。
四、常见问题
- 执行sh脚本出现jps不可使用
cd /usr/bin
ln -s -f /jdk/bin/jps jps
- java.io.IOException: Cannot run program "mvn" (in directory "/
配置了mvn环境后需要重启jenkins分支监测不到mvn命令
- node: /lib64/libm.so.6: version `GLIBC_2.27' not found
版本太高
-
linux打包出现过element-ui样式问题 package.json锁定某一个版本号(如果不锁定的话,可以用npm ci试下,ci需要package-lock文件哦)
-
linux打包大小写敏感问题 webpach有一个大小写敏感插件[case-sensitive-paths-webpack-plugin],排查问题所在