NPM发布没有使用私有的aws代码构件库



我有一个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

我看到用于登录的命令行可以工作,它还在用户级别上使用验证令牌设置了.npmrc。但是,当要发布工件时,它会转到https://registry.npmjs.org/@myscope%2ftest-poc-package,而不是npm代码-工件位置。

从容器中的npm版本为:6.14.11

我在jenkins作业中添加了一些步骤,列出了用户home和项目home中的.npmrc,以及npm调试日志,这些都没有显示出任何异常。

我无法让这个在我的设置中工作。最终在我的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'
}
}

这有助于设置repo及其令牌,并且我能够让npm使用AWS CodeArtifact作为repo。

相关内容

  • 没有找到相关文章

最新更新