From fe30f5468953ee14b4ac63ff3049058b888928dc Mon Sep 17 00:00:00 2001 From: Shirshanka Das Date: Thu, 8 Sep 2022 22:10:36 -0700 Subject: [PATCH] feat(datahub-protobuf): add support for shadow jar, publish (#5882) --- .github/workflows/build-and-test.yml | 2 +- .github/workflows/check-datahub-jars.yml | 4 + .github/workflows/publish-datahub-jars.yml | 26 ++- build.gradle | 5 + .../datahub-protobuf-example/build.gradle | 12 +- .../libs/datahub-protobuf.jar | Bin 96519 -> 0 bytes .../java/datahub-protobuf/README.md | 27 ++- .../java/datahub-protobuf/build.gradle | 195 +++++++++++++++++- .../datahub-protobuf/scripts/check_jar.sh | 48 +++++ .../protobuf/visitors/VisitContext.java | 4 + 10 files changed, 309 insertions(+), 14 deletions(-) delete mode 100644 metadata-integration/java/datahub-protobuf-example/libs/datahub-protobuf.jar create mode 100755 metadata-integration/java/datahub-protobuf/scripts/check_jar.sh diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index b8224d1f75..68f219ddc7 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -38,7 +38,7 @@ jobs: # datahub-frontend:unzipAssets depends on datahub-web-react:yarnBuild but gradle does not know about it run: | ./gradlew build -x :metadata-ingestion:build -x :metadata-ingestion:check -x docs-website:build -x datahub-web-react:yarnBuild -x datahub-frontend:unzipAssets -x :metadata-io:test -x :metadata-integration:java:datahub-protobuf:build - ./gradlew build -x :metadata-ingestion:build -x :metadata-ingestion:check -x docs-website:build -x :metadata-integration:java:spark-lineage:test -x :metadata-io:test -x :metadata-integration:java:datahub-protobuf:build + ./gradlew build -x :metadata-ingestion:build -x :metadata-ingestion:check -x docs-website:build -x :metadata-integration:java:spark-lineage:test -x :metadata-io:test - uses: actions/upload-artifact@v2 if: always() with: diff --git a/.github/workflows/check-datahub-jars.yml b/.github/workflows/check-datahub-jars.yml index e3e1925b4b..a1d7a1f47d 100644 --- a/.github/workflows/check-datahub-jars.yml +++ b/.github/workflows/check-datahub-jars.yml @@ -45,3 +45,7 @@ jobs: run: | ./gradlew :metadata-integration:java:spark-lineage:build ./gradlew :metadata-integration:java:spark-lineage:javadoc + - name: check datahub-protobuf jar + run: | + ./gradlew :metadata-integration:java:datahub-protobuf:build + ./gradlew :metadata-integration:java:datahub-protobuf:javadoc diff --git a/.github/workflows/publish-datahub-jars.yml b/.github/workflows/publish-datahub-jars.yml index 3d77cb4dc8..8310a9ab0b 100644 --- a/.github/workflows/publish-datahub-jars.yml +++ b/.github/workflows/publish-datahub-jars.yml @@ -75,7 +75,31 @@ jobs: echo signingKey=$SIGNING_KEY >> gradle.properties ./gradlew :metadata-integration:java:spark-lineage:printVersion ./gradlew :metadata-integration:java:spark-lineage:publishToMavenLocal - # Publish apache ranger plugin to maven + - name: build and publish datahub-protobuf + env: + RELEASE_USERNAME: ${{ secrets.RELEASE_USERNAME }} + RELEASE_PASSWORD: ${{ secrets.RELEASE_PASSWORD }} + SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} + SIGNING_KEY: ${{ secrets.SIGNING_KEY }} + NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }} + NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} + run: | + echo signingKey=$SIGNING_KEY >> gradle.properties + # Publish datahub-protobuf to maven + ./gradlew :metadata-integration:java:datahub-protobuf:printVersion + ./gradlew :metadata-integration:java:datahub-protobuf:publishToMavenLocal + #./gradlew :metadata-integration:java:datahub-client:closeAndReleaseRepository --info + - name: build and publish datahub-ranger-plugin + env: + RELEASE_USERNAME: ${{ secrets.RELEASE_USERNAME }} + RELEASE_PASSWORD: ${{ secrets.RELEASE_PASSWORD }} + SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} + SIGNING_KEY: ${{ secrets.SIGNING_KEY }} + NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }} + NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} + run: | + echo signingKey=$SIGNING_KEY >> gradle.properties + # Publish apache ranger plugin to maven ./gradlew :datahub-ranger-plugin:printVersion ./gradlew :datahub-ranger-plugin:publishMavenJavaPublicationToMavenLocal #./gradlew :metadata-integration:java:datahub-client:closeAndReleaseRepository --info diff --git a/build.gradle b/build.gradle index 6914bd1f36..acf926ca95 100644 --- a/build.gradle +++ b/build.gradle @@ -230,6 +230,11 @@ subprojects { } } } else { + tasks.withType(Javadoc).configureEach { + javadocTool = javaToolchains.javadocToolFor { + languageVersion = JavaLanguageVersion.of(11) + } + } tasks.withType(JavaCompile).configureEach { javaCompiler = javaToolchains.compilerFor { languageVersion = JavaLanguageVersion.of(11) diff --git a/metadata-integration/java/datahub-protobuf-example/build.gradle b/metadata-integration/java/datahub-protobuf-example/build.gradle index 38ce29c455..10db3a4620 100644 --- a/metadata-integration/java/datahub-protobuf-example/build.gradle +++ b/metadata-integration/java/datahub-protobuf-example/build.gradle @@ -5,10 +5,12 @@ plugins { repositories { mavenCentral() + mavenLocal() } ext { protobuf_version = '3.19.3' + datahub_protobuf_version = '0.8.45-SNAPSHOT' } configurations { @@ -18,15 +20,7 @@ configurations { dependencies { // compilation implementation "com.google.protobuf:protobuf-java:$protobuf_version" - - datahub files('libs/datahub-protobuf.jar') - - // transitive deps - datahub 'io.acryl:datahub-client:0.8.+' - datahub "com.google.protobuf:protobuf-java:$protobuf_version" - datahub 'org.jgrapht:jgrapht-core:1.5.1' - datahub 'com.google.guava:guava:27.0.1-jre' - datahub 'com.google.code.gson:gson:2.8.6' + datahub "io.acryl:datahub-protobuf:$datahub_protobuf_version" } sourceSets { diff --git a/metadata-integration/java/datahub-protobuf-example/libs/datahub-protobuf.jar b/metadata-integration/java/datahub-protobuf-example/libs/datahub-protobuf.jar deleted file mode 100644 index 53486ecb61879ff8b0b57c5de431e34ec6eb93b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96519 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 CcsFYR diff --git a/metadata-integration/java/datahub-protobuf/README.md b/metadata-integration/java/datahub-protobuf/README.md index e7e4bd23a0..24ed2c3d99 100644 --- a/metadata-integration/java/datahub-protobuf/README.md +++ b/metadata-integration/java/datahub-protobuf/README.md @@ -523,13 +523,36 @@ message Message { } ``` -## Gradle Integration +## Installation + +Follow the specific instructions for your build system to declare a dependency on the appropriate version of the package. + +**_Note_**: Check the [Maven repository](https://mvnrepository.com/artifact/io.acryl/datahub-protobuf) for the latest version of the package before following the instructions below. + +### Gradle +Add the following to your build.gradle. +```gradle +implementation 'io.acryl:datahub-protobuf:__version__' +``` +### Maven +Add the following to your `pom.xml`. +```xml + + + io.acryl + datahub-protobuf + + __version__ + +``` + +## Example Application An example application is included which works with the `protobuf-gradle-plugin`, see the standalone [example project](../datahub-protobuf-example). ### Usage -Using the +Using the example application: ```shell export DATAHUB_API=... diff --git a/metadata-integration/java/datahub-protobuf/build.gradle b/metadata-integration/java/datahub-protobuf/build.gradle index 21f4ecb1c7..d734509e72 100644 --- a/metadata-integration/java/datahub-protobuf/build.gradle +++ b/metadata-integration/java/datahub-protobuf/build.gradle @@ -3,6 +3,13 @@ plugins { } apply plugin: 'java' apply plugin: 'jacoco' +apply plugin: 'com.github.johnrengelman.shadow' +apply plugin: 'signing' +apply plugin: 'io.codearte.nexus-staging' +apply plugin: 'maven-publish' +import org.apache.tools.ant.filters.ReplaceTokens + +jar.enabled = false // Since we only want to build shadow jars, disabling the regular jar creation afterEvaluate { if (project.plugins.hasPlugin('java')) { @@ -52,4 +59,190 @@ jacocoTestReport { test { useJUnit() finalizedBy jacocoTestReport -} \ No newline at end of file +} + + +task checkShadowJar(type: Exec) { + commandLine 'sh', '-c', 'scripts/check_jar.sh' +} + +//mark implementation dependencies which needs to excluded along with transitive dependencies from shadowjar +//functionality is exactly same as "implementation" +configurations { + provided + implementation.extendsFrom provided +} + +def detailedVersionString = "0.0.0-unknown-SNAPSHOT" +def snapshotVersion = false +if (project.hasProperty("releaseVersion")) { + version = releaseVersion + detailedVersionString = releaseVersion +} else { + try { + // apply this plugin in a try-catch block so that we can handle cases without .git directory + apply plugin: "com.palantir.git-version" + def details = versionDetails() + detailedVersionString = gitVersion() + version = details.lastTag + version = version.startsWith("v")? version.substring(1): version + def suffix = details.isCleanTag? "": "-SNAPSHOT" + snapshotVersion = ! details.isCleanTag + } + catch (Exception e) { + e.printStackTrace() + // last fall back + version = detailedVersionString + } + } + // trim version if it is of size 4 to size 3 + def versionParts = version.tokenize(".") + if (versionParts.size() > 3) { + // at-least 4 part version + // we check if the 4th part is a .0 in which case we want to create a release + if (versionParts[3] != '0') { + snapshotVersion = true + } + versionParts = versionParts[0..2] + version = versionParts[0..2].join('.') + } + + if (snapshotVersion) { + if (versionParts[versionParts.size()-1].isInteger()) { + version = versionParts[0..versionParts.size()-2].join('.') + '.' + (versionParts[versionParts.size()-1].toInteger()+1).toString() + "-SNAPSHOT" + } else { + // we are unable to part the last token as an integer, so we just append SNAPSHOT to this version + version = versionParts[0..versionParts.size()-1].join('.') + '-SNAPSHOT' + } + } + + processResources { + filter(ReplaceTokens, tokens:[fullVersion: detailedVersionString]) + } + + +shadowJar { + zip64=true + archiveClassifier = '' + def exclude_modules = project + .configurations + .provided + .resolvedConfiguration + .getLenientConfiguration() + .getAllModuleDependencies() + .collect { + it.name + } + dependencies { + + exclude(dependency { + exclude_modules.contains(it.name) + }) + + } + mergeServiceFiles() + // we relocate namespaces manually, because we want to know exactly which libs we are exposing and why + // we can move to automatic relocation using ConfigureShadowRelocation after we get to a good place on these first + relocate 'com.fasterxml.jackson', 'datahub.shaded.jackson' + relocate 'net.jcip.annotations', 'datahub.shaded.annotations' + relocate 'javassist', 'datahub.shaded.javassist' + relocate 'edu.umd.cs.findbugs', 'datahub.shaded.findbugs' + relocate 'org.antlr', 'datahub.shaded.org.antlr' + relocate 'antlr', 'datahub.shaded.antlr' + relocate 'org.apache.commons', 'datahub.shaded.org.apache.commons' + relocate 'org.apache.http', 'datahub.shaded.org.apache.http' + relocate 'org.reflections', 'datahub.shaded.org.reflections' + relocate 'st4hidden', 'datahub.shaded.st4hidden' + relocate 'org.stringtemplate', 'datahub.shaded.org.stringtemplate' + relocate 'org.abego.treelayout', 'datahub.shaded.treelayout' + relocate 'org.slf4j', 'datahub.shaded.slf4j' + relocate 'com.github.benmanes.caffeine', 'datahub.shaded.com.github.benmanes.caffeine' + relocate 'org.checkerframework', 'datahub.shaded.org.checkerframework' + relocate 'org.jgrapht', 'datahub.shaded.org.jgrapht' + relocate 'org.jheaps', 'datahub.shaded.org.jheaps' + + finalizedBy checkShadowJar +} + +checkShadowJar { + dependsOn shadowJar +} + +assemble { + dependsOn shadowJar +} + +task sourcesJar(type: Jar) { + archiveClassifier = 'sources' + from sourceSets.main.allSource +} + +task javadocJar(type: Jar) { + archiveClassifier = 'javadoc' + from javadoc +} + + +publishing { + publications { + shadow(MavenPublication) { + publication -> project.shadow.component(publication) + pom { + name = 'Datahub Protobuf' + group = 'io.acryl' + artifactId = 'datahub-protobuf' + description = 'DataHub integration with Protobuf schemas for metadata' + url = 'https://datahubproject.io' + artifacts = [ shadowJar, javadocJar, sourcesJar ] + + scm { + connection = 'scm:git:git://github.com/datahub-project/datahub.git' + developerConnection = 'scm:git:ssh://github.com:datahub-project/datahub.git' + url = 'https://github.com/datahub-project/datahub.git' + } + + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + + developers { + developer { + id = 'datahub' + name = 'Datahub' + email = 'datahub@acryl.io' + } + } + } + } + } + + repositories { + maven { + def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" + def ossrhUsername = System.getenv('RELEASE_USERNAME') + def ossrhPassword = System.getenv('RELEASE_PASSWORD') + credentials { + username ossrhUsername + password ossrhPassword + } + url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl + } + } +} + +signing { + def signingKey = findProperty("signingKey") + def signingPassword = System.getenv("SIGNING_PASSWORD") + useInMemoryPgpKeys(signingKey, signingPassword) + sign publishing.publications.shadow +} + +nexusStaging { + serverUrl = "https://s01.oss.sonatype.org/service/local/" //required only for projects registered in Sonatype after 2021-02-24 + username = System.getenv("NEXUS_USERNAME") + password = System.getenv("NEXUS_PASSWORD") +} diff --git a/metadata-integration/java/datahub-protobuf/scripts/check_jar.sh b/metadata-integration/java/datahub-protobuf/scripts/check_jar.sh new file mode 100755 index 0000000000..e04ba04fcf --- /dev/null +++ b/metadata-integration/java/datahub-protobuf/scripts/check_jar.sh @@ -0,0 +1,48 @@ +# This script checks the shadow jar to ensure that we only have allowed classes being exposed through the jar +jarFiles=$(find build/libs -name "datahub-protobuf*.jar" | grep -v sources | grep -v javadoc) +for jarFile in ${jarFiles}; do +jar -tvf $jarFile |\ + grep -v "datahub/shaded" |\ + grep -v "google/" |\ + grep -v "google/protobuf" |\ + grep -v "protobuf/" |\ + grep -v "mozilla/" |\ + grep -v "META-INF" |\ + grep -v "com/linkedin" |\ + grep -v "com/datahub" |\ + grep -v "datahub" |\ + grep -v "entity-registry" |\ + grep -v "pegasus/" |\ + grep -v "legacyPegasusSchemas/" |\ + grep -v " com/$" |\ + grep -v " org/$" |\ + grep -v " io/$" |\ + grep -v "git.properties" |\ + grep -v "org/springframework" |\ + grep -v "org/aopalliance" |\ + grep -v "javax/" |\ + grep -v "io/swagger" |\ + grep -v "JavaSpring" |\ + grep -v "java-header-style.xml" |\ + grep -v "xml-header-style.xml" |\ + grep -v "license.header" |\ + grep -v "module-info.class" |\ + grep -v "com/google/" |\ + grep -v "org/codehaus/" |\ + grep -v "client.properties" |\ + grep -v "kafka" |\ + grep -v "win/" |\ + grep -v "include/" |\ + grep -v "linux/" |\ + grep -v "darwin" |\ + grep -v "MetadataChangeProposal.avsc" |\ + grep -v "aix" + +if [ $? -ne 0 ]; then + echo "✅ No unexpected class paths found in ${jarFile}" +else + echo "💥 Found unexpected class paths in ${jarFile}" + exit 1 +fi +done +exit 0 diff --git a/metadata-integration/java/datahub-protobuf/src/main/java/datahub/protobuf/visitors/VisitContext.java b/metadata-integration/java/datahub-protobuf/src/main/java/datahub/protobuf/visitors/VisitContext.java index 57e3d61b38..51c92332d9 100644 --- a/metadata-integration/java/datahub-protobuf/src/main/java/datahub/protobuf/visitors/VisitContext.java +++ b/metadata-integration/java/datahub-protobuf/src/main/java/datahub/protobuf/visitors/VisitContext.java @@ -54,4 +54,8 @@ public class VisitContext { .reduce(Double::sum) .orElse(0); } + + public static class VisitContextBuilder { + + }; }