From 66e4ae51423e2dde5edd5ffea4a13dfab4621192 Mon Sep 17 00:00:00 2001 From: LexManos Date: Tue, 2 Dec 2025 15:31:40 -0800 Subject: [PATCH] Migrate to Github Actions --- .github/workflows/publish.yml | 28 +++++ .teamcity/pom.xml | 104 ----------------- .teamcity/settings.kts | 208 ---------------------------------- build.gradle | 4 + 4 files changed, 32 insertions(+), 312 deletions(-) create mode 100644 .github/workflows/publish.yml delete mode 100644 .teamcity/pom.xml delete mode 100644 .teamcity/settings.kts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000000..a2fb3631f6 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,28 @@ +name: Publish + +on: + push: + branches: [ '1.19.2' ] + +permissions: + contents: read + +jobs: + build: + uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@main + with: + java: 17 + gradle_setup: './gradlew setup' + gradle_tasks: 'build publish' + artifact_name: 'forge' + secrets: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }} + PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }} + PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }} + MAVEN_USER: ${{ secrets.MAVEN_USER }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + SIGN_KEY_ALIAS: ${{ secrets.SIGN_KEY_ALIAS }} + SIGN_KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD }} + SIGN_KEYSTORE_PASSWORD: ${{ secrets.SIGN_KEYSTORE_PASSWORD }} + SIGN_KEYSTORE_DATA: ${{ secrets.SIGN_KEYSTORE_DATA }} \ No newline at end of file diff --git a/.teamcity/pom.xml b/.teamcity/pom.xml deleted file mode 100644 index a8a6f382b4..0000000000 --- a/.teamcity/pom.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - 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 deleted file mode 100644 index 0bb215e441..0000000000 --- a/.teamcity/settings.kts +++ /dev/null @@ -1,208 +0,0 @@ -import jetbrains.buildServer.configs.kotlin.v2019_2.* -import jetbrains.buildServer.configs.kotlin.v2019_2.projectFeatures.githubIssues -import jetbrains.buildServer.configs.kotlin.* -import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.gradle - -/* -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) - buildType(PullRequestChecks) - buildType(PullRequestCompatibility) - - params { - text("docker_jdk_version", "17", 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.4", 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.19.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_FML_ARTIFACT_ID", "fmlonly", label = "Published fmlonly artifact id", description = "The maven coordinate artifact id for fml only that has been published by this build. Can not be empty.", allowEmpty = false) - text("env.PUBLISHED_JAVA_FML_ARTIFACT_VERSION", "0.0.0-SNAPSHOT", label = "Published fmlonly artifact version", description = "The version for fml only 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." - - features { - feature { - id = "trigger_fml_only_files_generator" - type = "triggerBuildFeature" - param("triggers", "MinecraftForge_FilesGenerator_GeneratePages") - param("parameters", """ - env.PUBLISHED_JAVA_FML_ARTIFACT_ID~env.PUBLISHED_JAVA_ARTIFACT_ID - env.PUBLISHED_JAVA_FML_ARTIFACT_VERSION~env.PUBLISHED_JAVA_ARTIFACT_VERSION - env.PUBLISHED_JAVA_GROUP - """.trimIndent()) - } - } -}) - -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 - ) - } - - vcs { - branchFilter = """ - +:* - -:1.* - -: - """.trimIndent() - } -}) - -object PullRequestChecks : BuildType({ - templates(AbsoluteId("MinecraftForge_BuildPullRequests"), AbsoluteId("MinecraftForge_SetupGradleUtilsCiEnvironmen"), AbsoluteId("MinecraftForge_BuildWithDiscordNotifications"), AbsoluteId("MinecraftForge_SetupProjectUsingGradle")) - id("MinecraftForge_MinecraftForge__PullRequestChecks") - name = "Pull Requests (Checks)" - description = "Checks pull requests for the project" - - steps { - gradle { - name = "Check" - id = "RUNNER_10_Check" - - tasks = "checkAll" - gradleParams = "--continue %gradle_custom_args%" - enableStacktrace = true - dockerImage = "%docker_gradle_image%" - dockerRunParameters = """ - -v "/opt/cache/agent/gradle:/home/gradle/.gradle" - -v "/opt/cache/shared/gradle:/home/gradle/rocache:ro" - --network=host - -u 1000:1000 - %docker_additional_args% - """.trimIndent() - } - } - - vcs { - branchFilter = """ - +:* - -:1.* - -: - """.trimIndent() - } -}) - -object PullRequestCompatibility : BuildType({ - templates(AbsoluteId("MinecraftForge_BuildPullRequests"), AbsoluteId("MinecraftForge_SetupGradleUtilsCiEnvironmen"), AbsoluteId("MinecraftForge_BuildWithDiscordNotifications"), AbsoluteId("MinecraftForge_SetupProjectUsingGradle")) - id("MinecraftForge_MinecraftForge__PullRequestCompatibility") - name = "Pull Requests (Compatibility)" - description = "Validates binary compatibility for pull requests made to the project" - - steps { - gradle { - name = "Validate" - id = "RUNNER_10_Compatibility" - - tasks = "checkJarCompatibility" - gradleParams = "--continue %gradle_custom_args%" - enableStacktrace = true - dockerImage = "%docker_gradle_image%" - dockerRunParameters = """ - -v "/opt/cache/agent/gradle:/home/gradle/.gradle" - -v "/opt/cache/shared/gradle:/home/gradle/rocache:ro" - --network=host - -u 1000:1000 - %docker_additional_args% - """.trimIndent() - } - } - - vcs { - branchFilter = """ - +:* - -:1.* - -: - """.trimIndent() - } -}) diff --git a/build.gradle b/build.gradle index 1a60a847c5..29e6848f1b 100644 --- a/build.gradle +++ b/build.gradle @@ -1617,6 +1617,10 @@ project(':forge') { } } } + + tasks.named('checkLicenseMain') { + mustRunAfter 'extractMapped' + } reobfJar { tool = FART