Refactor build scripts and Jenkinsfile

This commit is contained in:
akastijn 2025-06-28 21:50:17 +02:00
parent 0d31d85fd4
commit de03444bc6
5 changed files with 61 additions and 116 deletions

62
Jenkinsfile vendored
View File

@ -3,39 +3,39 @@ pipeline {
stages { stages {
stage('Gradle') { stage('Gradle') {
steps { steps {
withCredentials([usernamePassword(credentialsId: 'alttd-publish-user', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { withCredentials([usernamePassword(credentialsId: 'alttd-publish-user', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh ''' sh '''
chmod +x gradlew chmod +x gradlew
./gradlew build -PalttdDevPublishUser=$USERNAME -PalttdDevPublishPass=$PASSWORD ./gradlew build -PalttdDevPublishUser=$USERNAME -PalttdDevPublishPass=$PASSWORD
''' '''
}
}
}
stage('Publish to Maven') {
steps {
withCredentials([usernamePassword(credentialsId: 'alttd-publish-user', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh '''
chmod +x gradlew
./gradlew publish -PalttdDevPublishUser=$USERNAME -PalttdDevPublishPass=$PASSWORD
'''
}
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: 'build/libs/', followSymlinks: false
}
}
stage('discord') {
when {
anyOf {
branch 'main'
branch 'master'
} }
} }
steps { }
discordSend description: "Build: ${BUILD_NUMBER}", showChangeset: true, result: currentBuild.currentResult, title: currentBuild.fullProjectName, webhookURL: env.discordwebhook }
} stage('Publish to Maven') {
steps {
withCredentials([usernamePassword(credentialsId: 'alttd-publish-user', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh '''
chmod +x gradlew
./gradlew :api:publish -PalttdDevPublishUser=$USERNAME -PalttdDevPublishPass=$PASSWORD
'''
}
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: 'plugin/build/libs/DataLockLib*.jar, api/build/libs/DataLockLibApi*.jar', followSymlinks: false
}
}
stage('discord') {
when {
anyOf {
branch 'main'
branch 'master'
}
}
steps {
discordSend description: "Build: ${BUILD_NUMBER}", showChangeset: true, result: currentBuild.currentResult, title: currentBuild.fullProjectName, webhookURL: env.discordwebhook
} }
} }
} }

View File

@ -1,31 +1,28 @@
plugins { plugins {
`maven-publish` id("java-library")
id("maven-publish")
} }
dependencies { // Configure API-specific settings
compileOnly("io.papermc.paper:paper-api:1.21.6-R0.1-SNAPSHOT") base {
} archivesName.set("DataLockLibApi")
tasks {
jar {
enabled = true
}
} }
publishing { publishing {
publications { publications {
create<MavenPublication>("mavenJava") { create<MavenPublication>("mavenJava") {
artifactId = "api"
from(components["java"]) from(components["java"])
} }
} }
repositories{ repositories {
maven { maven {
name = "nexus" name = "nexus"
url = uri("https://repo.alttd.com/repository/alttd-snapshot/") url = uri("https://repo.alttd.com/repository/alttd-snapshot/")
credentials { credentials {
username = project.property("alttdDevPublishUser") as String username = project.findProperty("alttdDevPublishUser")?.toString()
password = project.property("alttdDevPublishPass") as String password = project.findProperty("alttdDevPublishPass")?.toString()
} }
} }
} }

View File

@ -1,6 +1,6 @@
plugins { plugins {
id("java") id("java")
id("maven-publish")
} }
allprojects { allprojects {
@ -10,41 +10,21 @@ allprojects {
} }
subprojects { subprojects {
apply<JavaLibraryPlugin>() apply(plugin = "java-library")
apply(plugin = "maven-publish")
java { java {
toolchain { toolchain {
languageVersion.set(JavaLanguageVersion.of(21)) languageVersion.set(JavaLanguageVersion.of(21))
} }
} }
}
tasks { dependencies {
jar { compileOnly("io.papermc.paper:paper-api:1.21.6-R0.1-SNAPSHOT")
enabled = true
}
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
from(components["java"])
}
} }
repositories{ tasks {
maven { jar {
name = "nexus" from(sourceSets.main.get().output)
url = uri("https://repo.alttd.com/repository/alttd-snapshot/")
credentials {
username = project.property("alttdDevPublishUser") as String
password = project.property("alttdDevPublishPass") as String
}
} }
} }
} }
dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.6-R0.1-SNAPSHOT")
}

View File

@ -1,56 +1,23 @@
import java.io.ByteArrayOutputStream
import java.io.FileOutputStream
import java.net.URL
plugins { plugins {
`maven-publish` id("java-library")
id("net.minecrell.plugin-yml.bukkit") version "0.5.1" id("net.minecrell.plugin-yml.bukkit") version "0.6.0" // Plugin for generating plugin.yml
id("xyz.jpenilla.run-paper") version "1.0.6"
} }
dependencies { dependencies {
implementation(project(":api")) // API implementation(project(":api"))
compileOnly("io.papermc.paper:paper-api:1.21.6-R0.1-SNAPSHOT")
} }
tasks { // Plugin-specific configurations
base {
jar { archivesName.set("DataLockLib")
enabled = true
}
} }
// Bukkit plugin configuration
bukkit { bukkit {
name = rootProject.name name = rootProject.name
main = "$group.${rootProject.name}" main = "${project.group}.${rootProject.name}"
version = gitCommit()
apiVersion = "1.21" apiVersion = "1.21"
authors = listOf("Teriuihi") authors = listOf("Teriuihi")
} description = project.description
version = project.version.toString()
fun gitCommit(): String {
val os = ByteArrayOutputStream()
project.exec {
isIgnoreExitValue = true
commandLine = "git rev-parse --short HEAD".split(" ")
standardOutput = os
}
return String(os.toByteArray()).trim()
}
fun download(link: String, path: File) {
URL(link).openStream().use { input ->
FileOutputStream(path).use { output ->
input.copyTo(output)
}
}
}
bukkit {
name = rootProject.name
main = "$group.${rootProject.name}"
version = gitCommit()
apiVersion = "1.21"
authors = listOf("akastijn")
} }

View File

@ -1,8 +1,5 @@
rootProject.name = "DataLockLib" rootProject.name = "DataLockLib"
val nexusUser = providers.gradleProperty("alttdDevPublishUser").get()
val nexusPass = providers.gradleProperty("alttdDevPublishPass").get()
include(":api") include(":api")
include(":plugin") include(":plugin")
@ -20,5 +17,9 @@ dependencyResolutionManagement {
pluginManagement { pluginManagement {
repositories { repositories {
gradlePluginPortal() gradlePluginPortal()
maven {
name = "papermc"
url = uri("https://repo.papermc.io/repository/maven-public/")
}
} }
} }