我的CI / CD无服务器部署失败,因为它无法安装私有npm软件包。
错误----------------------------------------------- ---
npm安装失败,代码为1npm ERR!代码ENOENTnpm ERR! syscall生成gitnpm ERR!路径gitnpm ERR! errno ENOENTnpm ERR! enoent执行时出错:npm ERR! enoent未定义ls-remote -h -t ssh://[email protected]/private-org/private-repo.gitnpm ERR!天生的npm ERR!天生的npm ERR! enoent生成git ENOENTnpm ERR! enoent这与npm无法找到文件有关。npm ERR! enoent
npm ERR!可以在以下位置找到此运行的完整日志:npm ERR! /github/home/.npm/_logs/2020-05-28T13_30_18_595Z-debug.log
at ChildProcess.child.on.exitCode (/github/workspace/node_modules/serverless-webpack/lib/utils.js:91:16) at ChildProcess.emit (events.js:198:13) at ChildProcess.EventEmitter.emit (domain.js:448:20) at maybeClose (internal/child_process.js:982:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
来自上一个事件:在PluginManager.invoke(/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:505:22)在PluginManager.spawn(/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:525:17)在ServerlessWebpack.BbPromise.bind.then.then.then(/github/workspace/node_modules/serverless-webpack/index.js:91:53)在runCallback(timers.js:705:18)在tryOnImmediate(timers.js:676:5)在processImmediate(timers.js:658:5)在process.topLevelDomainCallback(domain.js:126:23)
获得支持--------------------------------------------文件:docs.serverless.com错误:github.com/serverless/serverless/issues问题:forum.serverless.com您的环境信息---------------------------作业系统:linux节点版本:10.20.1框架版本:1.54.0插件版本:3.6.12SDK版本:2.3.1组件核心版本:1.1.2组件CLI版本:1.4.0
deploy:
name: deploy
needs: test
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@v1
with:
node-version: '12.x'
- uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: npm install
run: npm install
- name: serverless deploy
uses: serverless/github-action@master
with:
args: deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SLS_DEBUG: true
通常,我使用webfactory/[email protected]解决此问题,因此第一个npm安装在这里工作正常,并且可以使用提供的SSH密钥设法安装私有软件包。
但是,在无服务器部署期间,出现了以上错误,它无法安装私有npm软件包。有没有一种方法可以指定SSH密钥供无服务器操作使用?
我提出了一个解决方案,但这意味着我不得不放弃无服务器操作。
deploy:
name: deploy
needs: test
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@v1
with:
node-version: '12.x'
- uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: deploy
run: |
npm i -g serverless
npm install
serverless config credentials --provider aws --key $AWS_ACCESS_KEY_ID --secret $AWS_SECRET_ACCESS_KEY
sls deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}