Skip to content

Commit 1c0327d

Browse files
committed
Fix release workflow
1 parent 793ccef commit 1c0327d

File tree

3 files changed

+52
-31
lines changed

3 files changed

+52
-31
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
- name: Set up JDK
4949
uses: actions/setup-java@v1
5050
with:
51-
java-version: 13
51+
java-version: 8
5252
- name: Prepare
5353
run: ./gradlew clean dependencies
5454
- name: Assemble
@@ -63,10 +63,10 @@ jobs:
6363
PUBLISH_DIR: ./build/dokka
6464
with:
6565
emptyCommits: false
66-
- name: Publish Snapshot JAR
67-
run: ./gradlew publish
66+
- name: Publish Snapshot Artifacts
67+
run: ./gradlew publishSnapshot
6868
env:
69-
ORG_GRADLE_PROJECT_githubRepository: ${{ github.repository }}
70-
ORG_GRADLE_PROJECT_githubToken: ${{ github.token }}
7169
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.PACKAGE_SIGNING_KEY }}
7270
ORG_GRADLE_PROJECT_signingKeyPassword: ${{ secrets.PACKAGE_SIGNING_KEY_PASSWORD }}
71+
ORG_GRADLE_PROJECT_githubRepository: ${{ github.repository }}
72+
ORG_GRADLE_PROJECT_githubToken: ${{ github.token }}

.github/workflows/release.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Java CI
1+
name: Release
22

33
on:
44
release:
@@ -18,16 +18,17 @@ jobs:
1818
restore-keys: |
1919
gradle-${{ runner.os }}
2020
gradle-
21-
- name: Set up JDK 13
21+
- name: Set up JDK
2222
uses: actions/setup-java@v1
2323
with:
24-
java-version: 13
24+
java-version: 8
2525
- name: Prepare
2626
run: ./gradlew clean dependencies
2727
- name: Release to Maven Central
2828
run: ./gradlew release
2929
env:
3030
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.PACKAGE_SIGNING_KEY }}
3131
ORG_GRADLE_PROJECT_signingKeyPassword: ${{ secrets.PACKAGE_SIGNING_KEY_PASSWORD }}
32+
ORG_GRADLE_PROJECT_githubRepository: ${{ github.repository }}
3233
ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }}
33-
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrtes.OSSRH_PASSWORD }}
34+
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}

build.gradle.kts

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
import org.jetbrains.dokka.gradle.DokkaTask
22
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
3+
import de.marcphilipp.gradle.nexus.NexusRepository
34

45
plugins {
56
kotlin("jvm").version("1.3.61")
67
id("org.jetbrains.dokka") version "0.10.0"
78
`maven-publish`
89
signing
10+
id("de.marcphilipp.nexus-publish") version "0.4.0"
911
id("io.codearte.nexus-staging") version "0.21.2"
12+
id("com.palantir.git-version") version "0.12.2"
1013
idea
1114
}
1215

1316
group = "de.joshuagleitze"
14-
version = project.findProperty("releaseVersion") ?: "SNAPSHOT"
17+
version = if (isSnapshot) versionDetails.gitHash else versionDetails.lastTag.drop("v")
18+
status = if (isSnapshot) "snapshot" else "release"
1519

1620
repositories {
1721
jcenter()
@@ -74,6 +78,8 @@ artifacts {
7478
}
7579

7680
lateinit var publication: MavenPublication
81+
lateinit var snapshotRepository: ArtifactRepository
82+
lateinit var releaseRepository: NexusRepository
7783

7884
publishing {
7985
publications {
@@ -117,26 +123,25 @@ publishing {
117123
}
118124
}
119125
repositories {
120-
if (project.isSnapshot) {
121-
maven("https://maven.pkg.github.com/$githubRepository") {
122-
name = "GitHub-Packages"
123-
credentials {
124-
username = githubOwner
125-
password = githubToken
126-
}
127-
}
128-
} else {
129-
maven("https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
130-
name = "OSSRH-Staging"
131-
credentials {
132-
username = ossrhUsername
133-
password = ossrhPassword
134-
}
126+
snapshotRepository = maven("https://maven.pkg.github.com/$githubRepository") {
127+
name = "GitHubPackages"
128+
credentials {
129+
username = githubOwner
130+
password = githubToken
135131
}
136132
}
137133
}
138134
}
139135

136+
nexusPublishing {
137+
repositories {
138+
releaseRepository = sonatype {
139+
username.set(ossrhUsername)
140+
password.set(ossrhPassword)
141+
}
142+
}
143+
}
144+
140145
signing {
141146
val signingKey: String? by project
142147
val signingKeyPassword: String? by project
@@ -149,15 +154,21 @@ nexusStaging {
149154
password = ossrhPassword
150155
}
151156

152-
val closeAndPromoteRepository by project.tasks
157+
val closeAndReleaseRepository by project.tasks
153158
val publish by tasks
154159

160+
task("publishSnapshot") {
161+
group = "publishing"
162+
description = "Publishes a snapshot of the project to GitHub Packages"
163+
dependsOn(snapshotRepository.publishTask)
164+
}
165+
155166
task("release") {
156167
group = "release"
157-
description = "Publishes the project to Maven Central"
158-
dependsOn(publish)
159-
dependsOn(closeAndPromoteRepository)
160-
closeAndPromoteRepository.mustRunAfter(publish)
168+
description = "Releases the project to Maven Central"
169+
dependsOn(releaseRepository.publishTask)
170+
dependsOn(closeAndReleaseRepository)
171+
closeAndReleaseRepository.mustRunAfter(releaseRepository.publishTask)
161172
}
162173

163174
idea {
@@ -167,4 +178,13 @@ idea {
167178
}
168179
}
169180

170-
val Project.isSnapshot get() = this.version == "SNAPSHOT"
181+
val Project.isSnapshot get() = versionDetails.commitDistance != 0
182+
183+
fun String.drop(prefix: String) = if (this.startsWith(prefix)) this.drop(prefix.length) else this
184+
185+
val Project.versionDetails
186+
get() = (this.extra["versionDetails"] as groovy.lang.Closure<*>)() as com.palantir.gradle.gitversion.VersionDetails
187+
188+
189+
val ArtifactRepository.publishTask get() = tasks["publishAllPublicationsTo${this.name}Repository"]
190+
val NexusRepository.publishTask get() = tasks["publishTo${this.name.capitalize()}"]

0 commit comments

Comments
 (0)