Установка Docker

Шаг 1:

# Добавить официальный ключ GPG docker
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Добавить репозиторий в источники Apt:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Шаг 2:

# Установка пакетов Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Шаг 3:

# Проверка, что установка прошла успешно
sudo docker run hello-world

Установка и настройка Selenoid

Шаг 1:

Создать папку (Например, selenoid) для хранения необходимых файлов для Selenoid.

mkdir selenoid

Шаг 2:

Загрузить последнюю версию двоичного файла со страницы и поместить его в созданную папку.

Шаг 3:

Открыть консоль, перейти в созданную папку

# Например:
cd /home/user/selenoid

Выдать права на запуск файла:

# cm - нужно указать полное имя двоичного файла, который был загружен
$ chmod +x cm

Шаг 4:

В созданной папке, создать файл с названием “docker-compose.yml”:

nano docker-compose.yml

Шаг 5:

В созданной папке создать ещё одну папку config

Шаг 6:

Добавить основные настройки в yml-файл:

services:
  selenoid:
    image: "aerokube/selenoid"
    network_mode: bridge
    ports:
      - "4444:4444" # Порт до двоеточия, это порт на котором и будет запускаться контейнер
    volumes:
      - "/home/user/selenoid/config:/etc/selenoid/" # Путь указанный до двоеточия, это путь к папке где будет храниться файл browsers.json с настройками браузера
      - "var/run/docker.sock:/var/run/docker.sock"
  selenoid-ui:
    image: "aerokube/selenoid-ui"
    network_mode: bridge
    links:
      - selenoid
    ports:
      - "4445:8080" # Порт до двоеточия, это порт на котором будет информация о сессиях selenoid
    command: ["--selenoid-uri", "http://selenoid:4444"]

Шаг 7:

В папке config создать файл browsers.json с описанием браузеров, на котором будут прогоняться тесты:

{
   "chrome":{
      "default":"122.0",
      "versions":{
         "122.0":{
            "image":"selenoid/chrome:122.0",
            "port":"4444",
            "path":"/",
            "tmpfrs":{
               "/tmp":"size=128m"
            }
         }
      }
   }
}

Шаг 8:

Для запуска selenoid и selenoid-ui необходимо выполнить команду запуска либо с указанием пути к docker-compose.yml файлу, либо перейти в папку с этим файлом, и выполнить:

docker compose up

Для завершения работы:

docker compose down

Шаг 9:

Можно перейти по адресу http://localhost:4444 - должно отобразиться подобное сообщение:

You are using Selenoid 2538009240b3c5af1f74f83b9b5314081f6fdb27!

А также перейти по адресу http://localhost:4445 - должна отображаться страница selenoid-ui с информацией о текущих сессиях:

Установка JDK и добавление в переменную PATH

Шаг 1:

Установка JDK:

apt install openjdk-17-jdk openjdk-17-jre

Шаг 2:

Поместить JDK в переменную PATH:

# Открыть файл .bashrc
nano ~/.bashrc
# Указать путь к java с использованием синтаксиса export в конце файла
# Например:
export PATH=$PATH:/usr/java/openjdk-17/bin

Шаг 3:

Сохранить изменения:

Нажать: Ctrl + X
После отображения сообщения о сохранении внесенных изменений нажать: Y

Установка Maven и добавление в переменную PATH

  1. Установите Maven из репозитория Ubuntu:

    Откройте терминал и выполните следующие команды:

    sudo apt update
    sudo apt install maven
  2. Проверьте установку:

    После установки Maven вы можете проверить, что он установлен правильно, выполнив команду:

    mvn -version

    Это должно вывести информацию о версии Maven и Java, если Maven был успешно установлен.

  3. Настройте переменные окружения (опционально):

    В большинстве случаев Maven будет добавлен в ваш путь автоматически при установке из официальных репозиториев Ubuntu. Однако, если это не произошло, вы можете добавить путь к Maven в ваш путь, отредактировав файл ~/.bashrc (или ~/.bash_profile, в зависимости от вашего профиля):

    export PATH=/usr/share/maven/bin:$PATH

    Затем примените изменения с помощью команды:

    source ~/.bashrc

Установка Jenkins

Шаг 1:

Установить Jenkins:

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins

Шаг 2:

Изменить порт для запуска в файле jenkins.service:

sudo nano /lib/systemd/system/jenkins.service

В строке:

Environment="JENKINS_PORT=8080"

Изменить порт 8080 на (например) 4446 и сохранить изменения.

Шаг 3:

Установить автозапуск Jenkins при загрузке системы:

sudo systemctl enable jenkins

Шаг 4:

Запустить Jenkins сервис:

sudo systemctl start jenkins

Шаг 5:

Проверить состояние Jenkins сервиса:

sudo systemctl status jenkins

Примерный вывод:

Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-03-20 10:27:01 +03; 4min 57s ago

Шаг 6:

Из вывода журнала консоли Jenkins скопировать сгенерированный буквенно-цифровой пароль (между двумя наборами звездочек).

Шаг 7:

Активация Jenkins:

Перейти по адресу - http://localhost:порт(4446) И на странице Unlock Jenkins ввести скопированный код.

Шаг 8:

Далее будет открыта страница с установкой плагинов. Можно установить все рекомендованные, либо выбрать вручную необходимые плагины.

Шаг 9:

После установки плагинов, будет отображена страница Create First Admin User, на которой необходимо создать аккаунт админа, сохранить и нажать Start using Jenkins.

Создание Pipeline для ручного запуска тестов через Jenkins

Шаг 1:

Так, как на проекте используются сборщик Maven и фреймворк Allure, необходимо установить соответствующие плагины в Jenkins.

Для этого необходимо перейти в Manage Jenkins → Plugins и в Available plugins установить Allure Jenkins Plugin и Maven Integration Plugin.

Шаг 2:

Перейти в Manage Jenkins → Tools, и в Allure Commandline указать имя и версию Allure в соответствии с тем, который используется на проекте (2.25.0).

Шаг 3:

Перейти в Manage Jenkins → Tools, и в Maven installations указать имя, путь к maven на машине (например, путь к maven можно узнать выполнив команду maven -version на локальной машине).

Шаг 4:

  1. Добавить Git креды в Jenkins:
  2. Перейти в Manage Jenkins → Credentials
  3. В разделе Stores scoped to Jenkins в колонке Domains нажать global, и на открывшейся странице Add credentials
  4. Указать юзернейм и пароль от аккаунта Git, после чего будет сгенерирован id, который будет использоваться для доступа к репозиторию.

Шаг 5:

Создание Pipeline:

  1. Перейти в + New Item, выбрать Pipeline и ввести название
  2. В дропдауне Pipeline → Definition выбрать опцию Pipeline script
  3. В поле Script указать скрипт для билда:

    pipeline {
        agent any
        tools {
            maven 'maven' // в кавычках название сборщика maven, которые вы дали ему при его установке в Tools
        }
        stages {
            stage('Checkout') {
                steps {
                    git credentialsId: 'id ваших кред', url: 'https://адрес вашего репозитория' // id кред из шага 4 данного документа
                }
            }
            stage('Build') {
                steps {
                    sh 'mvn clean' // этап очистки проекта от файлов, которые генерируются после прогона тестов
                }
            }
            stage('Test') {
                steps {
                    sh 'mvn test' // этап запуска тестов
                }
            }
        }
        post {
            success {
                echo 'Pipeline executed successfully!'
                allure([
                    includeProperties: false,
                    jdk: '',
                    properties: [],
                    reportBuildPolicy: 'ALWAYS',
                    results: [[path: 'target/allure-results']]
                ])
            }
            failure {
                echo 'Pipeline failed!'
                allure([
                    includeProperties: false,
                    jdk: '',
                    properties: [],
                    reportBuildPolicy: 'ALWAYS',
                    results: [[path: 'target/allure-results']]
                ])
            }
        }
    }

Вопросы для самопроверки:

  1. Как установить Docker на Linux?
  2. Как проверить успешность установки Docker?
  3. Какие основные элементы должны присутствовать в файле docker-compose.yml для Selenoid?
  4. Как настроить файл browsers.json для работы с браузерами в Selenoid?
  5. Как установить Jenkins на Linux и как изменить порт, на котором он запускается?
  6. Как активировать Jenkins после успешной установки?
  7. Какие плагины необходимо установить в Jenkins для использования Maven и Allure?