Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Code Recipe] Учимся создавать Jenkins плагины на примере Selenium Grid киллера


(Sergey Korol) #1

Для любителей новенького решил написать гайд по созданию простенького плагина для Jenkins. Сам плагин выполняет роль “убийцы” Selenium Grid хаба / нодов. Само убиение реализовано в формате отправки соответствующих REST запросов кандидатам на shutdown.

Материал создан для размышления тем, кто осознает важность периодического рестарта тестового окружения (не reboot), ввиду ряда нередко возникающих проблем. Естественно, это лишь часть большого механизма, который вам возможно придется реализовывать. Но, как говорится: feel free to extend it with your own features.

Для себя лично написал модифицированный вариант полноценного рестартера удаленного окружения, который убивает все драйвера / инстансы браузеров / грид / сикули / прокси на всех target VMs, и затем перезапускает все это дело via upstream Jenkins job перед непосредственным запуском тестового набора.

Сам гайд можно найти в моем блоге.
Исходники плагина залиты в местный GitHub.

Результат выглядит следующим образом:

Shutdown REST API:

    public boolean shutDownHub(final String ip, final int port) {
        return client != null && client.target("http://" + ip + ":" + port)
                .path("lifecycle-manager")
                .queryParam("action", "shutdown")
                .request(MediaType.APPLICATION_JSON)
                .get()
                .getStatus() == Response.Status.OK.getStatusCode();
    }

    public boolean shutDownNode(final String ip, final int port) {
        return client != null && client.target("http://" + ip + ":" + port)
                .path("selenium-server")
                .path("driver")
                .queryParam("cmd", "shutDownSeleniumServer")
                .request(MediaType.APPLICATION_JSON)
                .post(null).getStatus() == Response.Status.OK.getStatusCode();
    } 

Пусть таких примеров станет больше, присылайте pull request на наш мега-склад примеров.


Environment Watcher или как бороться с нестабильным окружением