Запустите команду в Docker с декларативным конвейером Jenkins. - PullRequest
0 голосов
/ 23 мая 2019

Мой Дженкинс работает в Докере.У меня есть простой Dockerfile, который имеет только npm install.

Я использую декларативный конвейер Jenkins, поэтому он создает и запускает контейнер, но когда я запускаю npm run test Jenkins выдает ошибку, что Jest не существует и

npm WARN Local package.json exists, but node_modules missing, did you mean to install?

хотя при сборке образа * должен быть установлен node_modules

Step 4/5 : RUN npm install --unsafe-perm ---> Using cache.

Dockerfile

WORKDIR /app
COPY package*.json /app/
RUN npm install --unsafe-perm
COPY ./ /app/

Jenkinsfile

pipeline {
    agent {
        dockerfile {
            filename 'docker/Dockerfile.test'
            dir '.'
        }
    }
    stages {
        stage ('Test') {
            steps {
                sh 'npm run test'
            }
        }
    }
}

Выход на консоль Jenkins

+ docker build -t b4508423f0c768b0e72e947a272772d60a2bb495 -f ./docker/Dockerfile.test .
Sending build context to Docker daemon  5.959MB

Step 1/5 : FROM node:8-alpine
 ---> 75a2ffce2f88
Step 2/5 : WORKDIR /app
 ---> Using cache
 ---> 8fe07f9e374f
Step 3/5 : COPY package*.json /app/
 ---> Using cache
 ---> 118fc7d484b4
Step 4/5 : RUN npm install --unsafe-perm
 ---> Using cache
 ---> 0bd115e6b70a
Step 5/5 : COPY ./ /app/
 ---> Using cache
 ---> 58a55b1c72ff
Successfully built 58a55b1c72ff
Successfully tagged b4508423f0c768b0e72e947a272772d60a2bb495:latest
[Pipeline] dockerFingerprintFrom
[Pipeline] }
[Pipeline] // stage
[Pipeline] sh
+ docker inspect -f . b4508423f0c768b0e72e947a272772d60a2bb495
.
[Pipeline] withDockerContainer
Jenkins seems to be running inside container 95d484a9ea8a1a1377e19ac13a5303935bf3530c466b6dd88dba48798c98b00a
$ docker run -t -d -u 0:0 -w /var/jenkins_home/workspace/customers_survey_front --volumes-from 95d484a9ea8a1a1377e19ac13a5303935bf3530c466b6dd88dba48798c98b00a -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** b4508423f0c768b0e72e947a272772d60a2bb495 cat
$ docker top 7b36043b2385a5e5a65de07284e14002bf5b59ec56724f575202fa9193d0ecf9 -eo pid,comm
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 15 min
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
+ npm run test

> customers_survey@1.0.0 test /var/jenkins_home/workspace/customers_survey_front
> jest

sh: jest: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! customers_survey@1.0.0 test: `jest`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the customers_survey@1.0.0 test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

1 Ответ

0 голосов
/ 23 мая 2019

Как уже упоминалось, здесь попробуйте использовать npm init до npm install.npm init создаст package.json на лету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...