Использование кипариса за прокси в конвейере Jenkins - PullRequest
0 голосов
/ 12 июня 2018

Я видел это на github, но все еще не смог получить cypress для правильной настройки / загрузки.В моем конвейере jenkins я запускаю npm install, но из-за прокси-сервера происходит тайм-аут.Он загружает все остальные зависимости ожидают cypress.

Что я сделал, так это скачал cypress и поместил zip-файл в проект.Затем я запускаю sh "setCYPRESS_INSTALL_BINARY=cypress.zip npm i cypress", но это все равно не удается.

Часть, которая выходит из строя в конвейере Jenkins:

   sh "npm config set proxy http://<proxy>"
   sh "npm config set registry http://<proxy>/"
   sh "setCYPRESS_INSTALL_BINARY=cypress.zip npm i cypress"
   sh "npm i"
   sh "npm run build 

Как можно запустить npm i без загрузки Cypress.В настоящее время я не могу пройти эту строку sh "setCYPRESS_INSTALL_BINARY=cypress.zip npm i cypress", но я также обеспокоен тем, что npm i по-прежнему будет пытаться загрузить Cypress после того, как setCYPRESS_INSTALL_BINARY на самом деле работает

------------------------- Update One -----------------

Я обновил Jenkinsfile, чтобы иметь CYPRESS_INSTALL_BINARY=cypress.zip npm i, но теперь яполучите ошибку ниже.Cypress.zip сейчас в проекте, но очень хотелось бы, чтобы он был загружен в Jenkins и просто указывал путь к файлу в моем Jenkinsfile.

Я не уверен, что это возможно, и самое простое решение - это то, которое яя делаю, я думаю, однако это не удается.

Новая ошибка:

[view] Running shell script

+ CYPRESS_INSTALL_BINARY=cypress.zip

+ npm install

npm WARN locking Error: EIO: i/o error, open '/home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock'

npm WARN locking  /home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock failed { Error: EIO: i/o error, open '/home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock'

npm WARN locking   stack: 'Error: EIO: i/o error, open \'/home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock\'',

npm WARN locking   errno: -5,

npm WARN locking   code: 'EIO',

npm WARN locking   syscall: 'open',

npm WARN locking   path: '/home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock' }

npm ERR! path /home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock

npm ERR! code EIO

npm ERR! errno -5

npm ERR! syscall open

npm ERR! EIO: i/o error, open '/home/jenkins/.npm/_locks/staging-c21b8f081f002623.lock'

script returned exit code 251

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

У меня были похожие проблемы в среде Windows.Я поместил cypress.zip в корневую папку проекта.

set CYPRESS_INSTALL_BINARY=cypress.zip
echo %CYPRESS_INSTALL_BINARY%
npm install cypress --save-dev

Таким образом, установка не сработала, потому что исполняемый файл npm ищет кипарис в <your project folder>\node_modules\cypress\

Попробуйте установить для CYPRESS_INSTALL_BINARY абсолютное значениепуть.

0 голосов
/ 12 июня 2018

Я предполагаю, что вы используете Linux, поэтому способ установки environment variable - CYPRESS_INSTALL_BINARY='cypress.zip' ("set " используется только в Windows)

Cypress будет не попробуйте загрузить двоичный файл, если он найден в системе, даже при повторном запуске npm install.По умолчанию Cypress загружает двоичный файл в ~/.cache/Cypress, поэтому при последующих сборках Cypress не придется извлекать zip , если этот каталог сохраняется между сборками.

Следующее должно работать:

CYPRESS_INSTALL_BINARY='cypress.zip` npm install

нет необходимости явно запускать npm install cypress

Затем убедитесь, что каталог ~/.cache сохранен после и восстановлен до npm install между сборками.

или

Предварительно распакуйте файл cypress.zip в систему сборки до /Cypress и используйте следующее:

CYPRESS_INSTALL_BINARY=0 npm install  ## Don't install the binary!
CYPRESS_RUN_BINARY='Cypress/Cypress'  ## this is the Cypress executable!

еще раз, убедитесь, что /Cypress сохраняется во всех сборках

Что если я не кеширую ~/.cache?

Что ж, ваша сборка все равно будет работать, но займет больше времени, так как Cypress будет иметьизвлекать свой двоичный файл при каждой сборке .Подробнее здесь о кэшировании двоичного файла в CI

...

Редактирование: для обновления вопроса

Вы по-прежнему неправильно устанавливаете переменные среды, Это не будет работать :

CYPRESS_INSTALL_BINARY='cypress.zip'
npm install

Вам нужно сделать:

CYPRESS_INSTALL_BINARY='cypress.zip' npm install

В одна строка .

или

export CYPRESS_INSTALL_BINARY='cypress.zip'
npm install

-> Почему здесь

...