Penyebaran tanpa server CI/CD saya gagal karena tidak dapat menginstal paket npm pribadi.

Kesalahan -------------------------------------------------- -

npm install gagal dengan kode 1 npm ERR! kode ENOENT npm ERR! syscall spawn git npm ERR! jalur git npm ERR! errno ENOENT npm ERR! enoent Error saat menjalankan: npm ERR! enoent undefined ls-remote -h -t ssh://git@github.com/private-org/private-repo.git npm ERR! masuk npm ERR! masuk npm ERR! enoent spawn git ENOENT npm ERR! enoent Ini terkait dengan npm tidak dapat menemukan file. npm ERR! baik-baik saja

npm ERR! Log lengkap dari proses ini dapat ditemukan di: 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)

Dari acara sebelumnya: di PluginManager.invoke (/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:505:22) di PluginManager.spawn (/usr/local/lib/node_modules/serverless/lib/ class/PluginManager.js:525:17) di ServerlessWebpack.BbPromise.bind.then.then.then (/github/workspace/node_modules/serverless-webpack/index.js:91:53) di runCallback (timers.js:705 :18) di tryOnImmediate (timers.js:676:5) di processImmediate (timers.js:658:5) di process.topLevelDomainCallback (domain.js:126:23)

Dapatkan Dukungan -------------------------------------------- Dokumen: dokumen. serverless.com Bug: github.com/serverless/serverless/issues Masalah: forum.serverless.com Informasi Lingkungan Anda --------------- - Sistem Operasi: linux Versi Node: 10.20.1 Versi Kerangka: 1.54.0 Versi Plugin: 3.6.12 Versi SDK: 2.3.1 Komponen Versi Inti: 1.1.2 Komponen Versi 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/ssh-agent@v0.2.0
      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

Biasanya saya menyelesaikan ini menggunakan webfactory/ssh-agent@v0.2.0 sehingga instalasi npm pertama berfungsi dengan baik di sini dan berhasil menginstal paket pribadi menggunakan kunci SSH yang disediakan.

Namun selama penerapan tanpa server saya mendapatkan kesalahan di atas dan tidak dapat menginstal paket npm pribadi. Apakah ada cara saya dapat menentukan kunci SSH untuk tindakan tanpa server untuk digunakan?

1
Kay 28 Mei 2020, 17:02

2 jawaban

Jawaban Terbaik

Saya telah menemukan solusi tetapi itu berarti saya harus menjauh dari tindakan tanpa server.

  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/ssh-agent@v0.2.0
      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 }}
0
Kay 29 Mei 2020, 08:59

Saya memiliki kesalahan yang sama seperti yang Anda lakukan dan karena kesalahan, saya menemukan solusinya. Di circleCI, tanpa server membaca file ~/.npmrc yang berisi token otorisasi untuk paket npm pribadi, tetapi tidak membaca file .npmrc proyek lokal yang berisi jalur untuk paket perusahaan swasta.

Jadi secara tidak sengaja menyalin jalur pribadi ke ~/.npmrc dan secara ajaib penyebarannya berhasil.

Setelah itu saya hanya memperbarui langkah circleCI saya untuk mendapatkan kedua informasi di ~/.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
1
Marcelo Olandim 18 September 2020, 08:24