ci-templates/README.md

88 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CI Templates
Переиспользуемые TeamCity DSL шаблоны для проектов dot-dot.ru.
## Подключение к проекту
### 1. Добавить зависимость в pom.xml вашего проекта
```xml
<dependency>
<groupId>ru.dot-dot.ci</groupId>
<artifactId>ci-templates</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
```
### 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 |