TeamCity change in 'Spring Petclinic' project: Synchronization with own VCS root is enabled

This commit is contained in:
tommaso@teklada.com 2024-05-18 14:49:43 +00:00 committed by teamcity
parent 53ae1cef35
commit c58aa26b05
2 changed files with 244 additions and 0 deletions

104
.teamcity/pom.xml vendored Normal file
View file

@ -0,0 +1,104 @@
<?xml version="1.0"?>
<project>
<modelVersion>4.0.0</modelVersion>
<name>SpringPetclinic Config DSL Script</name>
<groupId>SpringPetclinic</groupId>
<artifactId>SpringPetclinic_dsl</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.jetbrains.teamcity</groupId>
<artifactId>configs-dsl-kotlin-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<repositories>
<repository>
<id>jetbrains-all</id>
<url>https://download.jetbrains.com/teamcity-repository</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>teamcity-server</id>
<url>https://teklada.teamcity.com/app/dsl-plugins-repository</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>JetBrains</id>
<url>https://download.jetbrains.com/teamcity-repository</url>
</pluginRepository>
</pluginRepositories>
<build>
<sourceDirectory>${basedir}</sourceDirectory>
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<configuration/>
<executions>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>process-test-sources</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jetbrains.teamcity</groupId>
<artifactId>teamcity-configs-maven-plugin</artifactId>
<version>${teamcity.dsl.version}</version>
<configuration>
<format>kotlin</format>
<dstDir>target/generated-configs</dstDir>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jetbrains.teamcity</groupId>
<artifactId>configs-dsl-kotlin-latest</artifactId>
<version>${teamcity.dsl.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.teamcity</groupId>
<artifactId>configs-dsl-kotlin-plugins-latest</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-script-runtime</artifactId>
<version>${kotlin.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

140
.teamcity/settings.kts vendored Normal file
View file

@ -0,0 +1,140 @@
import jetbrains.buildServer.configs.kotlin.*
import jetbrains.buildServer.configs.kotlin.buildFeatures.PullRequests
import jetbrains.buildServer.configs.kotlin.buildFeatures.commitStatusPublisher
import jetbrains.buildServer.configs.kotlin.buildFeatures.notifications
import jetbrains.buildServer.configs.kotlin.buildFeatures.perfmon
import jetbrains.buildServer.configs.kotlin.buildFeatures.pullRequests
import jetbrains.buildServer.configs.kotlin.buildSteps.kotlinFile
import jetbrains.buildServer.configs.kotlin.buildSteps.maven
import jetbrains.buildServer.configs.kotlin.triggers.vcs
/*
The settings script is an entry point for defining a TeamCity
project hierarchy. The script should contain a single call to the
project() function with a Project instance or an init function as
an argument.
VcsRoots, BuildTypes, Templates, and subprojects can be
registered inside the project using the vcsRoot(), buildType(),
template(), and subProject() methods respectively.
To debug settings scripts in command-line, run the
mvnDebug org.jetbrains.teamcity:teamcity-configs-maven-plugin:generate
command and attach your debugger to the port 8000.
To debug in IntelliJ Idea, open the 'Maven Projects' tool window (View
-> Tool Windows -> Maven Projects), find the generate task node
(Plugins -> teamcity-configs -> teamcity-configs:generate), the
'Debug' option is available in the context menu for the task.
*/
version = "2024.03"
project {
buildType(Build)
buildType(Deploy)
params {
text("notified_persons", """
tommaso@teklada.com
tpgionfriddo@gmail.com
""".trimIndent(),
regex = """^((([\w-\.]+@([\w-]+\.)+[\w-]{2,4})) *(\r\n|\r|\n) *)*(([\w-\.]+@([\w-]+\.)+[\w-]{2,4}))${'$'}""")
param("repo_name", "spring-petclinic")
password("github_key", "credentialsJSON:405d3744-add6-49d5-a271-6dfd185492c2")
param("repo_owner", "TPG-Teklada")
}
}
object Build : BuildType({
name = "Build"
artifactRules = "+:target/*.jar"
publishArtifacts = PublishMode.SUCCESSFUL
params {
param("maven.project.version", "1")
param("maven.project.artifactId", "%repo_name%")
}
vcs {
root(DslContext.settingsRoot)
}
steps {
maven {
name = "build"
id = "build"
goals = "package"
}
}
triggers {
vcs {
branchFilter = "+:pull/*"
}
}
features {
perfmon {
}
pullRequests {
provider = github {
authType = vcsRoot()
filterAuthorRole = PullRequests.GitHubRoleFilter.MEMBER_OR_COLLABORATOR
}
}
commitStatusPublisher {
publisher = github {
githubUrl = "https://api.github.com"
authType = vcsRoot()
}
}
}
})
object Deploy : BuildType({
name = "Deploy"
vcs {
root(DslContext.settingsRoot)
}
steps {
kotlinFile {
id = "kotlinScript"
path = "github_release.main.kts"
arguments = """-repoOwner "%repo_owner%" -repoName "%repo_name%" -tagName "v${Build.depParamRefs["maven.project.version"]}" -releaseName "Release ${Build.depParamRefs["maven.project.version"]}" -description "Description of the release" -filePath "${Build.depParamRefs["maven.project.artifactId"]}-${Build.depParamRefs["maven.project.version"]}.jar" -token "%github_key%""""
}
}
triggers {
vcs {
branchFilter = ""
}
}
features {
notifications {
notifierSettings = emailNotifier {
email = "%notified_persons%"
}
buildFinishedSuccessfully = true
}
}
dependencies {
dependency(Build) {
snapshot {
onDependencyFailure = FailureAction.FAIL_TO_START
}
artifacts {
artifactRules = "+:*.jar"
}
}
}
})