Выполнение конвейеров Jenkins зависает после запуска http-сервера npm через sshPublisher - PullRequest
0 голосов
/ 24 февраля 2020

Как новичок в Jenkins, я играю вокруг, чтобы узнать, как использовать конвейеры Jenkins. Мой код написан на html и node.js. На этапе развертывания Jenkins в декларативном конвейере я копирую все необходимые файлы со сборочной машины (ubuntu) на целевую машину (ubuntu), используя плагин Jenkins «Publi sh over S SH». Работает все хорошо, также запускает мое приложение узла ("node express_01. js &" в сценарии оболочки), используя s sh Publisher sshTransfer execCommand. Но когда я запускаю http-Server (http-server -s -p 3131. &), Выполнение конвейера Jenkin зависает. Я испробовал все варианты, например, запустить http-сервер в сценарии Shell или даже на отдельной стадии Jenkins. Неважно, что и куда я положил, запустил http-сервер, Дженкинс зависает. Понятия не имею, что такого особенного в http-сервере и почему он вызывает зависание конвейера Дженкинса.

Здесь фрагмент кода конвейера, в котором запущен http-сервер.

    stage('deploy') {
        steps {   
            sshPublisher(
                continueOnError: false, 
                failOnError: true,
                publishers: [
                    sshPublisherDesc(
                        configName: "DeployOnEndor",
                        verbose: true,
                        transfers: [
                            sshTransfer( // stop all running http-server and express_01 node.js services with a sh script first
                                sourceFiles: "build/AAProdDeployStopServices.sh", 
                                execCommand: "cd AngryAlpacaProd/build; chmod +x AAProdDeployStopServices.sh; ./AAProdDeployStopServices.sh" 
                            ),
                            sshTransfer( // then clean up the target production directories
                                execCommand: "rm -r AngryAlpacaProd/*" 
                            ),
                            sshTransfer( // then copy over all executable files and the service restart sh script and run it
                                sourceFiles: "webpages/**/*, node/**/*, build/AAProdDeployStartServices.sh"
                            ),
                            sshTransfer( // make the (node server) start services script executable
                                execCommand: "chmod +x AngryAlpacaProd/build/AAProdDeployStartServices.sh" 
                            ),
                            sshTransfer( // run the (node server) start up process
                                execCommand: "./AngryAlpacaProd/build/AAProdDeployStartServices.sh" 
                            )
                        ]
                    )

                ]
            )
        }
    }
    stage('http-server restart') {
        steps {   
             sshPublisher(
                continueOnError: false, 
                failOnError: true,
                publishers: [
                    sshPublisherDesc(
                        configName: "DeployOnEndor",
                        verbose: true,
                        transfers: [
                            sshTransfer( 
                                execCommand: "http-server -s -p 3131 AngryAlpacaProd/webpages &" 
                            )
                        ]
                    )
                ]    
            )
        }
    }

Стадия «развертывание» работает нормально, однако этап «Перезапуск http-сервера» бесконечно зависает после успешного запуска http-сервера на целевой машине. Я должен прервать выполнение конвейера вручную.

1 Ответ

0 голосов
/ 24 февраля 2020

Невероятно, через 5 минут после отчаянного размещения моего вопроса я нашел решение: перенаправить вывод http-сервера в лог-файл.

конвейер Дженкинса sshPublisher ...: Transfer: [sshTransfer (execCommand: "http-server -p 3131 AngryAlpacaProd / webpages> AngryAlpacaProd / webpages / http-server.log &")]

...