diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 80840c57..33938c00 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-all.zip diff --git a/syft/build.gradle b/syft/build.gradle index 963fc308..48af687d 100644 --- a/syft/build.gradle +++ b/syft/build.gradle @@ -7,6 +7,14 @@ apply plugin: 'org.jetbrains.dokka' apply plugin: 'maven-publish' apply from: 'publish.gradle' +ext { + PUBLISH_GROUP_ID = 'org.openmined' + PUBLISH_VERSION = '0.5.0-test-SNAPSHOT' + PUBLISH_ARTIFACT_ID = 'syft' +} + +apply from: "./publish-mavencentral.gradle" + jacoco { toolVersion = Versions.jacocoVersion } diff --git a/syft/publish-mavencentral.gradle b/syft/publish-mavencentral.gradle new file mode 100644 index 00000000..bb108867 --- /dev/null +++ b/syft/publish-mavencentral.gradle @@ -0,0 +1,129 @@ +apply plugin: 'maven-publish' +apply plugin: 'signing' + +task androidSourcesJar(type: Jar) { + archiveClassifier.set('sources') + if (project.plugins.findPlugin("com.android.library")) { + // For Android libraries + from android.sourceSets.main.java.srcDirs + from android.sourceSets.main.kotlin.srcDirs + } else { + // For pure Kotlin libraries, in case you have them + from sourceSets.main.java.srcDirs + from sourceSets.main.kotlin.srcDirs + } +} + +artifacts { + archives androidSourcesJar +} + +group = PUBLISH_GROUP_ID +version = PUBLISH_VERSION + +ext["signing.keyId"] = '' +ext["signing.password"] = '' +ext["signing.secretKeyRingFile"] = '' +ext["ossrhUsername"] = '' +ext["ossrhPassword"] = '' +ext["sonatypeStagingProfileId"] = '' + +File secretPropsFile = project.rootProject.file('local.properties') +if (secretPropsFile.exists()) { + Properties p = new Properties() + new FileInputStream(secretPropsFile).withCloseable { is -> + p.load(is) + } + p.each { name, value -> + ext[name] = value + } +} else { + ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID') + ext["signing.password"] = System.getenv('SIGNING_PASSWORD') + ext["signing.secretKeyRingFile"] = System.getenv('SIGNING_SECRET_KEY_RING_FILE') + ext["ossrhUsername"] = System.getenv('OSSRH_USERNAME') + ext["ossrhPassword"] = System.getenv('OSSRH_PASSWORD') + ext["sonatypeStagingProfileId"] = System.getenv('SONATYPE_STAGING_PROFILE_ID') +} + +publishing { + publications { + release(MavenPublication) { + // The coordinates of the library, being set from variables that + // we'll set up later + groupId PUBLISH_GROUP_ID + artifactId PUBLISH_ARTIFACT_ID + version PUBLISH_VERSION + + // Two artifacts, the `aar` (or `jar`) and the sources + if (project.plugins.findPlugin("com.android.library")) { + artifact("$buildDir/outputs/aar/${project.getName()}-release.aar") + } else { + artifact("$buildDir/libs/${project.getName()}-${version}.jar") + } + artifact androidSourcesJar + + // Mostly self-explanatory metadata + pom { + name = PUBLISH_ARTIFACT_ID + description = 'The official Syft worker for secure on-device machine learning on Android' + url = 'https://github.com/OpenMined/KotlinSyft' + licenses { + license { + name = 'Apache 2.0' + url = 'https://github.com/OpenMined/KotlinSyft/blob/dev/LICENSE' + } + } + developers { + developer { + id = 'vkkhare' + name = 'Varun Khare' + email = 'varunkhare1234@gmail.com' + } + + developer { + id = 'mccorby' + name = 'Jose Corbacho' + email = 'mccorby@gmail.com' + } + // Add all other devs here... + } + // Version control info - if you're using GitHub, follow the format as seen here + scm { + connection = 'scm:git:github.com/OpenMined/KotlinSyft.git' + developerConnection = 'scm:git:ssh://github.com/OpenMined/KotlinSyft.git' + url = 'https://github.com/OpenMined/KotlinSyft.git/tree/dev' + } + // A slightly hacky fix so that your POM will include any transitive dependencies + // that your library builds upon + withXml { + def dependenciesNode = asNode().appendNode('dependencies') + + project.configurations.implementation.allDependencies.each { + def dependencyNode = dependenciesNode.appendNode('dependency') + dependencyNode.appendNode('groupId', it.group) + dependencyNode.appendNode('artifactId', it.name) + dependencyNode.appendNode('version', it.version) + } + } + } + } + } + // The repository to publish to, Sonatype/MavenCentral + repositories { + maven { + def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" + url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl + name = "sonatype" + credentials { + username ossrhUsername + password ossrhPassword + } + } + } +} + +signing { + sign publishing.publications +} \ No newline at end of file