Я столкнулся с проблемой. Я хочу сначала установить зависимости в приложении, когда я запускаю задание, а затем запускаю его. Вот моя конфигурация конвейера jenkins:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'npm install'
}
}
stage('Run') {
steps {
sh 'npm start &'
}
}
}
}
Все строится без ошибок
Но приложение, к сожалению, не запускается. Помогите пожалуйста, вот логи:
Started by user admin
Obtained Jenkinsfile from git https://github.com/panic08/lapay-payment-frontendd
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /home/panic/.jenkins/workspace/Jenkins-testing
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
No credentials specified
> git rev-parse --resolve-git-dir /home/panic/.jenkins/workspace/Jenkins-testing/.git # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/panic08/lapay-payment-frontendd # timeout=10
Fetching upstream changes from https://github.com/panic08/lapay-payment-frontendd
> git --version # timeout=10
> git --version # 'git version 2.34.1'
> git fetch --tags --force --progress -- https://github.com/panic08/lapay-payment-frontendd +refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision f0c9cf9c6f5d1708492c44cd77f2bf3178ece211 (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f f0c9cf9c6f5d1708492c44cd77f2bf3178ece211 # timeout=10
Commit message: "v4.0"
> git rev-list --no-walk 975f62a81650b3e5a4e6f2b8c61ccc7f5423f214 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] sh
+ npm install
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@csstools/[email protected]',
npm WARN EBADENGINE required: { node: '^14 || >=16' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@csstools/[email protected]',
npm WARN EBADENGINE required: { node: '^14 || ^16 || >=18' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@testing-library/[email protected]',
npm WARN EBADENGINE required: { node: '>=14' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '[email protected]',
npm WARN EBADENGINE required: { node: '>=14.0.0' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '[email protected]',
npm WARN EBADENGINE required: { node: '>= 14.15.0' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '[email protected]',
npm WARN EBADENGINE required: { node: '>=14' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '[email protected]',
npm WARN EBADENGINE required: { node: '>=14' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '[email protected]',
npm WARN EBADENGINE required: { node: '>=14.0.0' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
up to date, audited 1514 packages in 14s
236 packages are looking for funding
run `npm fund` for details
6 high severity vulnerabilities
To address all issues (including breaking changes), run:
npm audit fix --force
Run `npm audit` for details.
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Run)
[Pipeline] sh
+ npm start
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Примечание
Если я его запускаю не с npm start &, а с npm start, то приложение запускается, но jenkins не переходит на следующий пайплайн
@hakre Вопрос в том, что npm запускается и не работает. Если я добавлю новый пайплайн, то он явно не пройдет, потому что зависает на старте npm
Если это вопрос, ответ таков, что это действительно работает. И очень вероятно, что вы намеревались сделать что-то другое - в обоих случаях. Что вы все еще скрываете, но, пожалуйста, поделитесь больше, если вы делаете вид, что скрываете большую часть своего вопроса, трудно ответить.
@hakre Я ничего не скрываю. Просто после того, как Дженкинс запустит «npm start &», он завершится, но сервер не запустится. Если я запускаю только «npm start», я не могу добавить следующий конвейер, потому что он просто не будет выполняться, jenkins будет обрабатывать его бесконечно.
Будьте уверены, он запускается, просто with & Jenkins не ждет, пока он закончится. без амперсанда Дженкинс ждет, пока он завершится, но он не завершится сам по себе, поэтому Дженкинс продолжает ждать. Вы не хотите и того, и другого, но что-то другое, что я считаю не представленным в вашем вопросе.
На самом деле npm start &
запускает приложение, но в фоновом режиме.
Поскольку это единственное, что нужно сделать - выполнение npm start
в фоновом режиме - команда sh
выполняет, а затем завершает работу.
Дженкинс понимает, что этап «пробега» завершен, убирается и с радостью делает это. Как было велено. Единственный человек, оставшийся в покое, — это пользователь, который хотел сделать что-то другое, что, очевидно, трудно объяснить не только Дженкинсу.
Да, но проблема в том, что Дженкинс не запускает сервер реагирования. Он запускает команду «npm start &» и завершает работу, но сервер по-прежнему не запускается. Однако, если я попрошу его запустить «npm start», он запускает сервер, не завершает свою работу, но сервер работает
Конечно, потому что, если вы работаете в фоновом режиме, Jenkins очищается, когда sh завершает работу, убивая все дочерние процессы, созданные на этапе. В другом случае npm start не находится в фоновом режиме, поэтому он продолжает работать. Поэтому Дженкинс поддерживает этап «запуска», поскольку он еще не завершен. Откуда вы взяли рецепт для запуска службы в сценарном сценарии? Это не имеет особого смысла для того, что вы теперь можете испытать самостоятельно: либо это сделано до того, как вы что-то получили, либо вы что-то получили, но не можете делать ничего другого параллельно. Чего вы пытаетесь достичь с работающим сервером?
Я хочу автоматически развернуть его после успешной сборки в Jenkins. Для этого я хочу запустить «npm start &»
Развертывать? Работая в фоновом режиме? Тогда сцена в Дженкинсе для этого не подходит. Вы можете инициировать некоторые действия по развертыванию, но работа в фоновом режиме на этапе Jenkins не продвигает вас вперед.
Я хочу развернуть проект, если он успешно построен в jenkins. Как вы сказали, мне, вероятно, нужно использовать что-то еще
это немного выходит за рамки вопроса, но обычно я делаю это сначала локально, нахожу правильную последовательность команд для выполнения работы, а затем кодирую ее как этап конвейера jenkins. поскольку все проекты разные, я могу только догадываться, что npm start запускает приложение реакции. проверьте, есть ли этап сборки, такой как сборка npm, и если нет, то вы найдете файлы для развертывания в подпапке сборки или аналогичной. проверьте с используемой вами инфраструктурой приложения, как работают развертывания, это может отличаться.
«с запуском npm приложение запускается, но jenkins не переходит к следующему конвейеру», хм, какой следующий конвейер? в вашем вопросе есть только один конвейер, и нет даже этапа, следующего за этапом «запуска». Каков ваш конкретный вопрос?