-
Notifications
You must be signed in to change notification settings - Fork 3
/
Jenkinsfile
108 lines (106 loc) · 3.16 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env groovy
// noinspection GroovyAssignabilityCheck
RELEASE_BRANCHES = ["main", "1.19"]
pipeline {
agent any
tools {
jdk "jdk-17"
}
parameters {
booleanParam(
name: "PUBLISH_MAVEN_RELEASE",
description: "Publish release to Maven (default: publish snapshot)",
defaultValue: false,
)
booleanParam(
name: "PUBLISH_CURSEFORGE",
description: "Publish to CurseForge",
defaultValue: false,
)
booleanParam(
name: "PUBLISH_MODRINTH",
description: "Publish to Modrinth",
defaultValue: false,
)
booleanParam(
name: "PUBLISH_GITHUB",
description: "Publish to GitHub",
defaultValue: false,
)
}
stages {
stage("Clean") {
steps {
sh "chmod +x gradlew"
sh "./gradlew clean"
}
}
stage("Build") {
steps {
sh "./gradlew build"
}
}
stage("Check Datagen") {
options {
timeout(time: 5, unit: 'MINUTES')
}
steps {
sh "./gradlew runAllDatagen"
sh "git add --intent-to-add ."
sh "git diff --name-only --exit-code -- \":!:*/src/generated/resources/.cache/*\""
}
}
stage("Publish") {
when {
expression { env.BRANCH_NAME in RELEASE_BRANCHES }
}
stages {
stage("Publish: Maven") {
steps {
sh "./gradlew publish"
}
}
stage("Publish: GitHub") {
when {
expression { params.PUBLISH_GITHUB }
}
environment {
GITHUB_TOKEN = credentials("github-release-pat")
GITHUB_REPOSITORY = "object-Object/HexDebug"
GITHUB_SHA = "${env.GIT_COMMIT}"
}
steps {
sh "./gradlew publishGithub"
}
}
stage("Publish: CurseForge") {
when {
expression { params.PUBLISH_CURSEFORGE }
}
environment {
CURSEFORGE_TOKEN = credentials("curseforge-token")
}
steps {
sh "./gradlew publishCurseforge"
}
}
stage("Publish: Modrinth") {
when {
expression { params.PUBLISH_MODRINTH }
}
environment {
MODRINTH_TOKEN = credentials("modrinth-pat")
}
steps {
sh "./gradlew publishModrinth"
}
}
}
}
}
post {
always {
archiveArtifacts "build/jenkinsArtifacts/*"
}
}
}