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