簡體   English   中英

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

[英]Jenkinsfile / Docker : pointing to a "npm" private registry

我正在使用 Jenkinsfile 來構建和發布節點包。 在通常的結帳步驟之后,我使用以下代碼安裝我的組件。

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

它適用於默認注冊表 ( https://registry.npmjs.org )。 但是,如果一個包包含一個指向私有注冊表(可通過瀏覽器訪問)的.npmrc文件,那么它將失敗。

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

非常感謝:)

解決方案在這里: https ://docs.npmjs.com/docker-and-private-modules

基本上,您需要配置 npm 環境才能在npm install之前調用私有注冊表。 在你的機器上你會做一些像npm login這樣的交互,但不適合 docker 構建!

基本上,您需要訪問外部網絡。 為此,請嘗試使用以下代碼 -

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

如果上述代碼也不起作用,您始終可以在根級別的 docker 容器中創建自己的 custom.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'
   }
}

花了一個星期后,我發現了一些多么合理的方法。 只需添加

運行 git config --global url."https://${GIT_ACCESS_TOKEN}@github.com".insteadOf "ssh://git@github.com"

到你的 docker 文件中,如果它也需要安裝私有包,它將安裝。

添加傳遞你的 GIT_ACCESS_TOKEN(你可以在你的 github 設置帳戶中設置適當的權限)在你構建圖像的地方。 像 docker build --build-arg GIT_ACCESS_TOKEN=yourtoken -t imageNameAndTag。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM