1

我有以下设置

  • jenkins 在 docker 容器中运行
  • 在同级 docker 容器中,我运行一个私有 npm 注册表
  • 我使用 Docker Pipeline Plugin 和 Jenkinsfile 来构建 typescript 库(带有节点 docker 容器)
  • 我想将该库发布到该私有注册表,以便能够在其他构建作业中使用它

问题是,由于注册表在主机上的端口上运行,因此无法从构建脚本生成的 docker 容器中的 docker 访问它以构建 lib。我找不到有关如何在 jenkinsfile 中执行诸如 --net="host" (来自 docker run)之类的信息的信息。我想这会工作?!

知道如何改进设置以通过节点 docker 容器构建但能够发布到注册表吗?

4

1 回答 1

2

我通过将所有三个容器(jenkins、npm-registry 和为构建生成的容器)连接到同一个自定义 docker 网络来修复它。

当我使用 Ansible 配置整个 Jenkins 服务器时,我在 ansible 脚本中添加了以下内容:

  • 我创建了一个 docker 网络“Jenkins_network”
  • 我将詹金斯容器连接到该网络
  • 我将 npm-registry 容器连接到该网络

在我添加args '--net="jenkins_network"'到 docker 块的 jenkinsfile 中,现在是

pipeline {
  agent {
      docker {
          image 'node:lts-alpine'
          args  '--net="jenkins_network"'
      }
  }
  stages {
  ...
于 2020-06-30T17:10:24.947 回答