[英]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.