Jenkins从Ubuntu迁移至AlmaLinux问题及相关解决记录

相关背景

之前在Ubuntu平台上搭建了Jenkins(在Ubuntu机器上使用war包安装Jenkins),现在由于一些需求,需要将系统迁移到AlmaLinux平台。由于AlmaLinux属于CentOS系列,与Ubuntu所属的Debian系列不同,在此记录一下迁移中遇到的问题。

问题1:账号没有sudo权限

现象:根据Linux机器自建账号并赋予sudo权限,同时修改远程端口创建CentOS的账号并加入wheel组后,发现新账号无法sudo

解决:/etc/sudoers文件中,wheel组的sudo权限被默认注释,需取消注释使其生效

文件默认为只读,可通过chmod u+w /etc/sudoers增加写权限,编辑完成后通过chmod u-w /etc/sudoers撤销写权限,也可以编辑后使用:wq!来强制保存

%wheel  ALL=(ALL)       ALL

或者可以选择将用户加入sudoers组,不过用户在sudo时会不需要输入密码

gpasswd -a <username> sudoers

问题2:ssh无法通过密码登录

现象:/etc/ssh/sshd_config中PasswordAuthentication设为yes,但ssh远程时,依旧提示公钥验证失败,只能通过在authorized_keys中添加公钥来登录

解决:sshd_config中include了sshd_config.d文件夹中的配置,该配置优先级高于sshd_config文件(sshd_config.d文件夹中同名配置,文件名靠前的覆盖靠后的),其中将PasswordAuthentication设为了no,修改对应配置后可以通过密码远程

问题3:中文显示乱码,且执行yum命令时提示"Failed to set locale, defaulting to C.UTF-8"

现象:拷贝到系统中的文件中,中文显示乱码,本地执行yum命令,第一行会提示"Failed to set locale, defaulting to C.UTF-8"

解决:调整系统语言环境

首先切换至root账号,并安装语言包

yum install glibc-langpack-zh
yum install glibc-langpack-en

然后设置语言环境

echo "export LC_ALL=en_US.UTF-8" >> /etc/profile
source /etc/profile

之后再运行yum命令就不会有该提示了,中文也能正常显示

问题4:启动jenkins提示权限不够

现象:根据在Ubuntu机器上使用war包安装Jenkins添加jenkins.sh后,执行./jenkins.sh start提示权限不够

解决:文件没有执行权限,先执行一次chmod +x jenkins.sh后,即可执行

问题5:maven执行时,未使用系统指定的jdk

现象:系统执行java -versionjavac -version返回的是jdk 8,但执行mvn -v返回使用的是jdk 11

解决:通过查看/usr/bin/mvn的内容可以发现,当系统环境变量未指定JAVA_HOME时,会使用/etc/java/maven.conf中的配置,而yum安装maven时,会默认附带安装jdk 11,并在其中将配置指向jdk 11,注释掉该配置后,会使用系统默认jdk

问题6:jenkins无法通过ssh私钥连接node机器

现象:之前未解决问题2时,无法通过密码连接节点机,因此改用密钥形式,在节点机authorized_keys添加公钥,jenkins添加私钥凭据,但是连接节点机失败

解决:旧版本jenkins(我的是2.356)不支持较新的ssh密钥,之前是通过ssh-keygen -t rsa -C "almallinux jenkins"来生成密钥,现改用旧版本的密钥生成方式

ssh-keygen -m PEM -t rsa -C "almalinux jenkins"

问题7:Jenkins Start Job(Jenkins中HTML报告无法正常显示问题解决)执行失败

现象:执行job时,报错"org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException: script not yet approved for use"

解决:在Manage Jenkins → In-process Script Approval中审批通过该脚本

问题8:Jenkins控制台输出中文显示乱码,且代码中中文无法正常展示,中文名任务无法在节点机创建目录

现象:Jenkins控制台输出无法正常显示中文,脚本中有中文无法执行,发送邮件中文乱码,执行中文名称任务会直接失败

解决:修改环境变量和启动配置

  1. 节点机配置中,JVM选项设置-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8

  2. 启动Jenkins的脚本中,增加JVM参数-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8(原文章中的脚本已修改)

  3. Jenkins系统设置的全局属性中,增加环境变量,键为JAVA_TOOL_OPTIONS,值为-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8

  4. 设置系统环境变量

    echo "export JAVA_TOOL_OPTIONS=\"-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8\"" >> /etc/profile
    source /etc/profile
    
相关推荐
可涵不会debug几秒前
C语言文件操作:标准库与系统调用实践
linux·服务器·c语言·开发语言·c++
ghx_echo3 分钟前
linux系统下的磁盘扩容
linux·运维·服务器
xiao-xiang7 分钟前
jenkins-通过api获取所有job及最新build信息
前端·servlet·jenkins
小张认为的测试9 分钟前
Liunx上Jenkins 持续集成 Java + Maven + TestNG + Allure + Rest-Assured 接口自动化项目
java·ci/cd·jenkins·maven·接口·testng
幻想编织者39 分钟前
Ubuntu实时核编译安装与NVIDIA驱动安装教程(ubuntu 22.04,20.04)
linux·服务器·ubuntu·nvidia
利刃大大2 小时前
【Linux入门】2w字详解yum、vim、gcc/g++、gdb、makefile以及进度条小程序
linux·c语言·vim·makefile·gdb·gcc
飞行的俊哥7 小时前
Linux 内核学习 3b - 和copilot 讨论pci设备的物理地址在内核空间和用户空间映射到虚拟地址的区别
linux·驱动开发·copilot
hunter2062069 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
不会飞的小龙人9 小时前
Docker Compose创建镜像服务
linux·运维·docker·容器·镜像
不会飞的小龙人9 小时前
Docker基础安装与使用
linux·运维·docker·容器