Linux下安装Jenkins服务
Jenkins首次安装推荐插件出错 No such plugin: cloudbees-folder 超详细解决方案
Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置
一台Linux服务器部署Jenkins服务,简述流程:
1.安装Jdk环境
- 配置Java多环境(可选)
2.安装Maven插件
- 配置远程Nexus仓库(可选)
3.安装Git环境
- 配置Git的密钥登录
4.安装Jenkins
- 中文插件
- Git插件
- Maven打包插件
5.配置SSH免密登录
6.配置Jenkins打包的后置Shell脚本执行远程部署 (可选)
Jenkins安装
截止当前时间LTS版本:
2.346.3 LTS
Jenkins版本高于上述
中文官网
网站,截止当前时间LTS版本:2.479.2 LTS
安装Jenkins
下载Jenkins仓库
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo |
导入key
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key |
安装openjdk-17
可自行安装jdk-17版本
yum install fontconfig java-17-openjdk |
安装Jenkins
yum install jenkins |
设置开机自启
systemctl enable jenkins |
启动/状态/重启
systemctl start jenkins |
可编辑文件对jenkins
做一些基础配置(可选)
/usr/lib/systemd/system/jenkins.service |
指定启动Jenkins的JDK17路径
启动后截图
注意:在第一次启动时的密钥到此页面前要输入安装密钥,在Jenkins的日志文件中可查或
systemctl status jenkins
会打印
Jenkins配置Git凭据
配置Linux服务器访问Git的SSH密钥
ssh-keygen -t ed25519 -C "xxxx_Jenkins" -f "/root/.ssh/xxx_id_rsa" |
配置config
文件
Host xxxx.xxx.com |
在gitlab仓库,将当前id_rsa
公钥配置到设置
验证配置
ssh -T git@xxxx.xxx.com -p 22 |
配置Jenkins的Git凭据认证
配置类型SSH Username with private key
Passphrase
如果对公钥私钥加密,则需要配置当前口令。
jenkins 设置Git sshkey 凭证后,报错:No ECDSA host key is known for
解决办法:
Manage jenkins –> Configure Global Security ,找到 Git Host Key Verification Configuration,按下图修改后保存。警告信息可以忽略
Jenkins配置Maven项目打包
选择对应项目的JDK版本
输入项目的git仓库地址
配置自动删除旧的构建文件
输入项目的分支
输入Maven构建命令
-Pdev : 选择pom中环境为dev
-Dmaven.test.skip=true 跳过单元测试
clean package -Pdev -Dmaven.test.skip=true |
项目pom打包插件
<plugin> |
Jenkins打包脚本命令
Jenkins打包执行脚本命令:
#!/bin/bash |
#!/bin/bash |
Jenkins插件推荐
简体中文插件
搜索关键词
Localization
Maven项目
搜索关键词
Maven
Publish Over SSH
Jenkins系列教程六:Jenkins安装Publish over SSH插件并配置
问题记录
No such plugin: cloudbees-folder
此问题记录不适当前博客文章,当前采取yum方式安装Jenkins,但仍具备一定参考作用。
缺少 cloudbees-folder
插件,访问 cloudbees-folder 下载
将下载cloudbees-folder.hpi
文件,复制到Jenkins.war
包部署的项目目录/WEB-INF/detached-plugins
下。
Maven打包报错(权限问题报错)
记录在jenkins中自动部署maven项目时碰到的一些问题
启动的服务这里是用户
jenkins
[root@localhost conf]# ps -ef | grep jenkins |
给Jenkins的用户授权权限
chown -R jenkins:jenkins /opt/maven_repository |
Jenkins打包报错(JDK版本问题)
解决linux jenkins要求JDK版本与项目版本JDK不一致问题
Jenkins打包报错(maven-war-plugin版本问题)
解决Maven打war包报错Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war)
maven-war-plugin:2.2:war (default-war)
, 是 Maven 默认打 war 包用的插件,如果不指定版本,就默认用 2.2 版本。
Jenkins打包后无法执行scp命令远程部署包
jenkins执行shell脚本,使用scp免密传输失败问题
Host key verification failed:解决jenkins执行shell脚本,使用scp免密传输文件失败的问题
需要配置
jenkins
用户对远程linux主机免密ssh访问权限;
无法切换Jenkins用户
切换jenkins用户
su jenkins |
TIP:若切换后还是root账号,执行以下命令修改:
vim /etc/passwd |
修改/false
->/bash
# 修改前 |
TIP:若命令提示符的用户名不是
jenkins
而变成了bash-4.1$
,执行以下命令修改:
修改环境
vim ~/.bash_profile |
文件最后添加
export PS1='[\u@\h \W]\$' |
使环境生效
source ~/.bash_profile |
Jenkins用户无法执行sudo命令
sudo visudo |
jenkins ALL=(ALL) NOPASSWD: ALL |
验证切换jenkins用户
# 先切换到Jenkins用户 |
# 执行sudo命令切换Jenkins用户 |
配置Jenkins用户的ssh免密登录
生成Jenkins的密钥对
ssh-keygen -t rsa |
私钥:
/var/lib/jenkins/.ssh/id_rsa
公钥:
/var/lib/jenkins/.ssh/id_rsa.pub
配置对远程服务器免密登录
ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目标IP |
Jenkins打包远程执行脚本后Jenkins前端无法正常退出
jenkins 执行 shell脚本成功但构建任务一直未结束或超时
start.sh
脚本命令:
#!/bin/bash |
启动命令
cd /usr/local/services/ferry_sheet/ |
注意:需开启虚拟终端
Exec in pty