diff --git a/.teamcity/pom.xml b/.teamcity/pom.xml
new file mode 100644
index 0000000000..a8a6f382b4
--- /dev/null
+++ b/.teamcity/pom.xml
@@ -0,0 +1,104 @@
+
+
+ 4.0.0
+ MinecraftForge_Forge Config DSL Script
+ MinecraftForge_Forge
+ MinecraftForge_Forge_dsl
+ 1.0-SNAPSHOT
+
+
+ org.jetbrains.teamcity
+ configs-dsl-kotlin-parent
+ 1.0-SNAPSHOT
+
+
+
+
+ jetbrains-all
+ https://download.jetbrains.com/teamcity-repository
+
+ true
+
+
+
+ teamcity-server
+ https://teamcity.minecraftforge.net/app/dsl-plugins-repository
+
+ true
+
+
+
+
+
+
+ JetBrains
+ https://download.jetbrains.com/teamcity-repository
+
+
+
+
+ ${basedir}
+
+
+ kotlin-maven-plugin
+ org.jetbrains.kotlin
+ ${kotlin.version}
+
+
+
+
+ compile
+ process-sources
+
+ compile
+
+
+
+ test-compile
+ process-test-sources
+
+ test-compile
+
+
+
+
+
+ org.jetbrains.teamcity
+ teamcity-configs-maven-plugin
+ ${teamcity.dsl.version}
+
+ kotlin
+ target/generated-configs
+
+
+
+
+
+
+
+ org.jetbrains.teamcity
+ configs-dsl-kotlin
+ ${teamcity.dsl.version}
+ compile
+
+
+ org.jetbrains.teamcity
+ configs-dsl-kotlin-plugins
+ 1.0-SNAPSHOT
+ pom
+ compile
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-jdk8
+ ${kotlin.version}
+ compile
+
+
+ org.jetbrains.kotlin
+ kotlin-script-runtime
+ ${kotlin.version}
+ compile
+
+
+
\ No newline at end of file
diff --git a/.teamcity/settings.kts b/.teamcity/settings.kts
new file mode 100644
index 0000000000..7b85a9ec5c
--- /dev/null
+++ b/.teamcity/settings.kts
@@ -0,0 +1,113 @@
+import jetbrains.buildServer.configs.kotlin.v2019_2.*
+import jetbrains.buildServer.configs.kotlin.v2019_2.projectFeatures.githubIssues
+
+/*
+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 = "2021.2"
+
+project {
+
+ buildType(Build)
+ buildType(BuildSecondaryBranches)
+ buildType(PullRequests)
+
+ params {
+ text("docker_jdk_version", "8", label = "Gradle version", description = "The version of the JDK to use during execution of tasks in a JDK.", display = ParameterDisplay.HIDDEN, allowEmpty = false)
+ text("docker_gradle_version", "7.3.3", label = "Gradle version", description = "The version of Gradle to use during execution of Gradle tasks.", display = ParameterDisplay.HIDDEN, allowEmpty = false)
+ text("git_main_branch", "1.18.x", label = "Git Main Branch", description = "The git main or default branch to use in VCS operations.", display = ParameterDisplay.HIDDEN, allowEmpty = false)
+ text("git_branch_spec", """
+ +:refs/heads/(main*)
+ +:refs/heads/(master*)
+ +:refs/heads/(develop|release|staging|main|master)
+ +:refs/heads/(1.*)
+ """.trimIndent(), label = "The branch specification of the repository", description = "By default all main branches are build by the configuration. Modify this value to adapt the branches build.", display = ParameterDisplay.HIDDEN, allowEmpty = true)
+ text("github_repository_name", "MinecraftForge", label = "The github repository name. Used to connect to it in VCS Roots.", description = "This is the repository slug on github. So for example `MinecraftForge` or `MinecraftForge`. It is interpolated into the global VCS Roots.", display = ParameterDisplay.HIDDEN, allowEmpty = false)
+ text("env.PUBLISHED_JAVA_ARTIFACT_ID", "forge", label = "Published artifact id", description = "The maven coordinate artifact id that has been published by this build. Can not be empty.", allowEmpty = false)
+ text("env.PUBLISHED_JAVA_GROUP", "net.minecraftforge", label = "Published group", description = "The maven coordinate group that has been published by this build. Can not be empty.", allowEmpty = false)
+ //These are references and not actually keys
+ password("env.CROWDIN_KEY", "credentialsJSON:a3102dbe-805d-4177-9f54-3d2c2eb08fd5", display = ParameterDisplay.HIDDEN)
+ password("env.KEYSTORE_URL", "credentialsJSON:a7ae1c82-8058-4061-8d12-7f6bc2618d2e", display = ParameterDisplay.HIDDEN)
+ password("env.KEYSTORE_PASSWORD", "credentialsJSON:d7b964e3-a1fd-47a8-b892-6f601fe47479", display = ParameterDisplay.HIDDEN)
+ text("additional_publishing_gradle_parameters", "-PcrowdinKey=%env.CROWDIN_KEY% -PkeystoreKeyPass=%env.KEYSTORE_PASSWORD% -PkeystoreStorePass=%env.KEYSTORE_PASSWORD% -Pkeystore=%env.KEYSTORE_URL%", label = "Additional gradle parameters for publish", description = "Contains the additional gradle parameters used during publishing.", display = ParameterDisplay.HIDDEN, allowEmpty = true)
+
+ checkbox("should_execute_build", "false", label = "Should build", description = "Indicates if the build task should be executed.", display = ParameterDisplay.HIDDEN,
+ checked = "true", unchecked = "false")
+ checkbox("should_execute_test", "false", label = "Should build", description = "Indicates if the build task should be executed.", display = ParameterDisplay.HIDDEN,
+ checked = "true", unchecked = "false")
+ }
+
+ features {
+ githubIssues {
+ id = "MinecraftForge_MinecraftForge__IssueTracker"
+ displayName = "MinecraftForge/MinecraftForge"
+ repositoryURL = "https://github.com/MinecraftForge/MinecraftForge"
+ }
+ }
+}
+
+object Build : BuildType({
+ templates(AbsoluteId("MinecraftForge_SetupGradleUtilsCiEnvironmen"), AbsoluteId("MinecraftForge_BuildWithDiscordNotifications"), AbsoluteId("MinecraftForge_BuildMainBranches"), AbsoluteId("MinecraftForge_SetupProjectUsingGradle"), AbsoluteId("MinecraftForge_BuildUsingGradle"), AbsoluteId("MinecraftForge_PublishProjectUsingGradle"), AbsoluteId("MinecraftForge_TriggersStaticFilesWebpageGenerator"))
+ id("MinecraftForge_MinecraftForge__Build")
+ name = "Build"
+ description = "Builds and Publishes the main branches of the project."
+})
+
+object BuildSecondaryBranches : BuildType({
+ templates(AbsoluteId("MinecraftForge_ExcludesBuildingDefaultBranch"), AbsoluteId("MinecraftForge_SetupGradleUtilsCiEnvironmen"), AbsoluteId("MinecraftForge_BuildWithDiscordNotifications"), AbsoluteId("MinecraftForge_BuildMainBranches"), AbsoluteId("MinecraftForge_SetupProjectUsingGradle"), AbsoluteId("MinecraftForge_BuildUsingGradle"))
+ id("MinecraftForge_MinecraftForge__BuildSecondaryBranches")
+ name = "Build - Secondary Branches"
+ description = "Builds and Publishes the secondary branches of the project."
+ params {
+ text("git_branch_spec", """
+ +:refs/heads/(*)
+ -:refs/heads/noci*
+ """.trimIndent(), label = "The branch specification of the repository", description = "By default all main branches are build by the configuration. Modify this value to adapt the branches build.", display = ParameterDisplay.HIDDEN, allowEmpty = true)
+ }
+ vcs {
+ branchFilter = """
+ +:*
+ -:1.*
+ -:
+ """.trimIndent()
+ }
+})
+
+object PullRequests : BuildType({
+ templates(AbsoluteId("MinecraftForge_BuildPullRequests"), AbsoluteId("MinecraftForge_SetupGradleUtilsCiEnvironmen"), AbsoluteId("MinecraftForge_BuildWithDiscordNotifications"), AbsoluteId("MinecraftForge_SetupProjectUsingGradle"), AbsoluteId("MinecraftForge_BuildUsingGradle"))
+ id("MinecraftForge_MinecraftForge__PullRequests")
+ name = "Pull Requests"
+ description = "Builds pull requests for the project"
+
+ params {
+ checkbox("should_execute_build", "true", label = "Should build", description = "Indicates if the build task should be executed.", display = ParameterDisplay.HIDDEN,
+ checked = "true", unchecked = "false")
+ text(
+ "gradle_build_task",
+ "assemble",
+ label = "Gradle build task to execute during build",
+ description = "Determines the build task that is executed to build the project.",
+ display = ParameterDisplay.HIDDEN,
+ allowEmpty = false
+ )
+ }
+})
diff --git a/build.gradle b/build.gradle
index 53d96856c8..1854ec6283 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,7 +26,7 @@ import org.gradle.plugins.ide.eclipse.model.SourceFolder
plugins {
id 'org.cadixdev.licenser' version '0.6.1'
id 'com.github.ben-manes.versions' version '0.36.0'
- id 'net.minecraftforge.gradleutils' version '1.+'
+ id 'net.minecraftforge.gradleutils' version '2.+'
id 'eclipse'
}
@@ -48,8 +48,11 @@ ext {
MC_VERSION = '1.16.5'
MCP_VERSION = '20210115.111550'
SPI_VERSION = '3.2.0'
+ MIN_TAG_FOR_CHANGELOG = "36.0"
}
+version = gradleutils.getMCTagOffsetBranchVersion(MC_VERSION)
+
project(':mcp') {
apply plugin: 'net.minecraftforge.gradle.mcp'
repositories {
@@ -450,13 +453,10 @@ project(':forge') {
def extraTxts = [
rootProject.file('CREDITS.txt'),
- rootProject.file('LICENSE.txt')
+ rootProject.file('LICENSE.txt'),
+ rootProject.file('build/changelog.txt'),
]
-
- def changelog = rootProject.file('build/changelog.txt')
- if (changelog.exists())
- extraTxts += changelog
-
+
task crowdin(type: Crowdin) {
key = project.hasProperty('crowdinKey') ? project.crowdinKey : null
//TODO: Merge our english.json?
@@ -804,6 +804,10 @@ project(':forge') {
}
}
}
+
+ afterEvaluate {
+ dependsOn project.rootProject.tasks.createChangelog
+ }
}
task launcherJar(type: Jar) {
@@ -872,6 +876,10 @@ project(':forge') {
duplicatesStrategy = 'exclude'
}
}
+
+ afterEvaluate {
+ dependsOn project.rootProject.tasks.createChangelog
+ }
}
[universalJar, launcherJar, installerJar].each { t ->
@@ -923,6 +931,10 @@ project(':forge') {
rename 'gitignore\\.txt', '.gitignore'
rename 'gitattributes\\.txt', '.gitattributes'
}
+
+ afterEvaluate {
+ dependsOn project.rootProject.tasks.createChangelog
+ }
}
userdevConfig {
@@ -995,7 +1007,7 @@ project(':forge') {
}
}
}
-
+
license {
header = file("$rootDir/LICENSE-header.txt")
@@ -1075,11 +1087,6 @@ project(':forge') {
publications {
mavenJava(MavenPublication) {
artifact universalJar
- if (changelog.exists()) {
- artifact(changelog) {
- classifier = 'changelog'
- }
- }
artifact installerJar
//TODO: installer-win
artifact makeMdk
@@ -1114,20 +1121,7 @@ project(':forge') {
}
}
repositories {
- maven {
- if (System.env.MAVEN_USER) {
- url "https://maven.minecraftforge.net/releases/"
- authentication {
- basic(BasicAuthentication)
- }
- credentials {
- username = System.env.MAVEN_USER ?: 'not'
- password = System.env.MAVEN_PASSWORD ?: 'set'
- }
- } else {
- url 'file://' + rootProject.file('repo').getAbsolutePath()
- }
- }
+ maven gradleutils.getPublishingForgeMaven()
}
}
}
@@ -1137,3 +1131,7 @@ task setup() {
dependsOn ':clean:extractMapped'
dependsOn ':forge:extractMapped' //These must be strings so that we can do lazy resolution. Else we need evaluationDependsOnChildren above
}
+
+changelog {
+ fromTag MIN_TAG_FOR_CHANGELOG
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 05679dc3c1..2e6e5897b5 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists