Запущенная экранная сессия Hudson-CI завершается, когда задача заканчивается - PullRequest
0 голосов
/ 10 марта 2011

Основная проблема, с которой я столкнулся, - это фоновая сессия из Hudson-CI.Шаги оболочки - мне нужно запустить сеанс экрана из скрипта, который запускается другим скриптом.Вот простой тест:

test.sh:

#!/bin/bash
myscreen.sh

myscreen.sh:

#!/bin/bash
screen -dm -S myscreen pingit.sh

pingit.sh:

#!/bin/bash
ping google.com

Если я запускаю ./myscreen.sh, я получаю экран, который запускает пинг без проблем.

Если я запускаю ./test.sh, экран никогда не запускается.Я предполагаю, что есть что-то базовое, что я либо забываю, либо не понимаю, но не могу понять, что именно.Я думал, что это сработает.

Реальная причина, по которой я хочу это сделать, состоит в том, чтобы Hudson CI запустил скрипт непрерывного тестирования, который запускается как сеанс экрана, чтобы он мог продолжаться в фоновом режиме.Я обнаружил, что сеанс экрана завершается, как только задача завершается в Хадсоне.

Есть идеи, почему я не могу запустить постоянный сеанс экрана из сценария дедушки и дедушки?Или есть идеи о том, как с этим справиться?

Это на OSX 10.6, с экраном, созданным из исходного кода (так что он должен работать так же, как Linux, я думаю).

Ответы [ 2 ]

0 голосов
/ 10 марта 2011

Я не знаю, почему я не нашел следующие ссылки раньше, но именно эти ссылки помогли мне решить проблему:

Здесь есть 2 проблемы - одна из них сохраняется после запуска процесса «прародитель». Другой, что Хадсон завершает сеанс после того, как он завершает свою задачу.

Проблема с экраном решается зомби-процессом следующим образом:

screen -d -m -S myscreen && screen -S myscreen -X zombie qr && screen -S myscreen -X screen pingit.sh

Проблема Hudson-CI оказывается ошибкой, которую легко устранить по приведенной выше ссылке. Решение состоит в том, чтобы добавить BUILD_ID = что-то в сценарий оболочки. Так что если скрипт test.sh, описанный выше, на самом деле является выполнением оболочки Hudson Build, то его необходимо изменить на:

#!/bin/bash
BUILD_ID=dontkillthisprocess
myscreen.sh

Как только оба эти шага выполнены, все работает нормально.

0 голосов
/ 10 марта 2011

Если я запускаю ваш test.sh, я получаю сообщение об ошибке

./test.sh: Zeile 2: myscreen.sh: Kommando nicht gefunden.

т.е. команда не найдена . Вам нужно будет написать ./myscreen.sh, если текущий каталог находится не по пути. (Это для вас? Не должно.) То же самое относится и к экранному вызову.

Изменение обоих файлов на

#!/bin/bash
./myscreen.sh

и

#!/bin/bash
screen -dm -S myscreen ./pingit.sh

Я могу запустить свой экран без проблем.

Я нахожусь в Linux (OpenSUSE) с

$ screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

здесь.

...