web-dev-qa-db-fra.com

L'installation de NPM dans GitHub Action échoue avec "Enoent: aucun fichier ou répertoire de ce type" - fonctionne bien ailleurs

Je travaille actuellement sur le remplacement de notre installation de drone CI avec des actions GitHub.

Le flux de travail d'action que j'ai jusqu'à présent se résume à ce qui suit .github/workflows/ci.yml fichier:

on: [ Push, pull_request ]

name: CI
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install Node
        uses: actions/setup-node@v1
        with:
          node-version: '13.x'

      - name: Install Dependencies
        run: npm install

Le journal lui-même sort comme une longue série de npm WARN tar ENOENT: no such file or directory ALA La liste tronquée ci-dessous.

2020-04-29T21:15:31.7899082Z npm install
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/acorn-26d8ba97/dist/acorn.js.map'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/coffeescript-acee515b/lib/coffee-script/register.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/coffeescript-acee515b/lib/coffee-script/repl.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/coffeescript-acee515b/lib/coffee-script/rewriter.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/tslint-c216b578/LICENSE'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/eslint-cd3dbe58/LICENSE'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/eslint-cd3dbe58/README.md'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/TypeScript-b4b55d18/lib/diagnosticMessages.generated.json'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/jquery-1794793b/dist/jquery.min.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/lodash-05c1df31/fp/_convertBrowser.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/lodash-70e4a396/fp/_convertBrowser.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/lodash-79f5ae17/fp/_convertBrowser.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/lodash-e49b02f6/fp/_convertBrowser.js'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/lodash-16fa050d/fp/_convertBrowser.js'

Le conseil que j'ai trouvé en ligne est à rm package-lock.json Mais ce n'est pas une solution acceptable, car je dois tester notre code avec les versions exactes de nos dépendances que nous avons verrouillées.

En outre, je ne crois pas qu'il y ait quelque chose de mal avec notre fichier paquet-serrure.json pour commencer, car il est toujours npm install est comme prévu à la fois localement et sur notre installation de drone CI.

7
donatJ

À attendre longtemps, j'ai trouvé la solution ici:

Installez un module NPM à partir d'un référentiel github privé à l'aide de GitHub Actions

      - uses: actions/checkout@v2
        with:
          persist-credentials: false
      - uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - run: git config --global url."https://${{ secrets.PAT }}@github.com/".insteadOf ssh://[email protected]/
      - run: npm ci
      ...

J'avais essentiellement essayé tout cela seul, mais la partie la plus importante manquait:

        with:
          persist-credentials: false

actions/checkout@v2 volonté par défaut avec certains paramètres pour GIT et prévenir insteadOf de fonctionner correctement.

0
donatJ