Всё необходимое для сборки docker-образов с платформой 1С и сопутствующими инструментами.
- Как собрать образы
- 1С:Исполнитель (executor)
- 1С:EDT (edt)
- 1С:EDT CLI (edtcli)
- 1С:Платформа (onec-platform)
- vanessa-runner (vrunner)
У вас есть 2 способа для сборки необходимых вам образов:
- С помощью форка данного репозитория и сборки через GitHub Actions (предпочтительный вариант).
- Клонирование и локальная сборка на вашем компьютере. Сборка возможна только на ПК с ОС Linux.
-
Форкаем этот репозиторий.
-
Включаем GitHub Actions, если не включилось автоматически.
-
Пробрасываем в GitHub Actions необходимые секреты. В общем случае это:
DOCKER_REGISTRY_URL— адрес вашего приватного docker registry, куда будут запушены собранные образы.DOCKER_LOGIN— логин для вашего registry.DOCKER_PASSWORD— пароль для вашего registry.
-
Для образов, установщики, которых требуется скачать с сайта релизов также требуются:
ONEC_USERNAME— логин к сайту релизов 1С.ONEC_PASSWORD— пароль к сайту релизов 1С.
-
"Навешиваем" нужные теги для триггера сборки. Если теги уже есть, предварительно их удаляем или пушим теги с --force. Теги можно "навешивать" на последний коммит или на последний релиз необходимого для сборки образа.
-
После завершения сборки получаем готовые образы в вашем registry.
- Клонируем репозиторий.
- Копируем файл
.env.exampleв.env. - Заполняем необходимые для сборки переменные среды в файле
.env. - Запускаем скрипты для сборки нужных образов. Скрипты лежат в директории
srcи имеют имя видаbuild-ОбразДляСборки.sh.
Для сборки требуется также ключ API для скачивания установщика 1С:Исполнителя с сайта https://developer.1c.ru. Ключ необходимо записать в переменную среды/секрет DEV1C_EXECUTOR_API_KEY.
-
Триггером для сборки в Actions является тег вида
executor_ВерсияДляСборки, напримерexecutor_3.0.2.2. -
Для PR‑проверок добавлен workflow, который собирает и тестирует образ без публикации.
-
Локальная сборка:
- Заполните
.envзначениямиDOCKER_REGISTRY_URL,DOCKER_LOGIN,DOCKER_PASSWORD,DEV1C_EXECUTOR_API_KEY. - Укажите версию Executor:
- однократно в текущей сессии:
export EXECUTOR_VERSION=3.0.2.2 - либо инлайном при запуске:
EXECUTOR_VERSION=3.0.2.2 ./src/build-executor.sh
- однократно в текущей сессии:
- Запустите сборку:
./src/build-executor.sh.
- без публикации в реестр (локальная проверка):
- один запуск:
PUSH_IMAGE=false EXECUTOR_VERSION=3.0.2.2 ./src/build-executor.sh - либо через
.env:PUSH_IMAGE=false
- один запуск:
- Заполните
-
Результат локальной сборки — образ с тегом
$DOCKER_REGISTRY_URL/executor:$EXECUTOR_VERSION.
Для сборки требуется доступ к сайту релизов 1С для скачивания установщика EDT. Данные учётной записи необходимо передать через переменные среды/секреты ONEC_USERNAME и ONEC_PASSWORD.
-
В GitHub Actions, помимо общих секретов
DOCKER_REGISTRY_URL,DOCKER_LOGIN,DOCKER_PASSWORD, добавьте:ONEC_USERNAME— логин к сайту релизов 1С.ONEC_PASSWORD— пароль к сайту релизов 1С.
-
Триггер для сборки в Actions — тег вида
edt_ВерсияEDT, напримерedt_2024.1.3. -
Локальная сборка:
- Заполните
.envзначениямиDOCKER_REGISTRY_URL,DOCKER_LOGIN,DOCKER_PASSWORD,ONEC_USERNAME,ONEC_PASSWORD. - Укажите версию EDT (поддерживаются мажорные версии 2023 и 2024; версии ниже 2023 не поддерживаются, так как начиная с 2023 появилась
1cedtcliи была упраздненаring):- однократно в текущей сессии:
export EDT_VERSION=2024.1.3 - либо инлайном при запуске:
EDT_VERSION=2024.1.3 ./src/build-edt.sh
- однократно в текущей сессии:
- Запустите сборку:
./src/build-edt.sh.
- Заполните
-
Результат локальной сборки — образ с тегом
$DOCKER_REGISTRY_URL/edt:$EDT_VERSION. -
Полезно знать:
- Переменная
NO_CACHE=trueотключит кэш сборки. - Переменная
DOCKER_SYSTEM_PRUNE=trueперед сборкой очистит ненужные слои/объекты Docker. - Образ собирается с предустановленным плагином запрета редактирования (Disable Editing Plugin). Плагин устанавливается из update‑site плагина в процессе сборки.
- Базовый образ
edtсобирается БЕЗENTRYPOINTдля корректной работы в GitLab CI. Запуск1cedtcliвыполняется явно (в производных образах, таких какedtcli, задаётсяENTRYPOINT).
- Переменная
Скрипт для локальной сборки — build-edt.sh.
Образ-обёртка над базовым edt, который добавляет ENTRYPOINT с 1cedtcli и объявляет том /edt. Собирается одновременно с базовым образом EDT.
-
Требования:
DOCKER_REGISTRY_URL,DOCKER_LOGIN,DOCKER_PASSWORD— доступ к приватному реестру, содержащему базовый образedt.EDT_VERSION— версия EDT, совпадает с базовым образом.
-
Локальная сборка:
- Убедитесь, что в реестре доступен образ
edt:$EDT_VERSION. Если образ отсутствует локально — скрипт авторизуется и попытается сделатьdocker pull. Если образа нет и в реестре — скрипт выполнит локальную сборку базовогоedtчерезbuild-edt.sh, а затем соберётedtcli. При этом, если был собран образedt, то он будет запушен, если пуш явно не запрещён при сборкеedtcliчерезPUSH_IMAGE=false - Запуск:
./src/build-edtcli.sh
- Убедитесь, что в реестре доступен образ
-
Результат локальной сборки — образ с тегом
$DOCKER_REGISTRY_URL/edtcli:$EDT_VERSION.
Для сборки требуется доступ к сайту релизов 1С для скачивания установщиков платформы. Данные учётной записи необходимо передать через переменные среды/секреты ONEC_USERNAME и ONEC_PASSWORD.
-
Сборка в GitHub Actions (PR‑проверки):
- Есть workflow
ci-onec-platform.yml, который при изменении файлов вsrc/onec-platform/*.Dockerfileавтоматически формирует матрицу версий и собирает соответствующие образы без публикации в реестр. - Секреты:
ONEC_USERNAME,ONEC_PASSWORD.
- Есть workflow
-
Сборка и публикация через GitHub Actions по тегу:
- Триггером является тег вида
onec_platform_ВерсияПлатформы, напримерonec_platform_8.3.22.2557. - После выпуска такого тега workflow соберёт и опубликует образ
onec-platform:$ONEC_VERSIONв указанный реестр.
- Триггером является тег вида
-
Локальная сборка:
- Заполните
.envзначениямиDOCKER_REGISTRY_URL,DOCKER_LOGIN,DOCKER_PASSWORD,ONEC_USERNAME,ONEC_PASSWORD. - Укажите версию платформы 1С (поддерживаются минорные ветки 8.3.20–8.3.27). Скрипт выбирает
Dockerfileпо первым трём компонентам версии:8.3.22.x→src/onec-platform/8.3.22.Dockerfile.- однократно в текущей сессии:
export ONEC_VERSION=8.3.22.2557 - либо инлайном при запуске:
ONEC_VERSION=8.3.22.2557 ./src/build-onec-platform.sh
- однократно в текущей сессии:
- Запустите сборку:
./src/build-onec-platform.sh.
- Заполните
-
Результат локальной сборки — образ с тегом
$DOCKER_REGISTRY_URL/onec-platform:$ONEC_VERSION. -
Полезно знать:
PUSH_IMAGE=false— собрать без публикации в реестр.NO_CACHE=true— отключить кэш сборки.DOCKER_SYSTEM_PRUNE=true— предварительно очистить неиспользуемые слои/объекты Docker.- Секреты для скачивания установщиков передаются в сборку через BuildKit‑секреты, которые готовятся скриптом
scripts/prepare_onec_credentials.shна основе переменныхONEC_USERNAME/ONEC_PASSWORD.
vrunner — образ-обёртка для vanessa-runner. Он создаётся на базе onec-platform (onec-docker).
- При сборке
vrunnerскриптsrc/build-vrunner.shсначала проверяет наличие базового образа локально (без префикса и с префиксом). Если образ не найден локально, скрипт попытается выполнитьdocker pullиз реестра — но только если задан реальныйDOCKER_REGISTRY_URL(в CI для fork'ов по умолчанию может использоваться безопасный префиксlocal, при котором pull не выполняется). - Если базовый образ отсутствует и в реестре,
build-vrunner.shавтоматически вызовет./src/build-onec-platform.shдля локальной сборки базового образаonec-platform:$ONEC_VERSION. При включённомPUSH_IMAGE=trueбазовый образ будет также запушен в реестр.
Требования и ключевые переменные:
ONEC_VERSION— версия платформы (например8.3.27.1644). Для tag-trigger сборок переменная вычисляется из имени тегаvrunner_<ONEC_VERSION>.DOCKER_REGISTRY_URL,DOCKER_LOGIN,DOCKER_PASSWORD— для доступа к приватному реестру.ONEC_USERNAME,ONEC_PASSWORD— для скачивания установщиков платформы в процессе сборкиonec-platform.PUSH_IMAGE— еслиfalse, сборка не будет пушить итоговый образ (удобно для локальной проверки и PR).
Примеры:
Локальная сборка (с автоматическим созданием базового образа, если его нет):
# собрать vrunner (если нет onec-platform — будет собран локально)
PUSH_IMAGE=false ONEC_VERSION=8.3.27.1644 ./src/build-vrunner.shСборка через GitHub Actions по тегу (пример):
- Создайте тег
vrunner_8.3.27.1644и запушьте его в репозиторий. - Workflow извлечёт
ONEC_VERSIONиз тега и запустит./src/build-vrunner.sh. При необходимости будет предварительно собран и (если разрешён) запущен push базовогоonec-platform.