# CI Templates Переиспользуемые TeamCity DSL шаблоны для проектов dot-dot.ru. ## Подключение к проекту ### 1. Добавить зависимость в pom.xml вашего проекта ```xml ru.dot-dot.ci ci-templates 1.0-SNAPSHOT ``` ### 2. Настроить Versioned Settings в TeamCity В настройках проекта TeamCity → Versioned Settings: - Synchronization enabled: **Yes** - Project settings VCS root: выбрать VCS root вашего проекта - Settings format: **Kotlin** - Allow editing project settings via UI: по желанию Добавить дополнительный VCS root для ci-templates: - VCS URL: `git@gitea.dot-dot.ru:dot-dot/ci-templates.git` - Checkout rules: `+:.teamcity => .teamcity/ci-templates` ## Доступные шаблоны ### DockerBuildTemplate Базовый шаблон для сборки и публикации Docker образов. ```kotlin import templates.DockerBuildTemplate object Build : DockerBuildTemplate({ registry = "registry.dot-dot.ru" dockerfile = "Dockerfile" tag = "%teamcity.build.branch%" extraHosts = listOf("nexus.dot-dot.ru:192.168.100.110") }) ``` ### PhpDockerBuildTemplate Шаблон для PHP проектов с поддержкой Composer, линтеров и анализаторов. ```kotlin import templates.PhpDockerBuildTemplate object Build : PhpDockerBuildTemplate({ backendDir = "backend" enableCs = true enableAnalyse = true composerAuth = """{"http-basic": {"nexus.dot-dot.ru": {"username": "%env.NEXUS_USER%", "password": "%env.NEXUS_PASSWORD%"}}}""" }) ``` ## Параметры ### DockerBuildConfig | Параметр | По умолчанию | Описание | |----------|--------------|----------| | registry | registry.dot-dot.ru | Docker registry URL | | dockerfile | Dockerfile | Путь к Dockerfile | | tag | %teamcity.build.branch% | Тег образа | | buildArgs | --pull | Аргументы docker build | | dockerRegistryId | PROJECT_EXT_2 | ID подключения к registry в TeamCity | | extraHosts | [] | Дополнительные хосты (host:ip) | | enableVcsTrigger | true | Включить VCS триггер | | giteaUrl | https://gitea.dot-dot.ru/api/v1 | URL Gitea API | | giteaTokenId | credentialsJSON:gitea-token | ID токена Gitea | ### PhpDockerBuildConfig (наследует DockerBuildConfig) | Параметр | По умолчанию | Описание | |----------|--------------|----------| | backendDir | backend | Директория с PHP кодом | | ciImage | null | CI образ для линтеров (по умолчанию {project}-ci:latest) | | enableCs | false | Включить проверку code style | | enableAnalyse | false | Включить статический анализ | | composerAuth | null | Содержимое auth.json | | nexusHost | nexus.dot-dot.ru | Хост Nexus | | nexusIp | 192.168.100.110 | IP Nexus для /etc/hosts |