Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/workflows/jwa_backend_unittests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: JWA Backend Tests
on:
pull_request:
paths:
- components/crud-web-apps/jupyter/backend/**
- releasing/version/VERSION
branches:
- main
- notebooks-v1
- 'v*-branch'

jobs:
run-backend-unittests:
name: Unittests
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install KinD
run: ./components/testing/gh-actions/install_kind.sh

- name: Create KinD Cluster
run: kind create cluster --config components/testing/gh-actions/kind-1-25.yaml

- uses: actions/setup-python@v5
with:
python-version: "3.7"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May we use 3.12? 3.7 is EOL.


- name: Setup Python environment
run: |
cd components/crud-web-apps/jupyter/backend
make install-deps
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make install-dependencies i would prefer.


- name: Run unittests
run: |
cd components/crud-web-apps/jupyter/backend
make unittest
98 changes: 98 additions & 0 deletions .github/workflows/jwa_frontend_tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: JWA Frontend Tests
on:
pull_request:
paths:
- components/crud-web-apps/jupyter/frontend/**
- releasing/version/VERSION
branches:
- main
- notebooks-v1
- 'v*-branch'

jobs:
frontend-format-linting-check:
name: Check code format and lint
runs-on: ubuntu-22.04

steps:
- name: Check out code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 16

- name: Check frontend formatting
run: |
cd components/crud-web-apps/jupyter/frontend
npm i
npm run format:check

- name: Check frontend code linting
run: |
cd components/crud-web-apps/jupyter/frontend
npm i
npm run lint-check

frontend-unit-tests:
runs-on: ubuntu-22.04
name: Unit tests
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup node version to 16
uses: actions/setup-node@v4
with:
node-version: 16

- name: Install Kubeflow common library dependecies
run: |
cd components/crud-web-apps/common/frontend/kubeflow-common-lib
npm i
npm run build
npm link ./dist/kubeflow

- name: Install JWA dependencies
run: |
cd components/crud-web-apps/jupyter/frontend
npm i
npm link kubeflow

- name: Run unit tests
run: |
cd components/crud-web-apps/jupyter/frontend
npm run test:prod

run-ui-tests:
name: UI tests with Playwright
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup node version to 16
uses: actions/setup-node@v4
with:
node-version: 16

- name: Install Kubeflow common library dependecies
run: |
cd components/crud-web-apps/common/frontend/kubeflow-common-lib
npm i
npm run build
npm link ./dist/kubeflow

- name: Install JWA dependencies
run: |
cd components/crud-web-apps/jupyter/frontend
npm i
npm link kubeflow

- name: Serve UI & run Playwright tests in Chrome and Firefox
run: |
cd components/crud-web-apps/jupyter/frontend
npm run serve > serve.log 2>&1 & npx wait-on http://localhost:4200
npx playwright install
npm run ui-test-ci-all
68 changes: 68 additions & 0 deletions .github/workflows/jwa_integration_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: JWA Integration Test
on:
pull_request:
paths:
- components/crud-web-apps/jupyter/**
- components/crud-web-apps/common/**
- releasing/version/VERSION
branches:
- main
- notebooks-v1
- 'v*-branch'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}
cancel-in-progress: true

env:
IMG: ghcr.io/kubeflow/notebooks/jupyter-web-app
TAG: integration-test

jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build JWA Image
run: |
cd components/crud-web-apps/jupyter
make docker-build-multi-arch

- name: Install KinD
run: ./components/testing/gh-actions/install_kind.sh

- name: Create KinD Cluster
run: kind create cluster --config components/testing/gh-actions/kind-1-25.yaml

- name: Load Image into KinD Cluster
run: |
kind load docker-image "${IMG}:${TAG}"

- name: Install kustomize
run: ./components/testing/gh-actions/install_kustomize.sh

- name: Install Istio
run: ./components/testing/gh-actions/install_istio.sh

- name: Build & Apply manifests
run: |
cd components/crud-web-apps/jupyter/manifests
kubectl create ns kubeflow

export CURRENT_IMAGE="${IMG}"
export PR_IMAGE="${IMG}:${TAG}"

# escape "." in the image names, as it is a special characters in sed
export CURRENT_IMAGE=$(echo "$CURRENT_IMAGE" | sed 's|\.|\\.|g')
export PR_IMAGE=$(echo "$PR_IMAGE" | sed 's|\.|\\.|g')

kustomize build overlays/istio \
| sed "s|${CURRENT_IMAGE}:[a-zA-Z0-9_.-]*|${PR_IMAGE}|g" \
| kubectl apply -f -

kubectl wait pods -n kubeflow -l app=jupyter-web-app --for=condition=Ready --timeout=300s
47 changes: 47 additions & 0 deletions .github/workflows/jwa_multi_arch_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: JWA Multi-Arch Build Test
on:
pull_request:
paths:
- components/crud-web-apps/jupyter/**
- components/crud-web-apps/common/**
- releasing/version/VERSION
branches:
- main
- notebooks-v1
- 'v*-branch'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }}
cancel-in-progress: true

env:
IMG: ghcr.io/kubeflow/notebooks/jupyter-web-app
PLATFORMS: linux/amd64,linux/ppc64le,linux/arm64

jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup QEMU
uses: docker/setup-qemu-action@v3

- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build multi-arch images
uses: docker/build-push-action@v5
with:
context: components/crud-web-apps/
file: components/crud-web-apps/jupyter/Dockerfile
platforms: ${{ env.PLATFORMS }}
push: false
load: false
tags: |
${{ env.IMG }}:${{ github.sha }}
${{ env.IMG }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max

3 changes: 1 addition & 2 deletions components/crud-web-apps/jupyter/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
IMG ?= ghcr.io/kubeflow/kubeflow/jupyter-web-app
IMG ?= ghcr.io/kubeflow/notebooks/jupyter-web-app
TAG ?= $(shell git describe --tags --always --dirty)
DOCKERFILE ?= jupyter/Dockerfile
ARCH ?= linux/amd64
Expand All @@ -14,7 +14,6 @@ docker-push:
docker-build-multi-arch: ## Build multi-arch docker images with docker buildx
cd ../ && docker buildx build --load --platform ${ARCH} --tag ${IMG}:${TAG} -f ${DOCKERFILE} .


.PHONY: docker-build-push-multi-arch
docker-build-push-multi-arch: ## Build multi-arch docker images with docker buildx and push to docker registry
cd ../ && docker buildx build --platform ${ARCH} --tag ${IMG}:${TAG} --push -f ${DOCKERFILE} .
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
spec:
containers:
- name: jupyter-web-app
image: ghcr.io/kubeflow/kubeflow/jupyter-web-app
image: ghcr.io/kubeflow/notebooks/jupyter-web-app
ports:
- containerPort: 5000
volumeMounts:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ commonLabels:
app: jupyter-web-app
kustomize.component: jupyter-web-app
images:
- name: ghcr.io/kubeflow/kubeflow/jupyter-web-app
newName: ghcr.io/kubeflow/kubeflow/jupyter-web-app
- name: ghcr.io/kubeflow/notebooks/jupyter-web-app
newName: ghcr.io/kubeflow/notebooks/jupyter-web-app
newTag: latest
# We need the name to be unique without the suffix because the original name is what
# gets used with patches
Expand Down
15 changes: 15 additions & 0 deletions components/testing/gh-actions/install_istio.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -euo pipefail

ISTIO_VERSION="1.17.8"
ISTIO_URL="https://istio.io/downloadIstio"
Copy link
Member

@juliusvonkohout juliusvonkohout Sep 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


echo "Installing Istio ${ISTIO_VERSION} ..."
mkdir istio_tmp
pushd istio_tmp >/dev/null
curl -sL "$ISTIO_URL" | ISTIO_VERSION=${ISTIO_VERSION} sh -
cd istio-${ISTIO_VERSION}
export PATH=$PWD/bin:$PATH
istioctl install -y
popd
17 changes: 17 additions & 0 deletions components/testing/gh-actions/install_kind.sh
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also more easily free space if needed if you take a look at the KFP GHA instead of working with the swapfile

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

set -euo pipefail

KIND_VERSION="0.22.0"
KIND_URL="https://kind.sigs.k8s.io/dl/v${KIND_VERSION}/kind-linux-amd64"

echo "Setting up kind environment..."
sudo swapoff -a
sudo rm -f /swapfile
sudo mkdir -p /tmp/etcd
sudo mount -t tmpfs tmpfs /tmp/etcd

echo "Installing kind ${KIND_VERSION} ..."
curl -sL -o kind "$KIND_URL"
chmod +x ./kind
sudo mv kind /usr/local/bin
12 changes: 12 additions & 0 deletions components/testing/gh-actions/install_kustomize.sh
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

set -euo pipefail

KUSTOMIZE_VERSION="5.4.1"
KUSTOMIZE_URL="https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${KUSTOMIZE_VERSION}/kustomize_v${KUSTOMIZE_VERSION}_linux_amd64.tar.gz"

echo "Installing kustomize ${KUSTOMIZE_VERSION} ..."
curl -sL -o kustomize.tar.gz "$KUSTOMIZE_URL"
tar -xzf kustomize.tar.gz
chmod +x kustomize
sudo mv kustomize /usr/local/bin
24 changes: 24 additions & 0 deletions components/testing/gh-actions/kind-1-25.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
# Configure registry for KinD.
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."$REGISTRY_NAME:$REGISTRY_PORT"]
endpoint = ["http://$REGISTRY_NAME:$REGISTRY_PORT"]
# This is needed in order to support projected volumes with service account tokens.
# See: https://kubernetes.slack.com/archives/CEKK1KTN2/p1600268272383600
kubeadmConfigPatches:
- |
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
metadata:
name: config
apiServer:
extraArgs:
"service-account-issuer": "kubernetes.default.svc"
"service-account-signing-key-file": "/etc/kubernetes/pki/sa.key"
nodes:
- role: control-plane
image: kindest/node:v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- role: worker
image: kindest/node:v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1
1 change: 1 addition & 0 deletions releasing/version/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
latest