【问题标题】:How to disable Jenkins checkout and git plugin SSL verify?如何禁用 Jenkins 结帐和 git 插件 SSL 验证?
【发布时间】:2021-12-24 14:14:57
【问题描述】:

我正在 K8s 节点中运行 Jenkins 代理。 我在 dockerfile 中添加了git config --global http.sslVerify false。我也在 dockerfile 中添加了~/.gitconfig。 我尝试在管道中使用 Jenkins checkout 和 git 来获取代码,但出现以下错误:

 stderr: fatal: unable to access 'https://gitlab-ops.prod.hccn/iac/gitops/vsphere_linux.git/': SSL certificate problem: unable to get local issuer certificate

但如果我用sh git clone 命令替换它们,就可以了。

所以这是我的问题:

  1. git config --global http.sslVerify false 仅适用于 git 命令,不适用于 Jenkins checkout 和 git,对吗?因为git命令是sh命令,而Jenkinscheckoutgit是某种Java插件?
  2. Jenkins checkout 是否也引用了 git 或 gitclient 插件?
  3. 如何禁用 Jenkins checkout 和 git 插件 SSL 验证?我在 jenkins git-client plugin 或 jenkins git plugin 或 jenkins scm plugin 上找不到它们

补充:

  1. 我在每个 k8s 节点上运行 git config --global http.sslVerify false
  2. Jenkins 版本为 2.277.4
  3. Jenkins Git 插件版本为 4.7.1
  4. Jenkins Git 客户端插件版本为 3.7.1

补充2:

我有 2 个 git 项目。 Jenkinsfile 在第一个,在 Jenkins Job 中配置。默认结帐运行良好。在管道运行期间,它会尝试在 Jenkins 代理上拉出另一个 git 项目,这就是问题所在。

【问题讨论】:

    标签: git ssl jenkins jgit


    【解决方案1】:

    使用Jenkins Git client plugin,我会避免使用JGit(设置在this setting)

    我愿意:

    • 选择 Git
    • 确保 git 位于 Jenkins 控制器(以前称为“master”)的 $PATH 中

    然后将强制执行全局设置 http.sslVerify。
    虽然,作为seen here,JGit 也应该能够读取相同的设置。

    来自the comments/discussion,OP Bryan Chen 添加:

    我有两个 git 项目。
    Jenkinsfile 在第一个,在 Jenkins Job 中配置。默认结帐运行良好。
    在管道运行期间,它会尝试在 Jenkins 代理上拉另一个 git 项目,这就是问题所在。

    这意味着根本原因似乎在作为代理(在容器中)执行作业的容器中,而不是在主 Jenkins 控制器中。

    【讨论】:

    • 你好,@VonC。我当前的 git 选择是git,.gitconfig 位置是 /root/ 并且已经生效。我可以通过git config --list 看到它,Jenkins 进度 UID 是 root。同时,我在docker(K8s节点的Jenkins代理)中运行git config --list,也生效了。正如我所提到的,sh git 可以,但 Jenkins checkout 和 git 函数不行。
    • @BryanChen 然后仔细检查 Jenkins 控制器使用哪个帐户运行,并尝试在控制器上执行作业,使用简单的脚本步骤git config --global -l
    • 你好@Vonc,这是命令输出:ps -ef | grep jenkins:root 2362 1 0 Nov04 ? 00:46:46 /etc/alternatives/java ........Omit some parameters。 Git 配置生效:git config --global -l:http.sslverify=false
    • 这里是完整的输出:root 2362 1 0 Nov04 ? 00:46:46 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Xmx4096m -Dorg.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator.websocketConnectionTimeout=60 -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=9080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
    • @BryanChen 为什么以 root 身份运行 Jenkins?这通常是读取错误全局 Git 配置的原因。
    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多