Как программно и автоматически остановить сервер Appium в Jenkins Pipeline - PullRequest
0 голосов
/ 05 ноября 2019

Сервер Appium иногда не останавливается, когда вы пытаетесь закрыть его, сервер и порт по-прежнему зависают навсегда, а в интерфейсе командной строки Appium нет встроенной команды для остановки сервера, что затрудняет программное управление

Представьте, что вы хотите управлять им программно с помощью процесса автоматизации в вашем конвейере CI / CD, такого как Jenkins, это может быть очень болезненной историей

appium
or
appium & (as background process)

Команда для запуска сервера Appium, которая может бытьостановлено только когда вы прервете его, но иногда оно не остановится

1 Ответ

0 голосов
/ 05 ноября 2019

Я долго искал ответ в StackOverflow, и никто из них не отвечал прямо на мой вопрос

Пока что похоже на то, что вам нужно убить процесс сервера вручную воболочка с определенным идентификатором процесса

Чтобы она просто работала с конвейером, у нас может быть короткая версия команды

 kill $(lsof -t -i :4723)
 kill \$(lsof -t -i :${APPIUM_PORT}) [In Jenkinsfile]

Где APPIUM_PORT ваш порт Appium, порт по умолчанию 4723
lsof команда должна работать в Unix-подобных системах, например MacOS, Linux

lsof - это командачто означает «список открытых файлов», который используется во многих Unix-подобных системах для сообщения списка всех открытых файлов и процессов, которые их открыли

Запустив эту команду, он должен вернуть идентификаторпроцесс, запущенный на этом конкретном порту для использования в качестве сигнала уничтожения

Для реализации в конвейере Добавьте этот шаг в конец вашего Jenkinsfile

    post{
        always{
            ...
            echo "Stop appium server"
            sh "kill \$(lsof -t -i :${APPIUM_PORT})"
        }
        success{
            ...
        }
        failure{
            ...
        }
        cleanup{
            ...
        }
    }

Он должен уничтожить зависший набор Appiumrver, и вы можете снова запустить новый сервер Appium с тем же портом!

Чтобы узнать больше об этом, я уже публикую блог здесь
Как запустить / остановить сервер Appium в Jenkins Pipeline

Надеюсь, это поможет

...