微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

npm publish 不使用私有 aws 代码工件存储库

如何解决npm publish 不使用私有 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

我看到用于登录的 aws cli 工作正常,它还使用身份验证令牌在用户级别设置 .npmrc。 但是,在发布工件时,它会转到 https://registry.npmjs.org/@myscope%2ftest-poc-package 而不是 npm 代码工件位置。

slave 容器内的 npm 版本是:6.14.11

我在 jenkins 作业中添加了步骤,以列出用户主页和项目主页中的 .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'
      }
  }

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。