Skip to content

Commit

Permalink
Migrate build to gradle
Browse files Browse the repository at this point in the history
  • Loading branch information
skuzzle committed Sep 7, 2023
1 parent 7581f8a commit a3d1f20
Show file tree
Hide file tree
Showing 208 changed files with 1,125 additions and 622 deletions.
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
version: 2
updates:
- package-ecosystem: "maven"
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "weekly"
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
target
build
out
.gradle

# IntelliJ
.idea/
*.iml
README.md
gradle-enterprise-workspace-id
7 changes: 0 additions & 7 deletions .mvn/extensions.xml

This file was deleted.

16 changes: 0 additions & 16 deletions .mvn/gradle-enterprise.xml

This file was deleted.

37 changes: 26 additions & 11 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,57 @@ pipeline {
}
agent {
docker {
image 'maven:3.6-jdk-11'
args '-v /home/jenkins/.m2:/var/maven/.m2 -v /home/jenkins/.gnupg:/.gnupg -e MAVEN_CONFIG=/var/maven/.m2 -e MAVEN_OPTS=-Duser.home=/var/maven'
// Need an image with git installed that is why we stick with maven image for now though we're using gradle
image 'maven:3.9.4-eclipse-temurin-11'
args '-v /home/jenkins/.m2:/var/maven/.m2 -v /home/jenkins/.gradle:/var/gradle/.gradle -v /home/jenkins/.gnupg:/.gnupg -e GRADLE_OPTS=-Duser.home=/var/gradle -e MAVEN_OPTS=-Duser.home=/var/maven -e MAVEN_CONFIG='
}
}
environment {
COVERALLS_REPO_TOKEN = credentials('coveralls_repo_token_restrict_imports_rule')
GPG_SECRET = credentials('gpg_password')
BUILD_CACHE = credentials('build_cache')
ORG_GRADLE_PROJECT_sonatype = credentials('SONATYPE_NEXUS')
ORG_GRADLE_PROJECT_signingPassword = credentials('gpg_password')
ORG_GRADLE_PROJECT_base64EncodedAsciiArmoredSigningKey = credentials('gpg_private_key')
}
stages {
stage('Build') {
steps {
sh 'mvn -B clean install -Pwith-coverage'
withGradle {
sh './gradlew build'
}
}
}
stage('Coverage') {
stage('Report Coverage') {
steps {
sh 'mvn -B jacoco:report jacoco:report-integration coveralls:report -DrepoToken=$COVERALLS_REPO_TOKEN -Pwith-coverage'
withGradle {
sh './gradlew coveralls'
}
}
}
stage('javadoc') {
stage('readme') {
steps {
sh 'mvn -B javadoc:javadoc'
withGradle {
sh './gradlew generateReadmeAndReleaseNotes'
}
}
}
stage('Deploy SNAPSHOT') {
when {
branch 'develop'
expression {
return env.BRANCH_NAME == 'develop';
}
}
steps {
sh 'mvn -B -Prelease -DskipTests=true -Dgpg.passphrase=${GPG_SECRET} deploy'
withGradle {
sh './gradlew sign publishToSonatype'
}
}
}
}
post {
always {
junit (testResults: '**/target/surefire-reports/**.xml,**/target/*/reports/**.xml', allowEmptyResults: true)
archiveArtifacts(artifacts: '*.md')
junit (testResults: '**/build/test-results/test/**.xml,**/build/*/reports/**.xml', allowEmptyResults: true)
}
}
}
47 changes: 20 additions & 27 deletions JenkinsfileRelease
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@ pipeline {
}
agent {
docker {
image 'maven:3.6-jdk-11'
args '-v /home/jenkins/.m2:/var/maven/.m2 -v /home/jenkins/.gnupg:/.gnupg -e MAVEN_CONFIG=/var/maven/.m2 -e MAVEN_OPTS=-Duser.home=/var/maven'
// Need an image with git installed that is why we stick with maven image for now though we're using gradle
image 'maven:3.9.4-eclipse-temurin-11'
args '-v /home/jenkins/.m2:/var/maven/.m2 -v /home/jenkins/.gradle:/var/gradle/.gradle -v /home/jenkins/.gnupg:/.gnupg -e GRADLE_OPTS=-Duser.home=/var/gradle -e MAVEN_OPTS=-Duser.home=/var/maven -e MAVEN_CONFIG='
}
}
environment {
GPG_SECRET = credentials('gpg_password')
GITHUB = credentials('Github-Username-Pw')
GITHUB_RELEASE_TOKEN = credentials('github_registry_release')
GIT_ASKPASS='./.git-askpass'
}
parameters {
booleanParam(name: 'PUBLISH_GITHUB', defaultValue: true, description: 'Whether to publish a GitHub release')
COVERALLS_REPO_TOKEN = credentials('coveralls_repo_token_restrict_imports_rule')
ORG_GRADLE_PROJECT_ghToken = credentials('github_registry_release')
ORG_GRADLE_PROJECT_sonatype = credentials('SONATYPE_NEXUS')
ORG_GRADLE_PROJECT_signingPassword = credentials('gpg_password')
ORG_GRADLE_PROJECT_base64EncodedAsciiArmoredSigningKey = credentials('gpg_private_key')
}
stages {
stage ('Ensure dev branch') {
Expand All @@ -25,7 +26,7 @@ pipeline {
}
}
steps {
error("Releasing is only possible from develop branch")
error("Releasing is only possible from dev branch")
}
}
stage ('Set Git Information') {
Expand All @@ -39,34 +40,26 @@ pipeline {
sh 'git config user.name "Jenkins"'
}
}
stage('Create release branch') {
steps {
sh 'mvn -B -Prelease gitflow:release-start'
}
}
stage('Verify release') {
steps {
sh 'mvn -B -Prelease -Dgpg.passphrase=${GPG_SECRET} install'
}
}
stage('Update readme') {
stage('Build Release') {
steps {
sh 'git add README.md RELEASE_NOTES.md'
sh 'git commit -m "Update README and RELEASE_NOTES"'
withGradle {
sh './gradlew build'
}
}
}
stage('Perform release') {
steps {
sh "mvn -B gitflow:release-finish -DargLine=\"-Prelease -B -Dgpg.passphrase=${GPG_SECRET} -DskipTests=true\""
withGradle {
sh './gradlew release'
}
}
}
stage('Create GitHub release') {
when {
expression { params.PUBLISH_GITHUB }
}
steps {
sh 'git checkout master'
sh "mvn -B -N github-release:github-release -Dgithub.release-token=${GITHUB_RELEASE_TOKEN}"
withGradle {
sh 'git checkout master'
sh './gradlew githubRelease'
}
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!-- This file is auto generated during release from readme/README.md -->

[![Maven Central](https://img.shields.io/static/v1?label=MavenCentral&message=2.4.0&color=blue)](https://search.maven.org/artifact/de.skuzzle.enforcer/restrict-imports-enforcer-rule/2.4.0/jar)
[![Maven Central](https://img.shields.io/static/v1?label=MavenCentral&message=2.4.1-SNAPSHOT&color=blue)](https://search.maven.org/artifact/de.skuzzle.enforcer/restrict-imports-enforcer-rule/2.4.1-SNAPSHOT/jar)
[![Coverage Status](https://coveralls.io/repos/github/skuzzle/restrict-imports-enforcer-rule/badge.svg?branch=master)](https://coveralls.io/github/skuzzle/restrict-imports-enforcer-rule?branch=master)
[![Twitter Follow](https://img.shields.io/twitter/follow/skuzzleOSS.svg?style=social)](https://twitter.com/skuzzleOSS)

Expand All @@ -12,7 +12,7 @@ usage of unwanted classes! [More](#rationale)
- [x] Groovy (since 0.15)
- [ ] Scala (see [Issue 24](https://github.com/skuzzle/restrict-imports-enforcer-rule/issues/24))

Tested against _maven-enforcer-plugin_ versions `1.4.1` and `3.3.0`.
Tested against _maven-enforcer-plugin_ versions `1.4.1` and `3.4.0`.

## Simple usage
This is a minimal usage example. Please scroll down for detailed configuration
Expand All @@ -22,12 +22,12 @@ information or have a look at the [Full configuration example](#full-configurati
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.3.0</version>
<version>3.4.0</version>
<dependencies>
<dependency>
<groupId>de.skuzzle.enforcer</groupId>
<artifactId>restrict-imports-enforcer-rule-parent</artifactId>
<version>2.4.0</version>
<artifactId>restrict-imports-enforcer-rule</artifactId>
<version>2.4.1-SNAPSHOT</version>
</dependency>
</dependencies>
<executions>
Expand Down
4 changes: 2 additions & 2 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven Central](https://img.shields.io/static/v1?label=MavenCentral&message=2.4.0&color=blue)](https://search.maven.org/artifact/de.skuzzle.enforcer/restrict-imports-enforcer-rule/2.4.0/jar)
[![Maven Central](https://img.shields.io/static/v1?label=MavenCentral&message=2.4.1-SNAPSHOT&color=blue)](https://search.maven.org/artifact/de.skuzzle.enforcer/restrict-imports-enforcer-rule/2.4.1-SNAPSHOT/jar)

### Bug fixes
* [#55](https://github.com/skuzzle/restrict-imports-enforcer-rule/issues/55) Make parallel analysis the default
Expand All @@ -10,6 +10,6 @@ Maven Central coordinates for this release:
<dependency>
<groupId>de.skuzzle.enforcer</groupId>
<artifactId>restrict-imports-enforcer-rule</artifactId>
<version>2.4.0</version>
<version>2.4.1-SNAPSHOT</version>
</dependency>
```
50 changes: 50 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
plugins {
alias(libs.plugins.researchgate.release)
alias(libs.plugins.nexus.publish)
alias(libs.plugins.github.release)
`base-conventions`
}

tasks.named("afterReleaseBuild").configure {
dependsOn(provider {
subprojects
.filter { it.pluginManager.hasPlugin("publishing-conventions") }
.map { it.tasks.named("publishToSonatype") }
})
dependsOn("addFilesToGit")
}

tasks.register("addFilesToGit") {
onlyIf("not a snapshot version") { !project.isSnapshot }
dependsOn()
group = "release"
description = "Commit changed/generated files during release"
doLast {
// NOTE: .execute() extension function defined in buildSrc
"git add README.md RELEASE_NOTES.md".execute()
"git add --force docs/*".execute()
}
}

release {
pushReleaseVersionBranch.set("master")
tagTemplate.set("v$version")
git {
requireBranch.set("develop")
}
}

githubRelease {
token(provider { property("ghToken") as String? })
owner.set(property("githubUser").toString())
repo.set(property("githubRepo").toString())
draft.set(true)
body(provider { file("RELEASE_NOTES.md").readText(Charsets.UTF_8) })
}

nexusPublishing.repositories {
sonatype {
username.set(property("sonatype_USR").toString())
password.set(property("sonatype_PSW").toString())
}
}
70 changes: 0 additions & 70 deletions core/pom.xml

This file was deleted.

0 comments on commit a3d1f20

Please sign in to comment.