Перейти к содержанию

Участие в разработке

Инструменты разработки

Информация

Структура проекта создана на основе bootstrap-1c.

Процесс разработки

Предполагается следующий цикл при работе над проектом:

1. Подготовка к разработке

  • Получение последних изменений проекта из репозитория
  • Настройка окружения разработки - сборка контейнеров для разработки
  • Проверка работоспособности всех сервисов

2. Разработка

  • Разработка функциональности в локальной среде
  • Локальное тестирование изменений

3. Тестирование и интеграция

  • Тестирование в develop среде (юнит-тесты, функциональные и интеграционные тесты)1
  • Запрос на добавление изменений в репозиторий

Автоматизация vs ручная настройка

Настройка переменных окружения, hosts и docker-образов предназначена для автоматизированной настройки среды разработки. Если предпочитаете ручную настройку, можете развернуть компоненты вручную: создать базу данных, настроить сервисы, сконфигурировать сеть и т.д.

Настройка окружения разработки

Конфигурация проекта

Обязательные переменные окружения

Обязательные переменные окружения при конфигурации проекта
DOCKER_USERNAME

учетная запись Docker Hub или путь к репозиторию в локальном хранилище (см. pull from a different registry)

ONEC_VERSION

версия платформы "1С:Предприятие 8"

NETHASP_PATH

путь к файлу nethasp.ini для получения лицензий "1С:Предприятие 8" в контейнерах

IB_NAME

имя информационной базы на сервере "1С:Предприятие 8"

DB_NAME

имя базы данных на сервере SQL

WS_USER

пользователь для строки подключения веб-сервисов к информационной базе при публикации сервиса, значение по умолчанию - сайт (-connstr "Srvr=srv;Ref=transmitter;usr=$WS_USER;pwd=$WS_PASSWORD")

WS_PASSWORD

пароль для строки подключения веб-сервисов к информационной базе при публикации сервиса (-connstr "Srvr=srv;Ref=transmitter;usr=$WS_USER;pwd=$WS_PASSWORD")

WS_LOCALE

локализация веб-сервиса, добавляющая дополнительный путь к конечным точкам API, значение по умолчанию - ru

Создание и настройка окружения

Шаг 1: Создать файл nethasp.ini для получения лицензий "1С:Предприятие 8" в контейнерах.

Шаг 2: Настроить обязательные переменные окружения (см. env.example).

Шаг 3: Проверить переменные окружения (см. Инициализация информационной базы):

Как проверить переменные окружения

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

scripts\check-env.bat

Тихий режим:

scripts\check-env.bat --quiet

Запуск под WSL с пробросом текущих переменных Windows:

wsl bash -lc "DOCKER_USERNAME=\"%DOCKER_USERNAME%\" ONEC_VERSION=\"%ONEC_VERSION%\" NETHASP_PATH=\"%NETHASP_PATH%\" WS_PASSWORD=\"%WS_PASSWORD%\" ./scripts/check-env.sh"
./scripts/check-env.sh

Тихий режим:

./scripts/check-env.sh --quiet

Что делает флаг --quiet

Режим --quiet подавляет информационные сообщения и прогресс, оставляя только сообщения об ошибках. Коды возврата не меняются: 0 при успехе, 1 при отсутствии обязательных переменных или ошибке конфигурации.

Скрипты возвращают код 0 при успехе и 1 при отсутствии обязательных переменных либо ошибке конфигурации docker-compose.yml.

Пример шаблона переменных: env.example (скопируйте в .env и заполните значения).

Шаг 4: Собрать docker-образы для работы с 1С:Предприятие 8 (база данных, сервер 1С:Предприятие, веб-сервисы, различные сервисы для тестирования).

Шаг 5: Добавить в файл hosts необходимые для разработки/тестирования сервисы из конфигурационного файла проекта.

hosts
# ...
172.28.189.202 srv # сервер "1С:Предприятие 8"
127.0.0.1 transmitter # веб-сервер для API и веб-клиента разрабатываемого сервиса
127.0.0.1 endpoint # веб-сервер получателя внешних обработок (интеграционные тесты)
127.0.0.1 mockserver # mock-сервер (модульное тестирование)
127.0.0.1 gitlab # Omnibus GitLab (интеграционные тесты)
# ...
Местоположение файла

Файл hosts находится в разных местах в зависимости от операционной системы.

C:\Windows\System32\drivers\etc\hosts
/etc/hosts

Transmitter

Инициализация информационной базы

С помощью следующей команды можно полностью автоматически собрать и развернуть среду для разработки с инициализацией информационной базы. Это делается один раз, когда нужно создать окружение "с чистого листа". Предварительно необходимо настроить переменные окружения в файле .env (см. env.example):

build.bat
./build.sh

Строка подключения к информационной базе - Srvr=srv;Ref=transmitter;.

Запуск сервиса
docker-compose up -d transmitter
Остановка сервиса
docker-compose stop transmitter

Endpoint

Запуск нескольких получающих внешние обработки информационных баз с веб-сервером, веб-клиентом и инициализацией этих баз из эталона:

docker-compose up --scale endpoint=2 --build endpoint

Ошибка

В последних версиях docker-compose "что-то пошло не так" с распределением заданного в конфигурационном файле диапазона портов. Запускается только один контейнер. Проблема требует анализа.

Определение внутренних IP адресов:

docker inspect ^
    --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" ^
    epf-transmitter_endpoint_1 epf-transmitter_endpoint_2
docker inspect \
    --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" \
    epf-transmitter_endpoint_1 epf-transmitter_endpoint_2

GitLab

Создание архива
docker-compose exec gitlab /backup.sh
Восстановление из архива
docker-compose exec gitlab /restore.sh

EDT

  • Лаунчеры для тестирования и запуска приложения

  1. Было бы неплохо автоматизировать тестирование...