npm publish 没有使用私人 aws code-artifact repo
npm publish is not using private aws code-artifact repo
我有一项 jenkins 工作,试图将 npm 包推送到私有 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 调试日志,其中 none 表明任何异常情况。
我无法在我的设置中使用它。
最终在我的 Jenkins 文件中完成了这个。
在 env 部分获取 Artifact 身份验证令牌:
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 作为存储库。
我有一项 jenkins 工作,试图将 npm 包推送到私有 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 调试日志,其中 none 表明任何异常情况。
我无法在我的设置中使用它。 最终在我的 Jenkins 文件中完成了这个。 在 env 部分获取 Artifact 身份验证令牌:
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 作为存储库。