Jenkinsfile / Docker:指向“ npm”私有注册表

时间:2019-01-01 21:27:23

标签: node.js docker jenkins npm jenkins-pipeline

我正在使用Jenkinsfile构建和发布节点程序包。 在通常的结帐步骤之后,我使用以下代码安装组件。

node {
    docker.image('node').inside {
        sh 'npm install'
    }
}

它与默认注册表(https://registry.npmjs.org)兼容。但是,如果程序包包含指向私有注册表(可通过浏览器访问)的.npmrc文件,则它将失败。

如何通过Jenkinsfile生成的docker容器指向私有寄存器?

非常感谢:)

2 个答案:

答案 0 :(得分:1)

基本上,您需要访问外部网络。为此,请尝试使用以下代码 -

node {
docker.image('node').inside("--net='bridge' -u root") {
    sh 'npm install'
   }
}

如果上述代码也不起作用,您始终可以在根级别的 docker 容器中创建自己的自定义 .npmrc 文件。这肯定会确保所有其他 npm 注册表都可以在 docker 容器内访问。

node {
docker.image('node').inside("--net='bridge' -u root") {
       def data = "${npmrc}" //your custom npmrc data
       writeFile(file: '.npmrc', text: data) //create a new file named .npmrc
       sh 'npm install'
   }
}

答案 1 :(得分:0)

此处的解决方案:https://docs.npmjs.com/docker-and-private-modules

基本上,您需要配置npm环境以能够在npm install之前调用私有注册表。在您的计算机上,您将执行类似npm login的操作,该操作是交互式的,不适合docker构建!