Не удается найти модуль 'joi' из index.js при запуске тестов Jests в Jenkins - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь, чтобы мои Jest-тесты (юнит-тесты) для моего кода React (внешнего интерфейса) выполнялись как часть моего конвейера Jenkins.Когда тесты запускаются в dev, они работают без проблем.Однако при запуске в Jenkins для всех моих тестов отображается следующая ошибка, например:

1002

Я добавил joi в мой package.json и даже запустил npm install для joi как часть шага jenkins, чтобы убедиться, что у меня есть пакет.Кроме того, я подтвердил в каталоге / node_modules , что joi существует.

Вот мой конфиг Jest:

  "jest": {
    "collectCoverage": true,
    "notify": true,
    "verbose": true,
    "transform": {
      ".*": "<rootDir>/node_modules/jest-css-modules"
    },
    "snapshotSerializers": [
      "enzyme-to-json/serializer"
    ],
    "coverageReporters": [
      "text",
      "cobertura"
    ],
    "moduleFileExtensions": [
      "",
      "js",
      "jsx",
      "json"
    ],
    "setupFiles": [
      "<rootDir>/test-env.js",
      "mock-local-storage",
      "./setupTests.js"
    ],
    "moduleNameMapper": {
      "^.+\\.(css|less|scss)$": "babel-jest"
    },
    "testPathIgnorePatterns": [
      "/node_modules/",
      "/Support/"
    ]
  }

Вот сценарий конвейера Jenkins:

#!/usr/bin/env groovy
def wraps(body) {
    wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm', 'defaultFg': 1, 'defaultBg': 2]) {
        wrap([$class: 'TimestamperBuildWrapper']) {
            body()
        }
    }
}

def notifySlack(String buildStatus = 'STARTED') {
    // Build status of null means success.
    buildStatus = buildStatus ?: 'SUCCESS'

    def color
    if (buildStatus == 'STARTED') {
        color = '#0673ce'
        wrap([$class: 'BuildUser']) {
        msg = "${buildStatus}: ${env.JOB_NAME} - #${env.BUILD_NUMBER} - `${env.ENVIRONMENT}` Started by user ${BUILD_USER}"
        }
    } else if (buildStatus == 'SUCCESS') {
        color = '#3ce04a'
        msg = "${buildStatus}: ${env.JOB_NAME} - #${env.BUILD_NUMBER} - `${env.ENVIRONMENT}`\n ${env.BUILD_URL}"
    } else if (buildStatus == 'UNSTABLE') {
        color = '#d14536'
        msg = "${buildStatus}: ${env.JOB_NAME} - #${env.BUILD_NUMBER} - `${env.ENVIRONMENT}`\n ${env.BUILD_URL}"
    } else {
        color = '#d14536'
        msg = "${buildStatus}: ${env.JOB_NAME} - #${env.BUILD_NUMBER} - `${env.ENVIRONMENT}`\n ${env.BUILD_URL}"
    }

    print msg
    slackSend(color: color, message: msg)
}

node() {
    try{
        notifySlack()
        wraps {
            stage('Clear Workspace') {
                deleteDir()
            }

            stage('Docker cleanup'){
                build job: 'cleanup-docker'
            }

            stage('Terraform build for Staging Environment'){
                if(env.Environment == 'STAGING'){
                    build job: 'BUILD-Terraform-Env',
                        parameters: [[$class: 'StringParameterValue', name: 'BRANCH', value: String.valueOf(BRANCH)]]
                }
            }

            stage('SCM Checkout') {
                checkout([
                    $class: 'GitSCM', branches: [[name: '*/${BRANCH}']],
                    userRemoteConfigs: [[url: '${GIT_SERVER}',credentialsId:'xxxxxxx']]
                ])
            }

            stage('Git Config'){
                sh "git config push.default current"
            }

            stage('Dist Cleanup'){
                dir ('assets') {
                    sh "rm -rf dist"
                }
            }

         stage('NPM Install & Test'){
             try {
                 dir ('assets') {
                    sh "npm i"
                    sh "npm run test"
                 }
                }
            finally {
                 [$class: 'CoberturaPublisher', coberturaReportFile: 'output/coverage/jest/cobertura-coverage.xml']
            }
         }

            stage('NPM Build'){
                dir ('assets') {
                    sh "npm run build"
                }
            }

            stage('Docker Build and Publish'){
                app = docker.build("myapp", "-f Dockerfile-ECS --pull --rm .")
                sh "`aws ecr get-login --region eu-west-1`"
                docker.withRegistry('https://9871259817.dkr.ecr.eu-west-1.amazonaws.com') {
                    app.push("${BRANCH}-${BUILD_NUMBER}")
                }
            }

            stage('Deploy on ECS'){
                sh "ecs deploy --region eu-west-1 MYAPP-\${Environment} newjavascript-app -t \${BRANCH}-\${BUILD_NUMBER} --timeout 600 --ignore-warnings"
            }

            stage('Version Bump'){
                if(env.Environment == 'PROD'){
                    dir ('assets') {
                        sh "npm run patch"
                    }
                }
            }

            stage('Git Push'){
                sh "git push origin HEAD:\${BRANCH}"
                sh "git push --tags"
            }

            stage('Docker cleanup'){
                build job: 'cleanup-docker'
            }
        }
    } catch (e) {
        currentBuild.result = 'FAILURE'
        throw e
    } finally {
        notifySlack(currentBuild.result)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...