diff --git a/Jenkinsfile b/Jenkinsfile index 1c34b91..b8ff1da 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,21 +1,11 @@ #!groovy @Library('github.com/wooga/atlas-jenkins-pipeline@1.x') _ - withCredentials([usernamePassword(credentialsId: 'github_integration', passwordVariable: 'githubPassword', usernameVariable: 'githubUser'), - usernamePassword(credentialsId: 'github_integration_2', passwordVariable: 'githubPassword2', usernameVariable: 'githubUser2'), string(credentialsId: 'spock_github_extension_coveralls_token', variable: 'coveralls_token')]) { - def testEnvironment = [ 'osx': - [ - "ATLAS_GITHUB_INTEGRATION_USER=${githubUser}", - "ATLAS_GITHUB_INTEGRATION_PASSWORD=${githubPassword}" - ], - 'windows': - [ - "ATLAS_GITHUB_INTEGRATION_USER=${githubUser2}", - "ATLAS_GITHUB_INTEGRATION_PASSWORD=${githubPassword2}" - ] - ] - - buildJavaLibrary plaforms: ['osx','windows'], coverallsToken: coveralls_token, testEnvironment: testEnvironment + def testEnvironment = [ + "ATLAS_GITHUB_INTEGRATION_USER=${githubUser}", + "ATLAS_GITHUB_INTEGRATION_PASSWORD=${githubPassword}" + ] + buildJavaLibraryOSSRH coverallsToken: coveralls_token, testEnvironment: testEnvironment } diff --git a/build.gradle b/build.gradle index aeb3dab..bdac873 100644 --- a/build.gradle +++ b/build.gradle @@ -19,14 +19,15 @@ plugins { id 'java-library' id 'groovy' id 'maven-publish' - id 'com.jfrog.bintray' version '1.8.4' - id 'nebula.release' version '6.3.5' + id 'signing' + id 'nebula.release' version '15.2.0' id 'jacoco' id 'com.github.kt3k.coveralls' version '2.8.2' + id 'io.codearte.nexus-staging' version '0.22.0' + id "de.marcphilipp.nexus-publish" version "0.4.0" } group "com.wooga.spock.extensions" - List cliTasks = project.rootProject.gradle.startParameter.taskNames if (cliTasks.contains("rc")) { cliTasks.remove("rc") @@ -35,74 +36,27 @@ if (cliTasks.contains("rc")) { } dependencies { - compile 'org.codehaus.groovy:groovy-all:2.4.15' - compile 'org.kohsuke:github-api:1.95' - compile('org.spockframework:spock-core:1.2-groovy-2.4') + implementation 'org.codehaus.groovy:groovy-all:2.4.15' + api 'org.kohsuke:github-api:1.95' + implementation('org.spockframework:spock-core:1.2-groovy-2.4') - testCompile 'net.bytebuddy:byte-buddy:1.9.12' - testCompile 'com.github.stefanbirkner:system-rules:1.18.0' + testImplementation 'net.bytebuddy:byte-buddy:[1.9,2)' + testImplementation 'com.github.stefanbirkner:system-rules:[1.18,2)' } repositories { - jcenter() + mavenCentral() } -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' +task sourcesJar(type: Jar) { + archiveClassifier.set('sources') from sourceSets.main.allSource } javadoc.failOnError = false -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from javadoc.destinationDir -} - -artifacts { - archives sourcesJar - archives javadocJar -} - -bintray { - user = project.hasProperty('bintrayUser') ? project.property('bintray.user') : System.getenv('BINTRAY_USER') - key = project.hasProperty('bintrayApiKey') ? project.property('bintray.key') : System.getenv('BINTRAY_API_KEY') - publish = true - publications = ['Bintray'] - pkg { - repo = 'maven' - name = project.name - userOrg = 'wooga' - licenses = ['Apache-2.0'] - vcsUrl = 'https://github.com/wooga/spock-github-extension.git' - labels = ['test', 'spock', 'github'] - version { - name = project.version.toString() - vcsTag = project.version.toString() - released = new Date() - } - } -} - - -def pomConfig = { - licenses { - license { - name "The Apache Software License, Version 2.0" - url "http://www.apache.org/licenses/LICENSE-2.0.txt" - distribution "repo" - } - } - developers { - developer { - id "manfred.endres" - name "Manfred Endres" - email "manfred.endres@wooga.net" - } - } - - scm { - url "https://github.com/wooga/spock-github-extension.git" - } +task javadocJar(type: Jar) { + archiveClassifier.set('javadoc') + from javadoc } jacocoTestReport { @@ -112,29 +66,77 @@ jacocoTestReport { } } +artifacts { + archives sourcesJar + archives javadocJar +} + publishing { publications { - Bintray(MavenPublication) { - from components.java + main(MavenPublication) { + artifactId = project.name + from(components["java"]) artifact sourcesJar { classifier "sources" } artifact javadocJar { classifier "javadoc" } - - groupId project.group - artifactId project.name - version project.version.toString() - pom.withXml { - def root = asNode() - root.appendNode('description', 'A extension for Spock to create Github repositories during test.') - root.appendNode('name', 'Spock GitHub extension') - root.appendNode('url', 'https://github.com/thombergs/myAwesomeLib') - root.children().last() + pomConfig + pom { + name = 'Spock GitHub extension' + description = 'A extension for Spock to create Github repositories during test.' + url = 'https://github.com/wooga/spock-github-extension' + + artifactId = project.name + inceptionYear = "2019" + + scm { + connection = 'scm:git:https://github.com/wooga/spock-github-extension.git' + developerConnection = 'scm:git:https://github.com/wooga/spock-github-extension.git' + url = 'https://github.com/wooga/spock-github-extension.git' + } + + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + + developers { + developer { + id = 'manfred.endres' + name = 'Manfred Endres' + email = 'manfred.endres@wooga.net' + } + } } } } } -[finalSetup, candidateSetup, snapshotSetup].each { it.dependsOn(build)} +nexusPublishing { + repositories { + sonatype() + } +} + +nexusStaging { + username = project.hasProperty('ossrhUsername') ? project.property('ossrhUsername') : System.getenv('OSSRH_USERNAME') + password = project.hasProperty('ossrhPassword') ? project.property('ossrhPassword') : System.getenv('OSSRH_PASSWORD') + packageGroup = "com.wooga" +} + +signing { + def signingKeyId = project.hasProperty("signingKeyId") ? project.property('signingKeyId') : System.getenv('OSSRH_SIGNING_KEY_ID') + def signingKey = project.hasProperty("signingKey") ? project.property('signingKey') : System.getenv('OSSRH_SIGNING_KEY') + def signingPassword = project.hasProperty('signingPassphrase') ? project.property('signingPassphrase') : System.getenv("OSSRH_SIGNING_PASSPHRASE") + useInMemoryPgpKeys(signingKeyId.toString(), signingKey.toString(), signingPassword.toString()) + sign publishing.publications.main +} + +postRelease.dependsOn(tasks.publish) +tasks."final".dependsOn(tasks.closeAndReleaseRepository) +tasks."candidate".dependsOn(tasks.closeAndReleaseRepository) +tasks.closeAndReleaseRepository.mustRunAfter(tasks.postRelease) +tasks.publish.mustRunAfter(tasks.release) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5b8d8d0..097d9c9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -20,4 +20,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip diff --git a/src/main/groovy/com/wooga/spock/extensions/github/Repository.groovy b/src/main/groovy/com/wooga/spock/extensions/github/Repository.groovy index 48b682d..9bb8b0f 100644 --- a/src/main/groovy/com/wooga/spock/extensions/github/Repository.groovy +++ b/src/main/groovy/com/wooga/spock/extensions/github/Repository.groovy @@ -52,8 +52,8 @@ class Repository { void captureResetRefs() { try { resetRefs = repository.refs - } catch(HttpException e) { - if(!e.message.contains("Git Repository is empty.")) { + } catch (HttpException e) { + if (!e.message.contains("Git Repository is empty.")) { throw e } resetRefs = [] @@ -112,7 +112,8 @@ class Repository { commitBuilder.message(message) commitBuilder.tree(commit.tree.getSha()) commitBuilder.parent(commit.getSHA1()) - commitBuilder.author(repository.owner.name, repository.owner.email, new Date()) + def email = repository.owner.email ?: "test@gmail.com" + commitBuilder.author(repository.owner.name, email, new Date()) GHCommit newCommit = commitBuilder.create() GHRef branchRef = getBranchRef(branchName) diff --git a/src/test/groovy/com/wooga/spock/extensions/github/BaseGithubRepositorySpec.groovy b/src/test/groovy/com/wooga/spock/extensions/github/BaseGithubRepositorySpec.groovy index c01af16..6aeb1e9 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/BaseGithubRepositorySpec.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/BaseGithubRepositorySpec.groovy @@ -19,8 +19,10 @@ package com.wooga.spock.extensions.github import org.kohsuke.github.GHIssueState import org.kohsuke.github.GHPullRequest +import spock.lang.Retry import spock.lang.Specification +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) abstract class BaseGithubRepositorySpec extends Specification { abstract Repository getTestRepository() diff --git a/src/test/groovy/com/wooga/spock/extensions/github/FeatureAnnotation.groovy b/src/test/groovy/com/wooga/spock/extensions/github/FeatureAnnotation.groovy index 3e45f73..596e05f 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/FeatureAnnotation.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/FeatureAnnotation.groovy @@ -20,10 +20,12 @@ package com.wooga.spock.extensions.github import org.junit.Rule import org.junit.contrib.java.lang.system.EnvironmentVariables +import spock.lang.Retry import spock.lang.Shared import spock.lang.Specification import spock.lang.Unroll +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) class FeatureAnnotation extends Specification { @Rule diff --git a/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositoryBuilderSpec.groovy b/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositoryBuilderSpec.groovy index 073733f..b4fb0a2 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositoryBuilderSpec.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositoryBuilderSpec.groovy @@ -24,8 +24,10 @@ import org.kohsuke.github.GHException import org.kohsuke.github.GHFileNotFoundException import org.kohsuke.github.GHPullRequest import org.kohsuke.github.HttpException +import spock.lang.Retry import spock.lang.Specification +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) class GithubRepositoryBuilderSpec extends Specification { @Rule @@ -84,7 +86,7 @@ class GithubRepositoryBuilderSpec extends Specification { !repo.isPrivate() and: "allows pull-request merge commits" - def pr1 = repo.setupPullRequestWithFileChange("Merge PR","","pr/merge") + def pr1 = repo.setupPullRequestWithFileChange("Merge PR", "", "pr/merge") when: sleep(200) @@ -94,7 +96,7 @@ class GithubRepositoryBuilderSpec extends Specification { noExceptionThrown() and: "allows pull-request squash commits" - def pr2 = repo.setupPullRequestWithFileChange("Merge PR","","pr/squash") + def pr2 = repo.setupPullRequestWithFileChange("Merge PR", "", "pr/squash") when: sleep(200) @@ -104,7 +106,7 @@ class GithubRepositoryBuilderSpec extends Specification { noExceptionThrown() and: "allows pull-request rebase commits" - def pr3 = repo.setupPullRequestWithFileChange("Merge PR","","pr/rebase") + def pr3 = repo.setupPullRequestWithFileChange("Merge PR", "", "pr/rebase") when: sleep(200) @@ -183,7 +185,7 @@ class GithubRepositoryBuilderSpec extends Specification { @GithubRepository(allowMergeCommit = false) def "can disable merge commits"(Repository repo) { given: - def pr1 = repo.setupPullRequestWithFileChange("Merge PR","","pr/merge") + def pr1 = repo.setupPullRequestWithFileChange("Merge PR", "", "pr/merge") when: sleep(200) @@ -197,7 +199,7 @@ class GithubRepositoryBuilderSpec extends Specification { @GithubRepository(allowSquashMerge = false) def "can disable squash commits"(Repository repo) { given: - def pr1 = repo.setupPullRequestWithFileChange("Merge PR","","pr/squash") + def pr1 = repo.setupPullRequestWithFileChange("Merge PR", "", "pr/squash") when: sleep(200) @@ -211,7 +213,7 @@ class GithubRepositoryBuilderSpec extends Specification { @GithubRepository(allowRebaseMerge = false) def "can disable rebase commits"(Repository repo) { given: - def pr1 = repo.setupPullRequestWithFileChange("Merge PR","","pr/rebase") + def pr1 = repo.setupPullRequestWithFileChange("Merge PR", "", "pr/rebase") when: sleep(200) diff --git a/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositorySpec.groovy b/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositorySpec.groovy index 78472a9..221d434 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositorySpec.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/GithubRepositorySpec.groovy @@ -17,8 +17,10 @@ package com.wooga.spock.extensions.github +import spock.lang.Retry import spock.lang.Shared +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) class GithubRepositorySpec extends BaseGithubRepositorySpec { @GithubRepository( diff --git a/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedAutoResetRepositorySpec.groovy b/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedAutoResetRepositorySpec.groovy index 7ab92c5..d77ae46 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedAutoResetRepositorySpec.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedAutoResetRepositorySpec.groovy @@ -17,9 +17,11 @@ package com.wooga.spock.extensions.github +import spock.lang.Retry import spock.lang.Shared import spock.lang.Unroll +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) class GithubSharedAutoResetRepositorySpec extends BaseGithubRepositorySpec { @Shared diff --git a/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedRepositorySpec.groovy b/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedRepositorySpec.groovy index c36ad1a..acc2827 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedRepositorySpec.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/GithubSharedRepositorySpec.groovy @@ -17,9 +17,11 @@ package com.wooga.spock.extensions.github +import spock.lang.Retry import spock.lang.Shared import spock.lang.Unroll +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) class GithubSharedRepositorySpec extends BaseGithubRepositorySpec { @Shared diff --git a/src/test/groovy/com/wooga/spock/extensions/github/RepositorySpec.groovy b/src/test/groovy/com/wooga/spock/extensions/github/RepositorySpec.groovy index de56bdd..2c362a7 100644 --- a/src/test/groovy/com/wooga/spock/extensions/github/RepositorySpec.groovy +++ b/src/test/groovy/com/wooga/spock/extensions/github/RepositorySpec.groovy @@ -23,10 +23,12 @@ import org.kohsuke.github.GHBranch import org.kohsuke.github.GHCommit import org.kohsuke.github.GHRef import org.kohsuke.github.GHRepository +import spock.lang.Retry import spock.lang.Shared import spock.lang.Specification import spock.lang.Subject +@Retry(delay = 2000, count = 2, mode = Retry.Mode.SETUP_FEATURE_CLEANUP) class RepositorySpec extends Specification { @Rule