diff options
author | Mathew Robinson <chasinglogic@gmail.com> | 2018-11-02 16:52:48 -0400 |
---|---|---|
committer | Mathew Robinson <chasinglogic@gmail.com> | 2018-11-05 16:58:19 -0500 |
commit | f002ff1a03af7496471c3b37d784406241163e74 (patch) | |
tree | 0ac9f62888bf807e16f4d9193f8d9c3345a8fe47 | |
parent | 650d5df4c7f033da7cae1d50c3cdb43c6d1c9739 (diff) | |
download | mongo-f002ff1a03af7496471c3b37d784406241163e74.tar.gz |
SERVER-37912 Publish MongoDB embedded android artifacts to Maven Central
(cherry picked from commit 1fe1551c1c87dc3fb3a1d00481ea09eaf27b8aea)
-rw-r--r-- | etc/evergreen.yml | 159 | ||||
-rw-r--r-- | src/mongo/embedded/mongo_embedded/java/aar/build.gradle | 95 | ||||
-rw-r--r-- | src/mongo/embedded/mongo_embedded/java/build.gradle | 16 | ||||
-rw-r--r-- | src/mongo/embedded/mongo_embedded/java/embedded-android/AndroidManifest.xml (renamed from src/mongo/embedded/mongo_embedded/java/aar/AndroidManifest.xml) | 0 | ||||
-rw-r--r-- | src/mongo/embedded/mongo_embedded/java/embedded-android/build.gradle | 89 | ||||
-rw-r--r-- | src/mongo/embedded/mongo_embedded/java/embedded-jar/build.gradle (renamed from src/mongo/embedded/mongo_embedded/java/jar/build.gradle) | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | src/mongo/embedded/mongo_embedded/java/gradlew | 0 | ||||
-rw-r--r-- | src/mongo/embedded/mongo_embedded/java/settings.gradle | 4 |
8 files changed, 203 insertions, 160 deletions
diff --git a/etc/evergreen.yml b/etc/evergreen.yml index 4fa0a8a6ac5..ab6da39f0a1 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -1053,6 +1053,35 @@ functions: bash buildscripts/fetch_and_build_openssl.sh "${python|python}" "${openssl_make_flags|}" "${openssl_config_flags|}" fi + "setup gradle signing keys": + command: shell.exec + params: + silent: true + script: | + cd src/src/mongo/embedded/mongo_embedded/java + + echo -n "${mongodb_mobile_release_signing_secret_key}" > mobile-release-signing-key.secret + echo -n "${mongodb_mobile_release_signing_public_key}" > mobile-release-signing-key.public + + gpg --homedir ${workingdir}/.gnupg --allow-secret-key-import --import mobile-release-signing-key.secret + gpg --homedir ${workingdir}/.gnupg --import mobile-release-signing-key.public + # Required for gradle to pick up the keys + gpg --homedir ${workingdir}/.gnupg --keyring secring.gpg --export-secret-keys secring.gpg + + echo -n <<EOF + signing.keyId=${mongodb_mobile_release_signing_keyid} + signing.password=${mongodb_mobile_release_signing_password} + signing.secretKeyRingFile=${mongodb_mobile_release_signing_secretkeyringfile} + + ossrhUsername=${mongodb_mobile_ossrh_username} + ossrhPassword=${mongodb_mobile_ossrh_password} + EOF > local.properties + + echo <<EOF + export artifactory_mobile_user=${artifactory_mobile_user} + export artifactory_mobile_pass=${artifactory_mobile_pass} + EOF > artifactory_mobile_creds.sh + "setup android toolchain" : command: shell.exec params: @@ -1064,6 +1093,67 @@ functions: PYTHON=$python ${compile_env|} src/buildscripts/setup-android-toolchain.sh ${android_toolchain_target_arch} ${android_toolchain_api_version} fi + "build java embedded sdk": + command: shell.exec + params: + script: | + set -o errexit + set -o verbose + + # If the android toolchain has not been setup the android sdk will not + # be available and we should not build the android version of mongodb + # embedded. + if [ "${setup_android_toolchain|}" = "true" ]; then + export ANDROID_HOME=$(pwd)/android_sdk + + cd src/src/mongo/embedded/mongo_embedded/java + + # TODO: Clean this up later where we can remove duplication + if [ ${package_type|embedded-android} = "embedded-jar" ]; then + tar zxvf ../../../../../../embedded-sdk-java-linux-x86-64.tgz + mkdir -p jniLibs/linux-x86-64 + cp ./mongo-embedded-sdk-${version}/lib/libmongo_embedded.so jniLibs/linux-x86-64 + rm -rf ./mongo-embedded-sdk-${version} + + tar zxvf ../../../../../../embedded-sdk-java-darwin.tgz + mkdir -p jniLibs/darwin + cp ./mongo-embedded-sdk-${version}/lib/libmongo_embedded.dylib jniLibs/darwin + rm -rf ./mongo-embedded-sdk-${version} + + ./gradlew clean :embedded-jar:build :embedded-jar:publishMavenPublicationToLocalRepository + + # Is this a release? + echo "${version|-g}" | grep -q -- "-g" + if [ $? -eq 1 ]; then + echo "Releases disabled on master." + #source ./artifactory_mobile_creds.sh + #./gradlew --info :embedded-jar:artifactoryPublish + fi + + + mkdir -p ../../../../../build/mongo-embedded-sdk-${version}/java + cp -r embedded-jar/build/repo/* ../../../../../build/mongo-embedded-sdk-${version}/java + else + for arch in arm64-v8a armeabi-v7a x86_64 ; do + tar zxvf ../../../../../../embedded-sdk-android-$arch.tgz + mkdir -p jniLibs/$arch + cp ./mongo-embedded-sdk-${version}/lib/libmongo_embedded.so jniLibs/$arch + rm -rf ./mongo-embedded-sdk-${version} + done + + ./gradlew clean :embedded-android:build + # Is this a release? + echo "${version|-g}" | grep -q -- "-g" + if [ $? -eq 1 ]; then + echo "Releases disabled on master." + #./gradlew :embedded-android:uploadArchives closeAndReleaseRepository + fi + + mkdir -p ../../../../../build/mongo-embedded-sdk-${version}/android + cp -r embedded-android/build/repo/* ../../../../../build/mongo-embedded-sdk-${version}/android + fi + fi + "scons cache pruning" : command: shell.exec params: @@ -3793,36 +3883,8 @@ tasks: remote_file: ${project}/embedded-sdk/embedded-sdk-android-x86_64/${revision}/mongo-embedded-sdk-${version}.tgz bucket: mciuploads local_file: "embedded-sdk-android-x86_64.tgz" - - command: shell.exec - params: - script: | - set -o errexit - set -o verbose - - if [ "${setup_android_toolchain|}" = "true" ]; then - export ANDROID_HOME=$(pwd)/android_sdk - - cd src/src/mongo/embedded/mongo_embedded/java - - chmod +x gradlew - - for arch in arm64-v8a armeabi-v7a x86_64 ; do - tar zxvf ../../../../../../embedded-sdk-android-$arch.tgz - mkdir -p jniLibs/$arch - cp ./mongo-embedded-sdk-${version}/lib/libmongo_embedded.so jniLibs/$arch - rm -rf ./mongo-embedded-sdk-${version} - done - - ./gradlew clean :aar:build :aar:publishMavenAarPublicationToLocalRepository - # Is this a release? - echo "${version|-g}" | grep -q -- "-g" - if [ $? -eq 1 ]; then - ./gradlew --info :aar:artifactoryPublish - fi - - mkdir -p ../../../../../build/mongo-embedded-sdk-${version}/android - cp -r aar/build/repo/* ../../../../../build/mongo-embedded-sdk-${version}/android - fi + - func: "setup gradle signing keys" + - func: "build java embedded sdk" - command: shell.exec params: script: | @@ -3897,39 +3959,10 @@ tasks: remote_file: ${project}/embedded-sdk/embedded-sdk-macosx-10.10/${revision}/mongo-embedded-sdk-${version}.tgz bucket: mciuploads local_file: "embedded-sdk-java-darwin.tgz" - - command: shell.exec - params: - script: | - set -o errexit - set -o verbose - - if [ "${setup_android_toolchain|}" = "true" ]; then - export ANDROID_HOME=$(pwd)/android_sdk - - cd src/src/mongo/embedded/mongo_embedded/java - - chmod +x gradlew - - tar zxvf ../../../../../../embedded-sdk-java-linux-x86-64.tgz - mkdir -p jniLibs/linux-x86-64 - cp ./mongo-embedded-sdk-${version}/lib/libmongo_embedded.so jniLibs/linux-x86-64 - rm -rf ./mongo-embedded-sdk-${version} - - tar zxvf ../../../../../../embedded-sdk-java-darwin.tgz - mkdir -p jniLibs/darwin - cp ./mongo-embedded-sdk-${version}/lib/libmongo_embedded.dylib jniLibs/darwin - rm -rf ./mongo-embedded-sdk-${version} - - ./gradlew clean :jar:build :jar:publishMavenPublicationToLocalRepository - # Is this a release? - echo "${version|-g}" | grep -q -- "-g" - if [ $? -eq 1 ]; then - ./gradlew --info :jar:artifactoryPublish - fi - - mkdir -p ../../../../../build/mongo-embedded-sdk-${version}/java - cp -r jar/build/repo/* ../../../../../build/mongo-embedded-sdk-${version}/java - fi + - func: "setup gradle signing keys" + - func: "build java embedded sdk" + vars: + package_type: embedded-jar - command: shell.exec params: script: | diff --git a/src/mongo/embedded/mongo_embedded/java/aar/build.gradle b/src/mongo/embedded/mongo_embedded/java/aar/build.gradle deleted file mode 100644 index a1e72615d6a..00000000000 --- a/src/mongo/embedded/mongo_embedded/java/aar/build.gradle +++ /dev/null @@ -1,95 +0,0 @@ -apply plugin: 'com.android.library' -apply plugin: 'digital.wup.android-maven-publish' -apply plugin: 'optional-base' -apply plugin: 'com.jfrog.artifactory' - -android { - compileSdkVersion 28 - - defaultConfig { - minSdkVersion 21 - targetSdkVersion 28 - } - - buildTypes { - release { - minifyEnabled false - } - } - - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDir '../src' - jniLibs.srcDirs '../jniLibs' - } - } -} - -task sourcesJar(type: Jar) { - from android.sourceSets.main.java.srcDirs - classifier = 'sources' -} - -dependencies { - api "net.java.dev.jna:jna:$jnaVersion@aar" - api 'org.slf4j:slf4j-api:1.7.6', optional -} - -publishing { - publications { - mavenAar(MavenPublication) { - artifactId = libraryName + "-android" - - from components.android - artifact sourcesJar - - pom { - name = pomName - description = pomDescription - url = pomUrl - licenses { - license { - name = pomLicenseName - url = pomLicenseUrl - } - } - scm { - connection = "scm:" + pomScmConnection - developerConnection = "scm:" + pomScmDevConnection - url = pomScmUrl - } - } - } - } - - repositories { - maven { - name = 'local' - url = "$buildDir/repo" - } - } -} - -artifactory { - contextUrl = "http://artifactory.corp.mongodb.com/artifactory" - publish { - repository { - repoKey = 'mongodb-mobile-local' - username = System.getenv('artifactory_mobile_user') - password = System.getenv('artifactory_mobile_pass') - maven = true - } - defaults { - publications ('mavenAar') - } - } - resolve { - repository { - repoKey = 'maven' - username = System.getenv('artifactory_mobile_user') - password = System.getenv('artifactory_mobile_pass') - maven = true - } - } -} diff --git a/src/mongo/embedded/mongo_embedded/java/build.gradle b/src/mongo/embedded/mongo_embedded/java/build.gradle index 4bb304dcbc9..4b0f24ced11 100644 --- a/src/mongo/embedded/mongo_embedded/java/build.gradle +++ b/src/mongo/embedded/mongo_embedded/java/build.gradle @@ -21,6 +21,7 @@ buildscript { classpath 'com.android.tools.build:gradle:3.1.2' classpath 'digital.wup:android-maven-publish:3.6.2' classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:latest.release' + classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.12.0" } } @@ -43,6 +44,15 @@ def getGitVersion() { } } +File localPropsFile = file('./local.properties') +if (localPropsFile.exists()) { + Properties p = new Properties() + p.load(new FileInputStream(localPropsFile)) + p.each { name, value -> + ext[name] = value + } +} + allprojects { group = 'org.mongodb' version = getGitVersion() @@ -56,3 +66,9 @@ allprojects { task clean(type: Delete) { delete rootProject.buildDir } + +apply plugin: 'io.codearte.nexus-staging' + +nexusStaging { + packageGroup = "org.mongodb" +} diff --git a/src/mongo/embedded/mongo_embedded/java/aar/AndroidManifest.xml b/src/mongo/embedded/mongo_embedded/java/embedded-android/AndroidManifest.xml index 8d3ffd30527..8d3ffd30527 100644 --- a/src/mongo/embedded/mongo_embedded/java/aar/AndroidManifest.xml +++ b/src/mongo/embedded/mongo_embedded/java/embedded-android/AndroidManifest.xml diff --git a/src/mongo/embedded/mongo_embedded/java/embedded-android/build.gradle b/src/mongo/embedded/mongo_embedded/java/embedded-android/build.gradle new file mode 100644 index 00000000000..16750646ab8 --- /dev/null +++ b/src/mongo/embedded/mongo_embedded/java/embedded-android/build.gradle @@ -0,0 +1,89 @@ +apply plugin: 'com.android.library' +apply plugin: 'optional-base' +apply plugin: 'maven' +apply plugin: 'signing' + +android { + compileSdkVersion 28 + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 28 + } + + buildTypes { + release { + minifyEnabled false + } + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDir '../src' + jniLibs.srcDirs '../jniLibs' + } + } +} + +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +dependencies { + api "net.java.dev.jna:jna:$jnaVersion@aar" + api 'org.slf4j:slf4j-api:1.7.6', optional +} + +artifacts { + archives sourcesJar +} + +signing { + sign configurations.archives +} + +uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { + authentication(userName: ossrhUsername, password: ossrhPassword) + } + + snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { + authentication(userName: ossrhUsername, password: ossrhPassword) + } + + pom.project { + name "${libraryName}-android" + packaging 'aar' + description "${pomDescription} - Android" + url pomUrl + + scm { + connection "scm:${pomScmConnection}" + developerConnection "scm:${pomScmConnection}" + url pomScmUrl + } + + licenses { + license { + name pomLicenseName + url pomLicenseUrl + } + } + + developers { + developer { + id 'mongodb' + name 'MongoDB Inc.' + email 'build@mongodb.com' + } + } + } + } + } +} diff --git a/src/mongo/embedded/mongo_embedded/java/jar/build.gradle b/src/mongo/embedded/mongo_embedded/java/embedded-jar/build.gradle index 566770c793f..566770c793f 100644 --- a/src/mongo/embedded/mongo_embedded/java/jar/build.gradle +++ b/src/mongo/embedded/mongo_embedded/java/embedded-jar/build.gradle diff --git a/src/mongo/embedded/mongo_embedded/java/gradlew b/src/mongo/embedded/mongo_embedded/java/gradlew index cccdd3d517f..cccdd3d517f 100644..100755 --- a/src/mongo/embedded/mongo_embedded/java/gradlew +++ b/src/mongo/embedded/mongo_embedded/java/gradlew diff --git a/src/mongo/embedded/mongo_embedded/java/settings.gradle b/src/mongo/embedded/mongo_embedded/java/settings.gradle index 0c62f13cff1..fd39703259d 100644 --- a/src/mongo/embedded/mongo_embedded/java/settings.gradle +++ b/src/mongo/embedded/mongo_embedded/java/settings.gradle @@ -1,2 +1,2 @@ -include ':aar' -include ':jar' +include ':embedded-android' +include ':embedded-jar' |