diff --git a/.github/workflows/master_only.yml b/.github/workflows/master_only.yml
index 501630a318..edbcacceea 100644
--- a/.github/workflows/master_only.yml
+++ b/.github/workflows/master_only.yml
@@ -31,21 +31,21 @@ jobs:
run: make build-${{ matrix.component }}-docker REGISTRY=gcr.io/kf-feast VERSION=${GITHUB_SHA}
- name: Push image
run: make push-${{ matrix.component }}-docker REGISTRY=gcr.io/kf-feast VERSION=${GITHUB_SHA}
- - name: Push image to feast dev
+ - name: Push development Docker image
run: |
if [ ${GITHUB_REF#refs/*/} == "master" ]; then
- docker tag gcr.io/kf-feast/feast-${{ matrix.component }}:${GITHUB_SHA} gcr.io/kf-feast/feast-${{ matrix.component }}:dev
- docker push gcr.io/kf-feast/feast-${{ matrix.component }}:dev
+ docker tag gcr.io/kf-feast/feast-${{ matrix.component }}:${GITHUB_SHA} gcr.io/kf-feast/feast-${{ matrix.component }}:develop
+ docker push gcr.io/kf-feast/feast-${{ matrix.component }}:develop
fi
- name: Get version
run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF#refs/*/}
- - name: Push versioned release
+ - name: Push versioned Docker image
run: |
# Build and push semver tagged commits
# Regular expression should match MAJOR.MINOR.PATCH[-PRERELEASE[.IDENTIFIER]]
# eg. v0.7.1 v0.7.2-alpha v0.7.2-rc.1
- rx='^v([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))$ '
- if echo "${RELEASE_VERSION}" | grep -P "$rx" &>/dev/null ; then
+ SEMVER_REGEX='^v[0-9]+\.[0-9]+\.[0-9]+(-([0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*))?$'
+ if echo "${RELEASE_VERSION}" | grep -P "$SEMVER_REGEX" &>/dev/null ; then
VERSION_WITHOUT_PREFIX=${RELEASE_VERSION:1}
docker tag gcr.io/kf-feast/feast-${{ matrix.component }}:${GITHUB_SHA} gcr.io/kf-feast/feast-${{ matrix.component }}:${VERSION_WITHOUT_PREFIX}
diff --git a/datatypes/java/README.md b/datatypes/java/README.md
index f87a50f1bd..5a5deb0429 100644
--- a/datatypes/java/README.md
+++ b/datatypes/java/README.md
@@ -16,7 +16,7 @@ Dependency Coordinates
dev.feast
datatypes-java
- 0.4.0-SNAPSHOT
+ 0.7-SNAPSHOT
```
diff --git a/docs/contributing/development-guide.md b/docs/contributing/development-guide.md
index e71c91d00a..2463fa4810 100644
--- a/docs/contributing/development-guide.md
+++ b/docs/contributing/development-guide.md
@@ -210,7 +210,7 @@ grpc_cli call localhost:6566 GetFeastServingInfo ''
```text
connecting to localhost:6566
-version: "0.6.2-SNAPSHOT"
+version: "0.7-SNAPSHOT"
type: FEAST_SERVING_TYPE_ONLINE
Rpc succeeded with OK status
diff --git a/infra/charts/feast/charts/feast-core/README.md b/infra/charts/feast/charts/feast-core/README.md
index 36d963dd24..af9370dd72 100644
--- a/infra/charts/feast/charts/feast-core/README.md
+++ b/infra/charts/feast/charts/feast-core/README.md
@@ -23,7 +23,7 @@ Current chart version is `0.7-SNAPSHOT`
| gcpServiceAccount.existingSecret.name | string | `"feast-gcp-service-account"` | Name of the existing secret containing the service account |
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
| image.repository | string | `"gcr.io/kf-feast/feast-core"` | Docker image repository |
-| image.tag | string | `"0.6.2"` | Image tag |
+| image.tag | string | `"develop"` | Image tag |
| ingress.grpc.annotations | object | `{}` | Extra annotations for the ingress |
| ingress.grpc.auth.enabled | bool | `false` | Flag to enable auth |
| ingress.grpc.class | string | `"nginx"` | Which ingress controller to use |
diff --git a/infra/charts/feast/charts/feast-core/values.yaml b/infra/charts/feast/charts/feast-core/values.yaml
index e25dba9291..28ab8a1dee 100644
--- a/infra/charts/feast/charts/feast-core/values.yaml
+++ b/infra/charts/feast/charts/feast-core/values.yaml
@@ -5,7 +5,7 @@ image:
# image.repository -- Docker image repository
repository: gcr.io/kf-feast/feast-core
# image.tag -- Image tag
- tag: 0.6.2
+ tag: develop
# image.pullPolicy -- Image pull policy
pullPolicy: IfNotPresent
diff --git a/infra/charts/feast/charts/feast-jobcontroller/README.md b/infra/charts/feast/charts/feast-jobcontroller/README.md
index 7c27fccedf..628a69f480 100644
--- a/infra/charts/feast/charts/feast-jobcontroller/README.md
+++ b/infra/charts/feast/charts/feast-jobcontroller/README.md
@@ -23,7 +23,7 @@ Current chart version is `0.7-SNAPSHOT`
| gcpServiceAccount.existingSecret.name | string | `"feast-gcp-service-account"` | Name of the existing secret containing the service account |
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
| image.repository | string | `"gcr.io/kf-feast/feast-jobcontroller"` | Docker image repository |
-| image.tag | string | `"0.6.2"` | Image tag |
+| image.tag | string | `"develop"` | Image tag |
| ingress.grpc.annotations | object | `{}` | Extra annotations for the ingress |
| ingress.grpc.auth.enabled | bool | `false` | Flag to enable auth |
| ingress.grpc.class | string | `"nginx"` | Which ingress controller to use |
diff --git a/infra/charts/feast/charts/feast-jobcontroller/values.yaml b/infra/charts/feast/charts/feast-jobcontroller/values.yaml
index bd4856ad54..f57c98032c 100644
--- a/infra/charts/feast/charts/feast-jobcontroller/values.yaml
+++ b/infra/charts/feast/charts/feast-jobcontroller/values.yaml
@@ -5,7 +5,7 @@ image:
# image.repository -- Docker image repository
repository: gcr.io/kf-feast/feast-jobcontroller
# image.tag -- Image tag
- tag: 0.6.2
+ tag: develop
# image.pullPolicy -- Image pull policy
pullPolicy: IfNotPresent
diff --git a/infra/charts/feast/charts/feast-jupyter/README.md b/infra/charts/feast/charts/feast-jupyter/README.md
index c35da52d82..ec9567190d 100644
--- a/infra/charts/feast/charts/feast-jupyter/README.md
+++ b/infra/charts/feast/charts/feast-jupyter/README.md
@@ -17,5 +17,5 @@ Current chart version is `0.7-SNAPSHOT`
| gcpServiceAccount.existingSecret.name | string | `"feast-gcp-service-account"` | Name of the existing secret containing the service account |
| image.pullPolicy | string | `"Always"` | Image pull policy |
| image.repository | string | `"gcr.io/kf-feast/feast-jupyter"` | Docker image repository |
-| image.tag | string | `"0.6.2"` | Image tag |
+| image.tag | string | `"develop"` | Image tag |
| replicaCount | int | `1` | Number of pods that will be created |
diff --git a/infra/charts/feast/charts/feast-jupyter/values.yaml b/infra/charts/feast/charts/feast-jupyter/values.yaml
index 162bb9bf17..b4a42b0c18 100644
--- a/infra/charts/feast/charts/feast-jupyter/values.yaml
+++ b/infra/charts/feast/charts/feast-jupyter/values.yaml
@@ -5,7 +5,7 @@ image:
# image.repository -- Docker image repository
repository: gcr.io/kf-feast/feast-jupyter
# image.tag -- Image tag
- tag: 0.6.2
+ tag: develop
# image.pullPolicy -- Image pull policy
pullPolicy: Always
@@ -16,4 +16,4 @@ gcpServiceAccount:
# gcpServiceAccount.existingSecret.name -- Name of the existing secret containing the service account
name: feast-gcp-service-account
# gcpServiceAccount.existingSecret.key -- Key in the secret data (file name of the service account)
- key: credentials.json
\ No newline at end of file
+ key: credentials.json
diff --git a/infra/charts/feast/charts/feast-serving/README.md b/infra/charts/feast/charts/feast-serving/README.md
index ad8862e174..16f39ef569 100644
--- a/infra/charts/feast/charts/feast-serving/README.md
+++ b/infra/charts/feast/charts/feast-serving/README.md
@@ -23,7 +23,7 @@ Current chart version is `0.7-SNAPSHOT`
| gcpServiceAccount.existingSecret.name | string | `"feast-gcp-service-account"` | Name of the existing secret containing the service account |
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
| image.repository | string | `"gcr.io/kf-feast/feast-serving"` | Docker image repository |
-| image.tag | string | `"0.6.2"` | Image tag |
+| image.tag | string | `"develop"` | Image tag |
| ingress.grpc.annotations | object | `{}` | Extra annotations for the ingress |
| ingress.grpc.auth.enabled | bool | `false` | Flag to enable auth |
| ingress.grpc.class | string | `"nginx"` | Which ingress controller to use |
diff --git a/infra/charts/feast/charts/feast-serving/values.yaml b/infra/charts/feast/charts/feast-serving/values.yaml
index 220588156e..6343f4432b 100644
--- a/infra/charts/feast/charts/feast-serving/values.yaml
+++ b/infra/charts/feast/charts/feast-serving/values.yaml
@@ -5,7 +5,7 @@ image:
# image.repository -- Docker image repository
repository: gcr.io/kf-feast/feast-serving
# image.tag -- Image tag
- tag: 0.6.2
+ tag: develop
# image.pullPolicy -- Image pull policy
pullPolicy: IfNotPresent
diff --git a/infra/charts/feast/requirements.lock b/infra/charts/feast/requirements.lock
index 884e4c7527..9844cc048c 100644
--- a/infra/charts/feast/requirements.lock
+++ b/infra/charts/feast/requirements.lock
@@ -1,16 +1,16 @@
dependencies:
- name: feast-core
repository: ""
- version: 0.6.2
+ version: 0.7-SNAPSHOT
- name: feast-serving
repository: ""
- version: 0.6.2
+ version: 0.7-SNAPSHOT
- name: feast-serving
repository: ""
- version: 0.6.2
+ version: 0.7-SNAPSHOT
- name: feast-jupyter
repository: ""
- version: 0.6.2
+ version: 0.7-SNAPSHOT
- name: postgresql
repository: https://kubernetes-charts.storage.googleapis.com/
version: 8.6.1
diff --git a/infra/docker-compose/.env.sample b/infra/docker-compose/.env.sample
index 4dcca0b60e..e984460f8b 100644
--- a/infra/docker-compose/.env.sample
+++ b/infra/docker-compose/.env.sample
@@ -1,8 +1,8 @@
COMPOSE_PROJECT_NAME=feast
-FEAST_VERSION=0.6.2
+FEAST_VERSION=develop
GCP_SERVICE_ACCOUNT=./gcp-service-accounts/key.json
FEAST_CORE_CONFIG=./core/core.yml
FEAST_JOB_CONTROLLER_CONFIG=./jobcontroller/jobcontroller.yml
FEAST_HISTORICAL_SERVING_CONFIG=./serving/historical-serving.yml
FEAST_HISTORICAL_SERVING_ENABLED=false
-FEAST_ONLINE_SERVING_CONFIG=./serving/online-serving.yml
\ No newline at end of file
+FEAST_ONLINE_SERVING_CONFIG=./serving/online-serving.yml
diff --git a/infra/scripts/validate-version-consistency.sh b/infra/scripts/validate-version-consistency.sh
index f33cb8a56f..2bb019dc8a 100755
--- a/infra/scripts/validate-version-consistency.sh
+++ b/infra/scripts/validate-version-consistency.sh
@@ -1,80 +1,131 @@
#!/usr/bin/env bash
# This script will scan through a list of files to validate that all versions are consistent with
-# - Master version (could be snapshot)
-# - Highest stable commit (latest tag)
+# - Master version: version set in maven (could be snapshot)
+# - Release version: 'dev' on master, Lastest tag on release branches.
+# - Stable Version: Highest stable tag. release candidates not included.
+# Usage: ./validate-version-consistency.sh
+# Optionaly set TARGET_MERGE_BRANCH var to the target merge branch to lint
+# versions against the given merge branch.
set -e
+BRANCH_NAME=${TARGET_MERGE_BRANCH-$(git rev-parse --abbrev-ref HEAD)}
+# Matches (ie vMAJOR.MINOR-branch) release branch names
+RELEASE_BRANCH_REGEX="^v[0-9]+\.[0-9]+-branch$"
+
# Determine the current Feast version from Maven (pom.xml)
export FEAST_MASTER_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
[[ -z "$FEAST_MASTER_VERSION" ]] && {
echo "$FEAST_MASTER_VERSION is missing, please check pom.xml and maven"
exit 1
}
+echo "Linting Master Version: $FEAST_MASTER_VERSION"
-# Determine the highest released version from Git history
-git fetch --prune --unshallow --tags || true
-FEAST_RELEASE_VERSION_WITH_V=$(git tag -l --sort -version:refname | head -n 1)
-echo $FEAST_RELEASE_VERSION_WITH_V
-
-export FEAST_RELEASE_VERSION=${FEAST_RELEASE_VERSION_WITH_V#"v"}
-echo $FEAST_RELEASE_VERSION
-
+# Determine Last release tag relative to current branch
+if [ $BRANCH_NAME = "master" ]
+then
+ # Use development version
+ FEAST_RELEASE_VERSION="develop"
+elif echo "$BRANCH_NAME" | grep -P $RELEASE_BRANCH_REGEX &>/dev/null
+then
+ # Use last release tag tagged on the release branch
+ LAST_MERGED_TAG=$(git tag -l --sort -version:refname --merged | head -n 1)
+ FEAST_MASTER_VERSION=${LAST_MERGED_TAG#"v"}
+else
+ # Do not enforce version linting as we don't know if the target merge branch FEAST_RELEASE_VERSION="_ANY"
+ FEAST_RELEASE_VERSION="_ANY"
+ echo "WARNING: Skipping docker version lint"
+fi
[[ -z "$FEAST_RELEASE_VERSION" ]] && {
echo "FEAST_RELEASE_VERSION is missing"
exit 1
}
+export FEAST_RELEASE_VERSION
+echo "Linting Release Version: $FEAST_RELEASE_VERSION"
+
+# Determine highest stable version (no release candidates) relative to current branch.
+# Regular expression for matching stable tags in the format vMAJOR.MINOR.PATCH
+STABLE_TAG_REGEX="^v[0-9]+\.[0-9]+\.[0-9]+$"
+if [ $BRANCH_NAME = "master" ]
+then
+ # Use last stable tag repo wide
+ LAST_STABLE_TAG=$(git tag --sort -version:refname | grep -P "$STABLE_TAG_REGEX" | head -n 1)
+ FEAST_STABLE_VERSION=${LAST_STABLE_TAG#"v"}
+elif echo "$BRANCH_NAME" | grep -P $RELEASE_BRANCH_REGEX &>/dev/null
+then
+ # Use last stable tag tagged on the release branch
+ LAST_STABLE_MERGE_TAG=$(git tag --sort -version:refname --merged | grep -P "$STABLE_TAG_REGEX" | head -n 1)
+ FEAST_STABLE_VERSION=${LAST_STABLE_MERGE_TAG#"v"}
+else
+ # Do not enforce version linting as we don't know if the target merge branch
+ FEAST_STABLE_VERSION="_ANY"
+ echo "WARNING: Skipping stable version lint"
+fi
+[[ -z "$FEAST_STABLE_VERSION" ]] && {
+ echo "FEAST_STABLE_VERSION is missing"
+ exit 1
+}
+export FEAST_STABLE_VERSION
+echo "Linting Stable Version: $FEAST_STABLE_VERSION"
# List of files to validate with master version (from pom.xml)
# Structure is a comma separated list of structure
# , ,
-#
declare -a files_to_validate_version=(
"infra/charts/feast/Chart.yaml,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-core/Chart.yaml,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-core/values.yaml,1,${FEAST_RELEASE_VERSION}"
+ "infra/charts/feast/charts/feast-core/README.md,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-core/README.md,1,${FEAST_RELEASE_VERSION}"
"infra/charts/feast/charts/feast-serving/Chart.yaml,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-jupyter/values.yaml,1,${FEAST_RELEASE_VERSION}"
"infra/charts/feast/charts/feast-jupyter/README.md,1,${FEAST_RELEASE_VERSION}"
+ "infra/charts/feast/charts/feast-jupyter/README.md,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-jupyter/Chart.yaml,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-serving/values.yaml,1,${FEAST_RELEASE_VERSION}"
"infra/charts/feast/charts/feast-serving/README.md,1,${FEAST_RELEASE_VERSION}"
+ "infra/charts/feast/charts/feast-serving/README.md,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-jobcontroller/Chart.yaml,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-jobcontroller/values.yaml,1,${FEAST_RELEASE_VERSION}"
+ "infra/charts/feast/charts/feast-jobcontroller/README.md,1,${FEAST_MASTER_VERSION}"
"infra/charts/feast/charts/feast-jobcontroller/README.md,1,${FEAST_RELEASE_VERSION}"
"infra/charts/feast/requirements.yaml,4,${FEAST_MASTER_VERSION}"
- "infra/charts/feast/requirements.lock,4,${FEAST_RELEASE_VERSION}"
+ "infra/charts/feast/requirements.lock,4,${FEAST_MASTER_VERSION}"
"infra/docker-compose/.env.sample,1,${FEAST_RELEASE_VERSION}"
+ "datatypes/java/README.md,1,${FEAST_MASTER_VERSION}"
+ "docs/contributing/development-guide.md,4,${FEAST_MASTER_VERSION}"
+ "docs/administration/audit-logging.md,1,${FEAST_STABLE_VERSION}"
+ "docs/getting-started/deploying-feast/docker-compose.md,1,${FEAST_STABLE_VERSION}"
+ "docs/getting-started/deploying-feast/kubernetes.md,1,${FEAST_STABLE_VERSION}"
+ "README.md,1,${FEAST_STABLE_VERSION}"
+ "CHANGELOG.md,2,${FEAST_STABLE_VERSION}"
)
echo
echo "Testing list of files to ensure they have the correct version"
echo
+
+IS_LINT_SUCCESS=true
for i in "${files_to_validate_version[@]}"; do
IFS=',' read -r FILE_PATH EXPECTED_OCCURRENCES VERSION <<<"${i}"
- echo
- echo
- echo "Testing whether versions are correctly set within file: $FILE_PATH"
- echo
- echo "File contents:"
- echo "========================================================="
- cat "$FILE_PATH"
- echo
+ # Disable version lint if '_ANY' specified as version.
+ if [ "$VERSION" = "_ANY" ]
+ then
+ continue
+ fi
+
echo "========================================================="
- ACTUAL_OCCURRENCES=$(grep -c "$VERSION" "$FILE_PATH" || true)
+ echo "Testing whether versions are correctly set within file: $FILE_PATH"
+ ACTUAL_OCCURRENCES=$(grep -c -P "\bv?$VERSION\b" "$FILE_PATH" || true)
if [ "${ACTUAL_OCCURRENCES}" -eq "${EXPECTED_OCCURRENCES}" ]; then
- echo "SUCCESS"
- echo
- echo "Expecting $EXPECTED_OCCURRENCES occurrences of $VERSION in $FILE_PATH, and found $ACTUAL_OCCURRENCES"
+ echo "OK: Expecting $EXPECTED_OCCURRENCES occurrences of '$VERSION' in $FILE_PATH, and found $ACTUAL_OCCURRENCES"
else
- echo "FAILURE"
- echo
- echo "Expecting $EXPECTED_OCCURRENCES occurrences of $VERSION in $FILE_PATH, but found $ACTUAL_OCCURRENCES"
- exit 1
+ echo "FAIL: Expecting $EXPECTED_OCCURRENCES occurrences of '$VERSION' in $FILE_PATH, but found $ACTUAL_OCCURRENCES"
+ IS_LINT_SUCCESS=false
fi
- echo "========================================================="
done
+
+if $IS_LINT_SUCCESS; then exit 0; else exit 1; fi
diff --git a/serving/README.md b/serving/README.md
index 39eef31103..ab530bb60d 100644
--- a/serving/README.md
+++ b/serving/README.md
@@ -11,8 +11,8 @@ From the Feast project root directory, run the following Maven command to start
```bash
# Assumptions:
# - Local Feast Core is running on localhost:6565
+# Uses configuration from serving/src/main/resources/application.yml
mvn -pl serving spring-boot:run -Dspring-boot.run.arguments=\
---feast.store.config-path=./sample_redis_config.yml,\
--feast.core-host=localhost,\
--feast.core-port=6565
```