Терминал позволяет открывать окна CMD, PowerShell, WSL-дистрибутивов, так что вполне может пригодиться.
- Запустить терминал от имени администратора
- Активация WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- Активация функционала виртуальной машины:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
. - Перезагрузка.
- Обновить ядро WSL для перехода на WSL2:
- Скачать
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
- Установить.
- Скачать
- Установить версию WSL2 по умолчанию.
- В терминале:
wsl --set-default-version 2
- В терминале:
- Установить Linux distro
- Зайти в Microsoft Store
- В поиск вбить Linux
- Выбрать дистро и установить
- Посмотрим, что у нас установлено из WSL
- В терминале:
wsl --list --verbose
- Примерный вывод в терминале:
- В терминале:
PS C:\Users\username> wsl --list --verbose
NAME STATE VERSION
Ubuntu-20.04 Stopped 1
Ubuntu-18.04 Stopped 2
- Конвертируем дистро первой версии во вторую (Ubuntu-20.04).
wsl --set-version Ubuntu-20.04 2
На сайте докера скачиваем установочный файл, запускаем.
С такими настройками докер будет работать внутри Linux дистро и дополнительно ничего устанавливать не потребуется.
Запускаем дистро из меню пуск или через терминал (картинка):
- Задать пользователя (для локальных тестов можно покороче)
- Задать пароль (для локальных тестов можно покороче)
Проверяем, есть ли у нас Java:
java --version
Терминал нам ответит что-то похожее на это, если Java не установлена:
user@qa-test-bed:~$ java --version
Command 'java' not found, but can be installed with:
sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install default-jdk
Соглашаемся на установку и потом ждем, пока вся эта радость установится.
Ещё раз проверяем версию Java:
java --version
PS C:\Users\username> java --version
java 11.0.7 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
Джава вероятнее всего установилась вот так:
/usr/lib/jvm/java-11-openjdk-amd64
в JAVA_HOME необходимо прописывать именно этот путь, который не включает папку bin
.
sudo nano /etc/environment
добавляем на последнюю строку:
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Нажимаем последовательно Ctrl+S (сохранить), Ctrl+X (выйти из редактора nano).
source /etc/environment
echo $JAVA_HOME
username@pc:$ source /etc/environment
username@pc:$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64
Всё ок.
Описано здесь: https://aerokube.com/selenoid/latest/#_selenoid_with_docker_compose
В папке проекта создаем файл docker-compose.yml
version: '3.4'
services:
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
${PWD} - текущая директория
volumes
позволяет монтировать папки файловой системы локальной машины в контейнер.
Для строки типа "${PWD}/init/selenoid:/etc/selenoid"
слева от двоеточия находится папка, которая лежит на локальной машине (в Linux distro), справа — на файловой системе контейнера.
- init/selenoid
- work/selenoid/video
- work/selenoid/logs
Создаём browsers.json
{
"chrome": {
"default": "88.0",
"88.0": {
"env" : ["LANG=ru_RU.UTF-8", "LANGUAGE=ru:en", "LC_ALL=ru_RU.UTF-8", "TZ=Europe/Moscow"],
"image": "selenoid/vnc:chrome_88.0",
"tmpfs": {"/tmp": "size=512m"},
"port": "4444"
}
}
}
}
Образы браузеров необходимо скачивать самостоятельно. Для примера выше потребуется образ браузера selenoid/vnc:chrome_88.0
, он скачивается следующим образом:
docker pull selenoid/vnc:chrome_88.0
После этого, можно попробовать запустить то, что получилось.
В папке проекта выполняем:
docker-compose up
В консоли будет что-то вроде вот этого:
user@pc:/path/project$ docker-compose up
Starting project_selenoid_1 ... done
Attaching to project_selenoid_1
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Loading configuration files...]
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Loaded configuration from /etc/selenoid/browsers.json]
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Video Dir: /opt/selenoid/video]
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Logs Dir: /opt/selenoid/logs]
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Your Docker API version is 1.41]
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Timezone: UTC]
selenoid_1 | 2021/03/03 20:33:19 [-] [INIT] [Listening on :4444]
В браузере заходим http://your-ip-address:4444/status
Должна быть видна JSON строка {"total":5,"used":0,"queued":0,"pending":0,"browsers":{"chrome":{"75.0":{},"76.0":{},"87.0":{},"88.0":{}}}}
Выключаем при помощи Ctrl+C, переходим к след. шагу.
Описано здесь: http://aerokube.com/selenoid-ui/latest/#_with_docker_compose
Добавляем в файл docker-compose.yml
необходимое для запуска selenoid-ui:
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
В браузере заходим http://your-ip-address:8080
Мы должны видеть веб-страницу selenoid-ui.
- Переходим на вкладку Capabilities
- Выбираем браузер
- Запускаем ручную сессию
Чтобы иметь возможность управлять браузером внутри контейнера, нужно его разблокировать (1) и лучше раскрыть VNC окно на максимум (2).
Если все работает, то останавливаем docker-compose и переходим к установке Jenkins.
гуглим конфиг: https://is.gd/LKXZ9k
- Добавляем к
docker-compose.yml
jenkins:
image: jenkins/jenkins:lts
user: root
volumes:
- ${PWD}/work/jenkins:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8888:8080
network_mode: bridge
- Запускаем docker-compose
docker-compose up
Ждём, когда закачается образ и Jenkins стартует. В логах должно появиться следующее сообщение:
jenkins_1 | Jenkins initial setup is required. An admin user has been created and a password generated.
jenkins_1 | Please use the following password to proceed to installation:
jenkins_1 |
jenkins_1 | 32d64223e62945fe8c4c1ed050360700
jenkins_1 |
jenkins_1 | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
jenkins_1 |
jenkins_1 | *************************************************************
jenkins_1 | *************************************************************
jenkins_1 | *************************************************************
Этот пароль понадобится для самого первого входа Jenkins, потом про него можно забыть.
- Устанавливаем плагины по умолчанию (потом можно удалить то, что ненужно).
- Создаём администратора и переходим к начальной конфигурации Jenkins.
- Убираем галку Install Automatically.
- Name: можно написать что угодно, но лучше правду: OpenJDK 11.
- JAVA_HOME вставляем
$JAVA_HOME
. - Жмём APPLY внизу страницы.
- Add gradle
- Отмечаем Install Automatically.
- Name: что угодно
- Install from Gradle.org и выбрать нужную версию.
Этот режим нужен для того, чтобы вы не видели весь-весь консольный вывод приложений, которые у вас сейчас запущены в докере.
Останавливаем docker-compose Ctrl+C.
docker-compose up -d
Вы увидите в консоли только вот это:
user@pc:/path$ docker-compose up -d
Starting cm-local-test-bed-wsl_jenkins_1 ... done
Starting cm-local-test-bed-wsl_selenoid_1 ... done
Starting cm-local-test-bed-wsl_selenoid-ui_1 ... done
Далее вы вернётесь в консоль, а docker-compose продолжит свою работу.
Чтобы остановить все запущенные приложения, необходимо выполнить следующую команду:
docker-compose down
Вот и всё.