88 lines
3.1 KiB
Markdown
88 lines
3.1 KiB
Markdown
# 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 |
|