Хобрук: Ваш путь к мастерству в программировании

Как установить частный пакет github npm во время развертывания sls

Мое бессерверное развертывание CI / CD терпит неудачу, потому что не может установить частный пакет npm.

Ошибка ------------------------------------------------- -

Ошибка установки npm с кодом 1 npm ERR! код ENOENT npm ERR! syscall spawn git npm ERR! путь git npm ERR! errno ENOENT npm ERR! enoent Ошибка при выполнении: npm ERR! enoent undefined ls-remote -h -t ssh: //[email protected]/private-org/private-repo.git npm ERR! enoent npm ERR! enoent npm ERR! enoent spawn git ENOENT npm 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.12 Версия SDK: 2.3.1 Версия ядра компонентов: 1.1.2 Версия интерфейса командной строки компонентов: 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-ключ для использования безсерверного действия?


Ответы:


1

У меня были те же ошибки, что и у вас, и я по ошибке нашел решение. В circleCI serverless читал файл ~ / .npmrc, который содержал токен авторизации для частных пакетов npm, но не читал локальный файл проекта .npmrc, который содержал путь для пакетов частной компании.

Так что случайно скопируйте частный путь в ~ / .npmrc, и по волшебству развертывание t прошло успешно.

После этого я просто обновляю свой шаг circleCI, чтобы получить обе части информации в ~ / .npmrc

step_login_github_packages: &step_login_github_packages
  name: Log in to Github Packages
  command: |
    echo "//npm.pkg.github.com/:_authToken=$GITHUB_PACKAGES_TOKEN" >> ~/.npmrc
    echo "@my-company:registry=https://npm.pkg.github.com/my-company" >> ~/.npmrc
18.09.2020

2

Я придумал решение, но это означало, что мне пришлось отказаться от бессерверного действия.

  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 }}
29.05.2020
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..