Skip to content

21. Переезд на собственную инфраструктуру Java

Daniil Shatukhin edited this page Dec 11, 2022 · 1 revision

В этом руководстве описано, как собрать собственный тестовый стенд, который используется для обучения в школе QA GURU. Для работы понадобится Docker, Selenoid, Jenkins, командная строка и любой редактор кода.

Поднимаем сервер

Для аутентификации необходимо создать SSH-ключ. Что-то похожее мы уже делали во время настройки GitHub. Сначала проверим есть ли уже какие-то ключи в директории .ssh с помощью команды ls -l ~/.ssh grep id_rsa.

Сгенерировать новый ключ можно с помощью утилиты ssh-keygen. Команда для запуска генерации выглядит так: ssh-keygen -t rsa -b 4096 -C user@user.com. Строка после ключа -C служит в качестве комментария. В ней можно указать любую информацию, которая поможет понять для чего нужен этот ключ. К примеру, можно указать имя пользователя или адрес электронной почты.

Далее SSH-агенту надо передать ключи, чтобы он мог ими воспользоваться. Для этого воспользуемся командой ssh-add ~/.ssh/id_rsa.

После ключ необходимо добавить на сервисе, который используется для аренды сервера. Также надо создать сервер и получить от системы его IP-адрес. Также на локальной машине можно перейти в папку .ssh и в файле config добавить в лейбл хоста его IP-адрес. Это поможет не вводить его каждый раз.

Когда всё это сделано, то из терминала можно подключиться к удалённому серверу с помощью команды ssh hostname, где hostname – имя хоста.

Первичная настройка удалённого сервера

Первым делом необходимо изменить пароль сервера с помощью команды password. Дале обновляем данные репозиториев. Вводим команду apt update && apt upgrade -y.

Теперь установим утилиту Midnight Commander с помощью команды apt instal mc. Запустить её можно с помощью команды mc.

Устанавливаем Java

Java устанавливается с помощью команды sudo apt-get install default-jdk. После установки проверим наличие переменной окружения командой echo $JAVA_HOME.

Чтобы установить значение переменной откроем в редакторе файл environment. Выполним команду sudo nano /etc/environment. В нём создадим переменную JAVA_HOME и передадим ей путь к Java. К примеру, целая строка может выглядеть так JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64.

Теперь обновим данные командой source /etc/environment и ещё раз запустим echo $JAVA_HOME. В консоль должен вывестись путь к Java.

Установка Docker

Docker можно установить с помощью скрипта curl -sSL https://get.docker.com | sh.

Создаём директории

Теперь необходимо создать директории. Удобнее всего это будет сделать с помощью утилиты Midnight Commander, которую мы уже установили. Дерево директорий в итоге должно выглядеть следующим образом:

opt/
├─ test-bed/
│  ├─ work/
│  │  ├─ selenoid/
│  │  ├─ jenkins/
│  ├─ init/
│  │  ├─ selenoid/

Теперь в папке test-bed надо создать файл docker-compose.yml. В нём прописываем конфигурацию Jenkins:

version: `3.4'

services:
    jenkins:
        user: root
        restart: unless-stopped
        # build:

        # context: ./image
        image: jenkins/jenkins:lts
        volumes:
            - S(PWD)/work/jenkins:/var/jenkins_home
            - /var/run/docker .sock:/var/run/docker .sock
        ports:
            - 8888:8080
        network_mode: bridge

После, находясь в директории, вызываем команду docker compose pull. Запустить можно командой docker compose up -d. Затем можем перейти в консоль Jenkins, введя в адресной строке браузера http:/ip-address:8888. Из плагинов можно сразу установить рекомендованные. Также надо будет пройти процесс первичной настройки администратора.

Из дополнительных плагинов необходимо установить Allure Report.

Добавляем конфигурацию Selenoid

Для добавления конфигурации Selenoid дополним файл docker-compose.yml следующим:

selenoid:
    image: aerokube/selenoid:latest-release
    volumes:
      - "${PWD}/init/selenoid:/etc/selenoid"
      - "${PWD}/work/selenoid/video:/opt/selenoid/video"
      - "${PWD}/work/selenoid/logs:/opt/selenoid/logs"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - OVERRIDE_VIDEO_OUTPUT_DIR=work/selenoid/video
    command: ["-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs"]
    ports:
      - "4444:4444"
    network_mode: bridge

Запустить можно командой docker compose up -d.

Проверит работу Selenoid можно перейдя по адресу http:/ip-address:4444/status.

Добавляем Selenoid UI

Также дополняем файл docker-compose.yml:

  selenoid-ui:
    image: "aerokube/selenoid-ui:latest-release"
    network_mode: bridge
    links:
      - selenoid
    ports:
      - "8080:8080"
    command: ["--selenoid-uri", "http://selenoid:4444"]

Запуск: docker compose up -d.

Установим браузеры командой docker pull selenoid/vnc:chrome_101.0 && docker pull selenoid/vnc:chrome_102.0.

Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python Структура проекта Github README.md

Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java

Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python

Clone this wiki locally