Linux环境下jenkins插件Gerrit Trigger配置--"/var/lib/jenkins/.ssh/id_rsa" does not exist.

本文介绍如何使用Gerrit+Jenkins+GerritTrigger实现代码审查及静态代码扫描,包括配置Jenkins上的GerritTrigger插件的具体步骤。

Gerrit可以实现在线代码Review的功能,与GitLab的merge request功能相当。目前想在Gerrit的基础上增加静态代码扫描的功能,以进一步提升代码质量。网上搜到的技术方案是:Gerrit + Jenkins + Gerrit Trigger。一句话概括就是:

1.在Jenkins上创建一个代码检查的工程,通过pom文件方式配置好第三方的静态代码扫描工具;
2.Jenkins通过Gerrit Trigger插件来侦听Gerrit一侧的代码变动,进而自动触发代码检查工程的构建和执行;
3.检查结果Jenkins以Reviewer的身份反馈给Gerrit。

详细见:Jenkins代码审查功能的实现方案

在Jenkins上配置Gerrit Trigger的过程中,”Username” 和 “SSH Keyfile”两项填写时总不得解。从官网上也没得到启示。参考了Stack OverFlow的解决办法

这里我给出终极答案:
1.”Username”,要填的是在gerrit应用中注册过的一个账号,比如我个人的gerrit账号是:changwenna001;
2.对于”SSH Keyfile”一项,
2.1 首先要确保目录真实存在;
默认安装完jenkins时,存在目录”/var/lib/jenkins”,但是不存在.ssh子目录,这需要手动创建(命令mkdir);
然后通过ssh-keygen命令生成私钥公钥;
2.2 将公钥内容粘贴到Gerrit的个人账号changwenna001里的SSH Public Keys里;
具体操作是通过vim命令打开id-rsa.pub,复制后,访问gerrit的web服务,settings->
SSH Public Keys->粘贴,Add。
2.3 在”SSH Keyfile”一项里填写“/var/lib/jenkins/.ssh/id_rsa”,如果提示文件不存在,则进行如下操作:
a.修改id_rsa俩文件的访问权限,确保公私钥对Linux环境里其他用户也是可读的,通过命令chmod来操作,例如:

[root@vm ~]# chmod 777 /var/lib/jenkins/.ssh
[root@vm ~]# cd /var/lib/jenkins/.ssh
[root@vm .ssh]# chmod 777 id_rsa*

我这里,给出了最高权限777。
再次尝试,如果jenkins还提示文件不存在,则第二招:
b.尝试修改id_rsa俩文件的用户归属。使用的命令是chown。

[root@vm ~]# cd /var/lib/jenkins/.ssh
[root@vm .ssh]# ll
total 8
-rwxrwxrwx 1 root root 1675 Jul 13 15:45 id_rsa
-rwxrwxrwx 1 root root  389 Jul 13 15:45 id_rsa.pub
[root@vm .ssh]# chown jenkins:jenkins id_rsa*
[root@vm .ssh]# ll
total 8
-rwxrwxrwx 1 jenkins jenkins 1675 Jul 13 15:45 id_rsa
-rwxrwxrwx 1 jenkins jenkins  389 Jul 13 15:45 id_rsa.pub

上述操作之后,就应该能解决”/var/lib/jenkins/.ssh/id_rsa” does not exist.的问题了。

附上ssh key的生成命令:

[root@vm .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RHnJYOv3HfjDxC6YbH+UQHbpe6H4UFdDSJF+U1+ajJw root@vm
The key's randomart image is:
+---[RSA 2048]----+
|        ++ ..o=o |
|       o..+ ooo.+|
|        o. +.* o*|
|       o    E===.|
|        S . +.Boo|
|         o * B+..|
|          = =.*. |
|         . . o.. |
|            ..   |
+----[SHA256]-----+
[root@vm .ssh]# cd /var/lib/jenkins/.ssh
[root@vm .ssh]# ll
total 8
-rwxrwxrwx 1 root root 1675 Jul 13 15:45 id_rsa
-rwxrwxrwx 1 root root  389 Jul 13 15:45 id_rsa.pub
Jenkins 构建过程中,如果出现 `settings.xml file does not exist in specified path` 错误,这通常意味着 Jenkins 在指定的路径中找不到 `settings.xml` 文件。`settings.xml` 是 Maven 项目中的关键配置文件,用于定义仓库、镜像、认证信息等。 ### 可能原因及解决方案 #### 1. **未正确配置 `settings.xml` 路径** - Jenkins 的构建任务可能指定了一个错误的 `settings.xml` 路径,或者该文件并未实际存在于该路径下。 - 确保在 Jenkins 配置中指定的 `settings.xml` 文件路径是正确的,并且 Jenkins 用户对该路径具有读取权限。 - 如果使用的是全局工具配置(如 Maven),可以在 Jenkins 的全局工具配置中设置默认的 `settings.xml` 路径。 #### 2. **文件未上传或缺失** - 检查 Jenkins 工作空间目录,确认 `settings.xml` 是否已经手动上传或通过版本控制系统(如 Git)同步到工作空间。 - 如果使用 Git 存储 `settings.xml`,确保该文件已被提交并推送到远程仓库,并且 Jenkins 的 SCM 配置指向了正确的分支和路径。 #### 3. **权限问题** - Jenkins 运行时使用的用户可能没有对 `settings.xml` 所在目录的访问权限。可以通过修改文件权限或调整 Jenkins 的运行用户来解决此问题。 - 使用以下命令更改文件权限: ```bash chmod 644 /path/to/settings.xml chown jenkins:jenkins /path/to/settings.xml ``` #### 4. **使用 Jenkins Credentials 或 Config File Provider 插件** - 推荐使用 Jenkins 的 **Config File Provider** 插件来管理 `settings.xml` 文件。该插件允许将配置文件作为受管理的资源注入到构建任务中,避免手动维护路径和权限问题。 - 安装插件后,在 Jenkins 的系统设置中上传 `settings.xml` 文件,并在构建任务中引用它。 #### 5. **Maven 构建命令中显式指定 `settings.xml`** -Jenkins 的构建命令中,可以显式指定 `settings.xml` 的路径,例如: ```bash mvn clean package --settings /path/to/settings.xml ``` - 这样可以绕过 Jenkins 默认查找机制,直接使用指定的配置文件。 #### 6. **Jenkinsfile 中配置 settings.xml** - 如果使用 Pipeline 项目,可以在 `Jenkinsfile` 中使用 `withMaven` 步骤并指定 `settingsXml` 参数: ```groovy pipeline { agent any stages { stage('Build') { steps { withMaven(maven: 'M3', mavenSettingsFilePath: '/path/to/settings.xml') { sh 'mvn clean package' } } } } } ``` ---
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值