Jenkins (в контейнере Docker) - установка npm завершается неудачно из-за ... npm WARN tar ENOENT: такого файла или каталога нет, futime - PullRequest
0 голосов
/ 04 января 2019

При запуске 'npm install' в контейнере Jenkins Docker я получаю следующие ошибки:

[INFO] --- exec-maven-plugin:1.6.0:exec (npm install) @ geosolutions ---
npm WARN tar ENOENT: no such file or directory, open '/var/jenkins_home/workspace/aproject2/node_modules/.staging/schema-utils-bdceae78/package.json'
npm WARN tar ENOENT: no such file or directory, open '/var/jenkins_home/workspace/aproject2/node_modules/.staging/schema-utils-bdceae78/README.md'
...(and many lines like) ...
npm WARN tar ENOENT: no such file or directory, futime
npm WARN tar ENOENT: no such file or directory, futime
npm WARN tar ENOENT: no such file or directory, futime
npm WARN tar ENOENT: no such file or directory, futime

Узлы-модули не генерируются. Только несколько в node_modules / .staging.

При входе в контейнер Jenkins Docker я могу это исправить, выполнив вручную:

  • rm -rf node_modules
  • rm -f package-lock.json
  • установка в минуту

В следующий раз, когда мне придется пропустить шаг 'npm install', начните прямо с 'ng build'. Тогда все работает хорошо. Конечно, это не достойный обходной путь. Следовательно, это НЕ дубликат вопроса.

Как мне сделать хорошую установку 'npm'?

В моем контейнере Jenkins есть установка Node / Npm. Npm - 6,5, а узел - 8, 9, 10 или 11. Все с самым новым npm 6,5.

Мое изображение Jenkins содержит этот код для добавления к нему npm / nodejs:

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_9.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh

Обновление: Сегодня у меня была такая же проблема в офисе. Два разных Jenkinsjobs запускают одну и ту же задачу Maven с помощью 'npm install'. Один в порядке, другой нет. Один Jenkinsjob запускается через многоотраслевой, другой как обычный конвейер. Хм, очень странно.

Я думаю, что это связано с операционной средой, поэтому $ PATH, переменные среды и т. Д.

1 Ответ

0 голосов
/ 09 января 2019

После разговора с несколькими экспертами и прочтения множества постов на форуме, ниже предлагается предлагаемый «обходной путь». Многие люди используют обходной путь. Я надеюсь, у вас есть лучшее решение, чем это. По крайней мере, этот обходной путь работает.

После обходного пути сборка Angular в Maven может идти следующим образом: сначала очистите рабочее пространство, особенно удалив папку node_modules и файл package-lock.json. Затем запустите установку npm и действие по сборке.

Если вы спешите после создания первой сборки, просто добавьте свойство 'maven.exec.skip' и запустите Maven с параметром -P maven.exec.skip = true. Затем этап очистки и установки npm пропускается; -)

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
      <execution>
        <id>npm clear workspace</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>initialize</phase>
        <configuration>
          <skip>${maven.exec.skip}</skip>
          <executable>rm</executable>
          <arguments>
            <argument>-rf</argument>
            <argument>node_modules</argument>
            <argument>package-lock.json</argument>
          </arguments>
        </configuration>
      </execution>
      <execution>
        <id>npm install</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>initialize</phase>
        <configuration>
          <skip>${maven.exec.skip}</skip>
          <executable>npm</executable>
          <arguments>
            <argument>install</argument>
          </arguments>
        </configuration>
      </execution>
      <execution>
        <id>build Angular production code</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>generate-resources</phase>
        <configuration>
          <executable>npm</executable>
          <arguments>
            <argument>run</argument>
            <argument>build</argument>
            <!--<argument>&#45;&#45;prod</argument>-->
          </arguments>
        </configuration>
      </execution>
    </executions>
  </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...