【问题标题】:Jenkins plugin repo as proxy repo when behind a corporate proxyJenkins 插件 repo 作为代理 repo,当在公司代理后面时
【发布时间】:2019-06-30 01:58:42
【问题描述】:

有没有办法或工具让我将jenkins plugin site 设置为代理存储库,以便在 Jenkins 中我可以从代理存储库而不是原始站点获取插件更新?

这个问题特别出现在您无法直接访问互联网的环境中。所以在我的场景中,我有一个可以访问互联网的Nexus Repo Server。 Jenkins 服务器没有。所以我的方法是

  1. 设置代理存储库(假设https://nexus.intra/repository/updates.jenkins.io/ 是https://updates.jenkins.io/ 的代理
  2. 配置 Jenkins,以便从代理存储库收集插件。因此我将插件 udate 站点配置为 https://nexus.intra/repository/updates.jenkins.io/update-center.json

这不起作用。我收到新插件的通知,但是当我尝试下载插件时,连接失败,因为在update-center.json 中,指向插件的指针仍然是https://updates.jenkins.io/。看这里...

updateCenter.post(
....
,"url":"http://updates.jenkins-ci.org/download/plugins/AnchorChain/1.0/AnchorChain.hpi",
....

那么有什么想法可以实现吗?

【问题讨论】:

    标签: jenkins artifactory nexus


    【解决方案1】:

    我实施的一个解决方案是在查询 updates.jenkins-ci.org 时修改 Jenkins 主机上的 hosts 文件以指向工件存储库。但是,这需要在您的工件存储库前使用反向代理。

    一步一步

    1. 在 Jenkins 主机上更新 hosts 文件如下
      <artifact repo ip> plugins.jenkins.io updates.jenkins.io updates.jenkins-ci.org mirrors.jenkins.io
      
    2. 在工件存储库前设置一个反向代理,用于处理 updates.jenkins.io、updates.jenkins-ci.org、plugins.jenkins.io 和 mirrors.jenkins.io 到您的工件存储库的流量

      如果您在 k8s 中运行您的工件 repo,您​​的 Ingress 可能如下所示:

      apiVersion: extensions/v1beta1
      kind: Ingress
      metadata:
      name: artifactory-repo-jenkins
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /artifactory/remote-generic-updates.jenkins/
          nginx.ingress.kubernetes.io/upstream-vhost: "artifactory.intra"
          nginx.ingress.kubernetes.io/ssl-redirect: "false"
      spec:
      tls:
      - hosts:
          - updates.jenkins.io
          - updates.jenkins-ci.org
          - mirrors.jenkins.io
          secretName: artifactory-jenkins-ingress-cert
      rules:
      - host: jenkins.intra
          http:
          paths:
          - backend:
              serviceName: artifactory-artifactory
              servicePort: 8081
              path: /
      - host: updates.jenkins.io
          http:
          paths:
          - backend:
              serviceName: artifactory-artifactory
              servicePort: 8081
              path: /
      - host: updates.jenkins-ci.org
          http:
          paths:
          - backend:
              serviceName: artifactory-artifactory
              servicePort: 8081
              path: /
      - host: mirrors.jenkins.io
          http:
          paths:
          - backend:
              serviceName: artifactory-artifactory
              servicePort: 8081
              path: /
      
    3. 如果你想使用 ssl,你必须创建一个证书,其中包含 url 作为备用名称。

      [req]
      distinguished_name = req_distinguished_name
      req_extensions = v3_req
      prompt = no
      [req_distinguished_name]
      C = CH
      O=My Company
      OU = Artifactory
      CN = jenkins.intra
      [v3_req]
      keyUsage = keyEncipherment, dataEncipherment
      extendedKeyUsage = serverAuth
      subjectAltName = @alt_names
      [alt_names]
      DNS.1 = jenkins.intra
      DNS.2 = updates.jenkins-ci.org
      DNS.3 = plugins.jenkins.io
      DNS.4 = updates.jenkins.io
      DNS.5 = mirrors.jenkins.io
      

    防火墙

    此外,如果您的连接受限,我建议您将所有 mirrors 列入您的工件存储库的白名单,以便它可以正确获取工件

    • plugins.jenkins.io
    • updates.jenkins-ci.org
    • mirrors.tuna.tsinghua.edu.cn
    • ftp.yz.yamagata-u.ac.jp
    • mirror.esuni.jp
    • mirrors.seville-jam.es
    • mirror.xmission.com
    • archives.jenkins-ci.org
    • ftp-chi.osuosl.org ftp-nyc.osuosl.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-23
      • 2022-10-24
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多