diff --git a/.gitignore b/.gitignore index b1d925e825..a8c5e3fe0b 100644 --- a/.gitignore +++ b/.gitignore @@ -174,4 +174,8 @@ dmypy.json .pyre/ .vscode -sdk/python/docs/html \ No newline at end of file +# .flattened-pom.xml is generated by flatten-maven-plugin. +# This pom should not be committed because it is only used during release / deployment. +.flattened-pom.xml + +sdk/python/docs/html diff --git a/.prow/config.yaml b/.prow/config.yaml index 940e2562d7..c63d3dce79 100644 --- a/.prow/config.yaml +++ b/.prow/config.yaml @@ -169,6 +169,34 @@ postsubmits: # https://github.com/semver/semver/issues/232 - ^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$ + - name: publish-java-sdk + decorate: true + spec: + containers: + - image: maven:3.6-jdk-8 + command: + - bash + - -c + - .prow/scripts/publish-java-sdk.sh --revision ${PULL_BASE_REF:1} + volumeMounts: + - name: gpg-keys + mountPath: /etc/gpg + readOnly: true + - name: maven-settings + mountPath: /root/.m2/settings.xml + subPath: settings.xml + readOnly: true + volumes: + - name: gpg-keys + secret: + secretName: gpg-keys + - name: maven-settings + secret: + secretName: maven-settings + branches: + # Filter on tags with semantic versioning, prefixed with "v" + - ^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$ + - name: publish-docker-images decorate: true spec: @@ -278,4 +306,5 @@ postsubmits: secret: secretName: feast-service-account branches: + # Filter on tags with semantic versioning, prefixed with "v" - ^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$ diff --git a/.prow/scripts/publish-java-sdk.sh b/.prow/scripts/publish-java-sdk.sh new file mode 100755 index 0000000000..17513d0eb0 --- /dev/null +++ b/.prow/scripts/publish-java-sdk.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash + +set -e +set -o pipefail + +GPG_KEY_IMPORT_DIR=/etc/gpg + +usage() +{ + echo "usage: publish-java-sdk.sh + + --revision Value for the revision e.g. '0.2.3' + --gpg-key-import-dir Directory containing existing GPG keys to import. + The directory should contain these 2 files: + - public-key + - private-key + The default value is '/etc/gpg' + + This script assumes the GPG private key is protected by a passphrase. + The passphrase can be specified in \$HOME/.m2/settings.xml. In the same xml + file, credentials to upload releases to Sonatype must also be provided. + + # Example settings: ~/.m2/settings.xml + + + + ossrh + SONATYPE_USER + SONATYPE_PASSWORD + + + + + ossrh + + GPG_PASSPHRASE + + + + +" +} + +while [ "$1" != "" ]; do + case "$1" in + --revision ) REVISION="$2"; shift;; + --gpg-key-import-dir ) GPG_KEY_IMPORT_DIR="$2"; shift;; + -h | --help ) usage; exit;; + * ) usage; exit 1 + esac + shift +done + +if [ -z $REVISION ]; then usage; exit 1; fi + +echo "============================================================" +echo "Checking Maven and GPG versions" +echo "============================================================" +mvn --version +echo "" +gpg --version + +echo "============================================================" +echo "Importing GPG keys" +echo "============================================================" +gpg --import --batch --yes $GPG_KEY_IMPORT_DIR/public-key +gpg --import --batch --yes $GPG_KEY_IMPORT_DIR/private-key + +echo "============================================================" +echo "Deploying Java SDK with revision: $REVISION" +echo "============================================================" +mvn --projects sdk/java -Drevision=$REVISION --batch-mode clean deploy diff --git a/core/pom.xml b/core/pom.xml index c0d889e283..954c7c0018 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -23,7 +23,7 @@ dev.feast feast-parent - 0.3.6-SNAPSHOT + ${revision} Feast Core diff --git a/ingestion/pom.xml b/ingestion/pom.xml index fce645c51b..4908b54698 100644 --- a/ingestion/pom.xml +++ b/ingestion/pom.xml @@ -23,7 +23,7 @@ dev.feast feast-parent - 0.3.6-SNAPSHOT + ${revision} Feast Ingestion diff --git a/pom.xml b/pom.xml index 882e24ab8e..05fb701ac4 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ dev.feast feast-parent - 0.3.6-SNAPSHOT + ${revision} pom @@ -35,6 +35,7 @@ + 0.4.2-SNAPSHOT https://github.com/gojek/feast UTF-8 @@ -47,7 +48,6 @@ 2.16.0 1.91.0 0.8.0 - 1.9.10 1.3 2.3.0 @@ -58,9 +58,18 @@ Gojek - https://www.gojek.io/ + https://www.gojek.com + + + Feast Authors + ${github.url} + Gojek + https://www.gojek.com + + + Apache License, Version 2.0 @@ -81,11 +90,16 @@ ${github.url}/issues + ossrh https://oss.sonatype.org/content/repositories/snapshots + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + @@ -274,21 +288,10 @@ - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true - - ossrh - https://oss.sonatype.org/ - false - - org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.2.1 attach-sources @@ -301,7 +304,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 3.1.1 attach-javadocs @@ -314,7 +317,7 @@ com.diffplug.spotless spotless-maven-plugin - 1.26.0 + 1.26.1 @@ -429,6 +432,78 @@ true + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + ossrh + https://oss.sonatype.org/ + + true + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.1.0 + + oss + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + --pinentry-mode + loopback + + + + ${gpg.passphrase} + + + + diff --git a/sdk/java/pom.xml b/sdk/java/pom.xml index b3543446e2..2970dae3ee 100644 --- a/sdk/java/pom.xml +++ b/sdk/java/pom.xml @@ -11,7 +11,7 @@ dev.feast feast-parent - 0.3.6-SNAPSHOT + ${revision} ../.. diff --git a/serving/pom.xml b/serving/pom.xml index 4a28eb739e..dc3391df62 100644 --- a/serving/pom.xml +++ b/serving/pom.xml @@ -23,7 +23,7 @@ dev.feast feast-parent - 0.3.6-SNAPSHOT + ${revision} feast-serving