Skip to content

Commit f0466c4

Browse files
committed
ci: Backport release changes to 0.22 branch
Signed-off-by: Danny Chiao <danny@tecton.ai>
1 parent 99e5d25 commit f0466c4

File tree

21 files changed

+212
-451
lines changed

21 files changed

+212
-451
lines changed

.github/workflows/release.yml

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ jobs:
4242
echo "Current version is ${CURRENT_VERSION}"
4343
echo "Next version is ${NEXT_VERSION}"
4444
45-
publish-web-ui-npm:
45+
validate_version_bumps:
4646
if: github.repository == 'feast-dev/feast'
4747
needs: get_dry_release_versions
4848
runs-on: ubuntu-latest
4949
env:
5050
# This publish is working using an NPM automation token to bypass 2FA
5151
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
52+
HELM_VERSION: v3.8.0
5253
CURRENT_VERSION: ${{ needs.get_dry_release_versions.outputs.current_version }}
5354
NEXT_VERSION: ${{ needs.get_dry_release_versions.outputs.next_version }}
5455
steps:
@@ -57,23 +58,35 @@ jobs:
5758
with:
5859
node-version: '17.x'
5960
registry-url: 'https://registry.npmjs.org'
60-
- name: Bump file versions (temporarily for Web UI publish)
61+
- name: Bump file versions
6162
run: python ./infra/scripts/release/bump_file_versions.py ${CURRENT_VERSION} ${NEXT_VERSION}
6263
- name: Install yarn dependencies
6364
working-directory: ./ui
6465
run: yarn install
6566
- name: Build yarn rollup
6667
working-directory: ./ui
6768
run: yarn build:lib
68-
- name: Publish UI package
69-
working-directory: ./ui
70-
run: npm publish
71-
env:
72-
# This publish is working using an NPM automation token to bypass 2FA
73-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
69+
- name: Bundle UI in SDK
70+
run: make build-ui
71+
- name: Remove previous Helm
72+
run: sudo rm -rf $(which helm)
73+
- name: Set up Homebrew
74+
uses: Homebrew/actions/setup-homebrew@master
75+
- name: Setup Helm-docs
76+
run: |
77+
brew install norwoodj/tap/helm-docs
78+
- name: Generate helm chart READMEs
79+
run: make build-helm-docs
80+
- name: Install Helm
81+
run: ./infra/scripts/helm/install-helm.sh
82+
- name: Validate Helm chart prior to publishing
83+
run: ./infra/scripts/helm/validate-helm-chart-publish.sh
84+
- name: Validate all version consistency
85+
run: ./infra/scripts/helm/validate-helm-chart-versions.sh $NEXT_VERSION
7486

7587
release:
7688
name: release
89+
needs: validate_version_bumps
7790
runs-on: ubuntu-latest
7891
env:
7992
GITHUB_TOKEN: ${{ github.event.inputs.token }}
@@ -90,6 +103,12 @@ jobs:
90103
uses: actions/setup-node@v2
91104
with:
92105
node-version: '16'
106+
- name: Set up Homebrew
107+
id: set-up-homebrew
108+
uses: Homebrew/actions/setup-homebrew@master
109+
- name: Setup Helm-docs
110+
run: |
111+
brew install norwoodj/tap/helm-docs
93112
- name: Release (Dry Run)
94113
if: github.event.inputs.dry_run == 'true'
95114
run: |

.releaserc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ module.exports = {
4141
"verifyReleaseCmd": "./infra/scripts/validate-release.sh ${nextRelease.type} " + current_branch,
4242

4343
// Bump all version files and build UI / update yarn.lock
44-
"prepareCmd": "python ./infra/scripts/release/bump_file_versions.py ${lastRelease.version} ${nextRelease.version}; make build-ui"
44+
"prepareCmd": "python ./infra/scripts/release/bump_file_versions.py ${lastRelease.version} ${nextRelease.version}; make build-ui; make build-helm-docs"
4545
}],
4646

4747
["@semantic-release/release-notes-generator", {

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@ build-sphinx: compile-protos-python
283283
build-templates:
284284
python infra/scripts/compile-templates.py
285285

286+
build-helm-docs:
287+
cd ${ROOT_DIR}/infra/charts/feast; helm-docs
288+
cd ${ROOT_DIR}/infra/charts/feast-feature-server; helm-docs
289+
286290
# Web UI
287291

288292
# Note: requires node and yarn to be installed

docs/reference/feature-servers/python-feature-server.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ There is a CLI command that starts the server: `feast serve`. By default, Feast
1010

1111
## Deploying as a service
1212

13-
One can also deploy a feature server by building a docker image that bundles in the project's `feature_store.yaml`. See [helm chart](https://github.com/feast-dev/feast/blob/master/infra/charts/feast-python-server) for example.
13+
One can also deploy a feature server by building a docker image that bundles in the project's `feature_store.yaml`. See [helm chart](https://github.com/feast-dev/feast/blob/master/infra/charts/feast-feature-server) for example.
1414

1515
A [remote feature server](../alpha-aws-lambda-feature-server.md) on AWS Lambda is available. A remote feature server on GCP Cloud Run is currently being developed.
1616

Lines changed: 35 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,48 @@
1-
# feast-feature-server
1+
# Feast Python / Go Feature Server Helm Charts
22

3-
![Version: 0.22.4](https://img.shields.io/badge/Version-0.22.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
3+
Current chart version is `0.22.4`
44

5-
Feast Feature Server in Go or Python
5+
## Installation
66

7-
**Homepage:** <https://feast.dev/>
7+
Run the following commands to add the repository
88

9-
## Source Code
10-
11-
* <https://github.com/feast-dev/feast>
12-
13-
## Values
14-
15-
| Key | Type | Default | Description |
16-
| ---------------------------------- | ------ | ---------------- | ----------- |
17-
| affinity | object | `{}` | |
18-
| fullnameOverride | string | `""` | |
19-
| image.pullPolicy | string | `"IfNotPresent"` | |
20-
| image.repository | string | `""` | |
21-
| image.tag | string | `""` | |
22-
| imagePullSecrets | list | `[]` | |
23-
| livenessProbe.initialDelaySeconds | int | `30` | |
24-
| livenessProbe.periodSeconds | int | `30` | |
25-
| nameOverride | string | `""` | |
26-
| nodeSelector | object | `{}` | |
27-
| podAnnotations | object | `{}` | |
28-
| podSecurityContext | object | `{}` | |
29-
| readinessProbe.initialDelaySeconds | int | `20` | |
30-
| readinessProbe.periodSeconds | int | `10` | |
31-
| replicaCount | int | `1` | |
32-
| resources | object | `{}` | |
33-
| securityContext | object | `{}` | |
34-
| service.port | int | `80` | |
35-
| service.type | string | `"ClusterIP"` | |
36-
| tolerations | list | `[]` | |
37-
38-
----------------------------------------------
39-
Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0)
40-
41-
42-
Docker repository and tag are required. Helm install example:
439
```
44-
helm install feast-feature-server . --set image.repository=REPO --set image.tag=TAG
10+
helm repo add feast-charts https://feast-helm-charts.storage.googleapis.com
11+
helm repo update
4512
```
4613

47-
Deployment assumes that `feature_store.yaml` exists on docker image. Example docker image:
48-
```
49-
FROM python:3.8
14+
Install Feast Feature Server on Kubernetes
5015

51-
RUN apt update && \
52-
apt install -y jq
53-
54-
RUN pip install pip --upgrade
55-
56-
RUN pip install feast
57-
58-
COPY feature_store.yaml /feature_store.yaml
16+
A base64 encoded version of the `feature_store.yaml` file is needed. Helm install example:
5917
```
60-
61-
Furthermore, if you wish to use the Go feature server, then you must install the Apache Arrow C++ libraries, and your `feature_store.yaml` should include `go_feature_server: True`.
62-
For more details, see the [docs](https://docs.feast.dev/reference/feature-servers/go-feature-server).
63-
The docker image might look like:
18+
helm install feast-feature-server feast-charts/feast-feature-server --set feature_store_yaml_base64=$(base64 feature_store.yaml)
6419
```
65-
FROM python:3.8
6620

67-
RUN apt update && \
68-
apt install -y jq
21+
## Tutorial
22+
See [here](https://github.com/feast-dev/feast/tree/master/examples/python-helm-demo) for a sample tutorial on testing this helm chart with a demo feature repository and a local Redis instance.
6923

70-
RUN pip install pip --upgrade
71-
72-
RUN pip install feast
73-
74-
RUN apt update
75-
RUN apt install -y -V ca-certificates lsb-release wget
76-
RUN wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
77-
RUN apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
78-
RUN apt update
79-
RUN apt -y install libarrow-dev
24+
## Values
8025

81-
COPY feature_store.yaml /feature_store.yaml
82-
```
26+
| Key | Type | Default | Description |
27+
|-----|------|---------|-------------|
28+
| affinity | object | `{}` | |
29+
| feature_store_yaml_base64 | string | `""` | [required] a base64 encoded version of feature_store.yaml |
30+
| fullnameOverride | string | `""` | |
31+
| image.pullPolicy | string | `"IfNotPresent"` | |
32+
| image.repository | string | `""` | |
33+
| image.tag | string | `""` | |
34+
| imagePullSecrets | list | `[]` | |
35+
| livenessProbe.initialDelaySeconds | int | `30` | |
36+
| livenessProbe.periodSeconds | int | `30` | |
37+
| nameOverride | string | `""` | |
38+
| nodeSelector | object | `{}` | |
39+
| podAnnotations | object | `{}` | |
40+
| podSecurityContext | object | `{}` | |
41+
| readinessProbe.initialDelaySeconds | int | `20` | |
42+
| readinessProbe.periodSeconds | int | `10` | |
43+
| replicaCount | int | `1` | |
44+
| resources | object | `{}` | |
45+
| securityContext | object | `{}` | |
46+
| service.port | int | `80` | |
47+
| service.type | string | `"ClusterIP"` | |
48+
| tolerations | list | `[]` | |
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Feast Python / Go Feature Server Helm Charts
2+
3+
Current chart version is `{{ template "chart.version" . }}`
4+
5+
## Installation
6+
7+
Run the following commands to add the repository
8+
9+
```
10+
helm repo add feast-charts https://feast-helm-charts.storage.googleapis.com
11+
helm repo update
12+
```
13+
14+
Install Feast Feature Server on Kubernetes
15+
16+
A base64 encoded version of the `feature_store.yaml` file is needed. Helm install example:
17+
```
18+
helm install feast-feature-server feast-charts/feast-feature-server --set feature_store_yaml_base64=$(base64 feature_store.yaml)
19+
```
20+
21+
## Tutorial
22+
See [here](https://github.com/feast-dev/feast/tree/master/examples/python-helm-demo) for a sample tutorial on testing this helm chart with a demo feature repository and a local Redis instance.
23+
24+
{{ template "chart.requirementsSection" . }}
25+
26+
{{ template "chart.valuesSection" . }}

infra/charts/feast-feature-server/templates/deployment.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ spec:
3030
{{- toYaml .Values.securityContext | nindent 12 }}
3131
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
3232
imagePullPolicy: {{ .Values.image.pullPolicy }}
33+
env:
34+
- name: FEATURE_STORE_YAML_BASE64
35+
value: {{ .Values.feature_store_yaml_base64 }}
3336
command: ["feast", "serve", "-h", "0.0.0.0"]
3437
ports:
3538
- name: http

infra/charts/feast-feature-server/values.yaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
replicaCount: 1
66

77
image:
8-
repository: ""
8+
# image.repository -- Docker image for Feature Server repository
9+
repository: feastdev/feature-server
910
pullPolicy: IfNotPresent
10-
tag: ""
11+
# image.tag -- The Docker image tag (can be overwritten if custom feature server deps are needed for on demand transforms)
12+
tag: 0.22.4
1113

1214
imagePullSecrets: []
1315
nameOverride: ""
1416
fullnameOverride: ""
1517

18+
# feature_store_yaml_base64 -- [required] a base64 encoded version of feature_store.yaml
19+
feature_store_yaml_base64: ""
20+
1621
podAnnotations: {}
1722

1823
podSecurityContext: {}

infra/charts/feast-python-server/.helmignore

Lines changed: 0 additions & 23 deletions
This file was deleted.

infra/charts/feast-python-server/Chart.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)