web-dev-qa-db-ja.com

githubアクションでのNPMインストールは "Enoent:そのようなファイルまたはディレクトリがありません" - 他の場所でうまくいきます

私は現在、私たちのドローンCIのインストールをGithubアクションで置き換えることに取り組んでいます。

アクションワークフロー私はこれまでのところ、次の.github/workflows/ci.ymlファイルに沸騰します。

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

ログ自体は、下の切り捨てられたリストの長いシリーズのnpm WARN tar ENOENT: no such file or directory ALAとして出てきます。

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'

私がオンラインで見つけたアドバイスはrm package-lock.jsonすることですが、私たちがロックされた私たちの依存関係の正確なバージョンでコードをテストする必要があるので、それは許容できるソリューションではありません。

さらに、私たちのpackage-lock.jsonファイルに問題があるとは思わないのは、ローカルで、ドローンCIのDroneの両方のインストールではまだnpm installから始まるのを始めません。

7
donatJ

長い待って、私はここで解決策を見つけました:

GitHub Actionsを使用してプライベートGitHubリポジトリからNPMモジュールをインストール

      - 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
      ...
 _

私は基本的にこれのすべてを私自身で試してみましたが、最も重要な部分は行方不明でした。

        with:
          persist-credentials: false
 _

actions/checkout@v2 gitの設定を持つデフォルトでは、デフォルトでgitの設定を伴い、insteadOfが正しく機能しないようにします。

0
donatJ