Как заставить Дженкинса запустить скрипт из определенного каталога? - PullRequest
0 голосов
/ 31 марта 2020

Я просто следовал этому учебнику, чтобы получить базовую c настройку React с Дженкинсом. В этом уроке они работают непосредственно в клиентской папке React, и теперь я пытаюсь получить установку, в которой клиентская папка вложена в родительский каталог, который является моим каталогом root, содержимое которого выглядит следующим образом:

Организатор (dir):

  • клиент (dir)
  • jenkins (сценарии, содержащие dir)
  • Jenkinsfile
  • node_modules (dir)
  • package. json
  • package-lock. json

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда Jenkinsfile:

pipeline {
    agent {
        docker {
            image 'node:6-alpine'
            args '-p 3000:3000'
        }
    }
    environment {
        CI = 'true'
    }
    stages {
        stage('Build') {
            steps {
                sh 'npm install'
            }
        }
        stage('Test') {
            steps {
                sh './jenkins/scripts/test.sh'
            }
        }
    }
}

вызывает тест. sh:

#!/usr/bin/env sh

echo 'The following "npm" command (if executed) installs the "cross-env"'
echo 'dependency into the local "node_modules" directory, which will ultimately'
echo 'be stored in the Jenkins home directory. As described in'
echo 'https://docs.npmjs.com/cli/install, the "--save-dev" flag causes the'
echo '"cross-env" dependency to be installed as "devDependencies". For the'
echo 'purposes of this tutorial, this flag is not important. However, when'
echo 'installing this dependency, it would typically be done so using this'
echo 'flag. For a comprehensive explanation about "devDependencies", see'
echo 'https://stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies.'
set -x
# npm install --save-dev cross-env
set +x

echo 'The following "npm" command tests that your simple Node.js/React'
echo 'application renders satisfactorily. This command actually invokes the test'
echo 'runner Jest (https://facebook.github.io/jest/).'
set -x
pwd
npm test

npm тест не распознается, потому что там, где скрипт запускается из /var/jenkins_home/workspace/organizer, не находится папка клиента, в которой находится пакет. json файл определяет, что делает npm test. Мне нужно как-то запустить '1038 * test' из папки клиента, которая является подкаталогом органайзера. Как мне go сделать это? Мне также пришло в голову, что установка npm также находится в неправильном месте. Журналы ошибок предоставляют следующее.

+ pwd

/var/jenkins_home/workspace/organizer

+ npm test


> organizer@1.0.0 test /var/jenkins_home/workspace/organizer

> echo "Error: no test specified" && exit 1


Error: no test specified

npm ERR! Test failed.  See above for more details.

script returned exit code 1```



1 Ответ

0 голосов
/ 31 марта 2020

Я изменил этап тестирования в своем Jenkinsfile, чтобы он соответствовал приведенному ниже, чтобы исправить мою проблему:

stage('Test') {
            steps {
                sh '''
                        cd client
                        ../jenkins/scripts/test.sh
                '''
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...