|
| 1 | +pipeline { |
| 2 | + agent any |
| 3 | + |
| 4 | + tools { |
| 5 | + jdk "Temurin Java 21" |
| 6 | + } |
| 7 | + |
| 8 | + triggers { |
| 9 | + githubPush() |
| 10 | + } |
| 11 | + |
| 12 | + environment { |
| 13 | + DISCORD_WEBHOOK_URL = credentials('polydev-discord-webhook-url') |
| 14 | + } |
| 15 | + |
| 16 | + stages { |
| 17 | + stage('Checkout') { |
| 18 | + steps { |
| 19 | + scmSkip(deleteBuild: true) |
| 20 | + } |
| 21 | + } |
| 22 | + |
| 23 | + stage('Setup Gradle') { |
| 24 | + steps { |
| 25 | + sh 'chmod +x gradlew' |
| 26 | + } |
| 27 | + } |
| 28 | + |
| 29 | + stage('Build') { |
| 30 | + steps { |
| 31 | + withGradle { |
| 32 | + sh './gradlew build --rerun-tasks -x check' |
| 33 | + sh './gradlew javadoc' |
| 34 | + } |
| 35 | + } |
| 36 | + |
| 37 | + post { |
| 38 | + success { |
| 39 | + archiveArtifacts artifacts: 'platforms/fabric/build/libs/Terra-fabric*.jar,platforms/bukkit/build/libs/Terra-bukkit*-shaded.jar,platforms/allay/build/libs/Terra-allay*.jar,platforms/minestom/build/libs/Terra-minestom*.jar', fingerprint: true, onlyIfSuccessful: true |
| 40 | + |
| 41 | + javadoc javadocDir: 'common/api/build/docs/javadoc', keepAll: true |
| 42 | + } |
| 43 | + } |
| 44 | + } |
| 45 | + |
| 46 | + stage('Tests') { |
| 47 | + steps { |
| 48 | + withGradle { |
| 49 | + sh './gradlew test --rerun-tasks' |
| 50 | + } |
| 51 | + } |
| 52 | + } |
| 53 | + |
| 54 | +// stage('Deploy to snapshots repositories') { |
| 55 | +// when { |
| 56 | +// allOf { |
| 57 | +// not { buildingTag() } |
| 58 | +// not { expression { env.TAG_NAME != null && env.TAG_NAME.matches('v\\d+\\.\\d+\\.\\d+') } } |
| 59 | +// } |
| 60 | +// } |
| 61 | +// |
| 62 | +// steps { |
| 63 | +// withCredentials([ |
| 64 | +// string(credentialsId: 'maven-signing-key', variable: 'ORG_GRADLE_PROJECT_signingKey'), |
| 65 | +// string(credentialsId: 'maven-signing-key-password', variable: 'ORG_GRADLE_PROJECT_signingPassword'), |
| 66 | +// usernamePassword( |
| 67 | +// credentialsId: 'solo-studios-maven', |
| 68 | +// passwordVariable: 'ORG_GRADLE_PROJECT_SoloStudiosSnapshotsPassword', |
| 69 | +// usernameVariable: 'ORG_GRADLE_PROJECT_SoloStudiosSnapshotsUsername' |
| 70 | +// ) |
| 71 | +// ]) { |
| 72 | +// withGradle { |
| 73 | +// sh './gradlew publishAllPublicationsToSoloStudiosSnapshotsRepository' |
| 74 | +// } |
| 75 | +// } |
| 76 | +// } |
| 77 | +// } |
| 78 | + |
| 79 | + stage('Deploy to releases repositories') { |
| 80 | +// when { |
| 81 | +// allOf { |
| 82 | +// buildingTag() |
| 83 | +// expression { env.TAG_NAME != null && env.TAG_NAME.matches('v\\d+\\.\\d+\\.\\d+') } |
| 84 | +// } |
| 85 | +// } |
| 86 | + |
| 87 | + steps { |
| 88 | + withCredentials([ |
| 89 | + string(credentialsId: 'maven-signing-key', variable: 'ORG_GRADLE_PROJECT_signingKey'), |
| 90 | + string(credentialsId: 'maven-signing-key-password', variable: 'ORG_GRADLE_PROJECT_signingPassword'), |
| 91 | + usernamePassword( |
| 92 | + credentialsId: 'solo-studios-maven', |
| 93 | + passwordVariable: 'ORG_GRADLE_PROJECT_SoloStudiosReleasesPassword', |
| 94 | + usernameVariable: 'ORG_GRADLE_PROJECT_SoloStudiosReleasesUsername' |
| 95 | + ), |
| 96 | + // TODO: does not yet exist (uncomment once added) |
| 97 | + // usernamePassword( |
| 98 | + // credentialsId: 'sonatype-maven-credentials', |
| 99 | + // passwordVariable: 'ORG_GRADLE_PROJECT_SonatypePassword', |
| 100 | + // usernameVariable: 'ORG_GRADLE_PROJECT_SonatypeUsername' |
| 101 | + // ), |
| 102 | + // usernamePassword( |
| 103 | + // credentialsId: 'codemc-maven-credentials', |
| 104 | + // passwordVariable: 'ORG_GRADLE_PROJECT_CodeMCPassword', |
| 105 | + // usernameVariable: 'ORG_GRADLE_PROJECT_CodeMCUsername' |
| 106 | + // ) |
| 107 | + ]) { |
| 108 | + withGradle { |
| 109 | + sh './gradlew publish' |
| 110 | + //sh './gradlew publishAllPublicationsToSoloStudiosReleasesRepository' |
| 111 | + // sh './gradlew publishAllPublicationsToSonatypeRepository' |
| 112 | + // sh './gradlew publishAllPublicationsToCodeMCRepository' |
| 113 | + } |
| 114 | + } |
| 115 | + } |
| 116 | + } |
| 117 | + } |
| 118 | + |
| 119 | + post { |
| 120 | + always { |
| 121 | + discoverReferenceBuild() |
| 122 | + |
| 123 | + // junit testResults: '**/build/test-results/*/TEST-*.xml' |
| 124 | + |
| 125 | + recordIssues( |
| 126 | + aggregatingResults: true, |
| 127 | + enabledForFailure: true, |
| 128 | + minimumSeverity: 'ERROR', |
| 129 | + sourceCodeEncoding: 'UTF-8', |
| 130 | + checksAnnotationScope: 'ALL', |
| 131 | + sourceCodeRetention: 'LAST_BUILD', |
| 132 | + tools: [java(), javaDoc()] |
| 133 | + ) |
| 134 | + |
| 135 | + discordSend( |
| 136 | + title: env.JOB_NAME + ' ' + env.BUILD_DISPLAY_NAME, |
| 137 | + showChangeset: true, |
| 138 | + enableArtifactsList: true, |
| 139 | + link: env.BUILD_URL, |
| 140 | + result: currentBuild.currentResult, |
| 141 | + customAvatarUrl: 'https://github.com/PolyhedralDev.png', |
| 142 | + customUsername: 'Solo Studios Jenkins', |
| 143 | + webhookURL: env.DISCORD_WEBHOOK_URL, |
| 144 | + ) |
| 145 | + |
| 146 | + cleanWs() |
| 147 | + } |
| 148 | + } |
| 149 | +} |
0 commit comments