簡體   English   中英

npm 發布未使用私有 aws 代碼工件存儲庫

[英]npm publish is not using private aws code-artifact repo

我有一個 jenkins 作業試圖將 aa npm package 推送到私有 aws 代碼工件存儲庫。

這在我的機器上本地工作,但是當通過 jenkins 運行時,這會出錯。 jenkins 設置是將容器作為安裝了節點的從站運行。 這是我可以從筆記本電腦上發現的唯一區別。

這是構建日志: https://pastebin.com/fENQSG9w

+ cat -A /home/jenkins/.npmrc
registry=https://myorg-awsAccNo.d.codeartifact.us-east-1.amazonaws.com/npm/myrepo/$
//myorg-awsAccNo.d.codeartifact.us-east-1.amazonaws.com/npm/myrepo/:always-auth=true$
//myorg-awsAccNo.d.codeartifact.us-east-1.amazonaws.com/npm/myrepo/:_authToken=eyJ2ZXIiXXXXXXXXXxx2h99mC5RQp4El-0g$
+ cat -A .npmrc
cat: .npmrc: No such file or directory

我看到登錄的 aws cli 有效,它也使用身份驗證令牌在用戶級別設置了 .npmrc。 但是,在發布工件時,它會轉到https://registry.npmjs.org/@myscope%2ftest-poc-package而不是 npm 代碼工件位置。

從容器內的npm版本為:6.14.11

我在 jenkins 作業中添加了步驟,以列出用戶主目錄和項目主目錄中的 .npmrc 以及 npm 調試日志,但都沒有表明任何異常情況。

我無法讓它在我的設置中工作。 最終在我的 Jenkins 文件中完成了此操作。 在 env 部分中獲取 Artifact auth 令牌:

environment {
        CODEARTIFACT_AUTH_TOKEN = sh(script: "aws codeartifact get-authorization-token --duration-seconds 0 --domain mydomain --domain-owner xxxxxxxx --query authorizationToken --output text --endpoint-url https://vpce-xxxxxxx-xxxxxxx.api.codeartifact.us-east-1.vpce.amazonaws.com" , returnStdout: true).trim()
    }

然后將其添加為構建步驟的一部分

stage('Build and Publish'){
  steps{
        sh '''
            npm config set registry 'https://mydomain-xxxxxxxxx.d.codeartifact.us-east-1.amazonaws.com/npm/myrepo/'
            npm config set '//mydomain-xxxxxxxxx.d.codeartifact.us-east-1.amazonaws.com/npm/myrepo/:always-auth' 'true'
            npm config set '//mydomain-xxxxxxxxx.d.codeartifact.us-east-1.amazonaws.com/npm/myrepo/:_authToken' '${CODEARTIFACT_AUTH_TOKEN}'
        '''
        sh  'npm run build'
        sh  'npm publish'
      }
  }

這有助於設置存儲庫及其令牌,我能夠讓 npm 使用 AWS CodeArtifact 作為存儲庫。

暫無
暫無

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

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