-
Notifications
You must be signed in to change notification settings - Fork 65
feat: Migrate JWA test-related workflows from kubeflow/kubeflow to notebooks-v1 branch #587 #599
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: notebooks-v1
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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" | ||
|
||
- name: Setup Python environment | ||
run: | | ||
cd components/crud-web-apps/jupyter/backend | ||
make install-deps | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 |
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 |
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 |
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 | ||
|
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" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lets use https://github.com/kubeflow/manifests/blob/6aad970e15f07af7841c46c0b03f65e7b06bf02f/example/kustomization.yaml#L39 if you want to stay close to the platform and not maintain istio yourself. This is also used in the KFP repository here https://github.com/kubeflow/pipelines/blob/51ab5e678feee36b59a000f3a03abe0ccd174360/.github/resources/scripts/deploy-kfp.sh#L117 |
||
|
||
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 |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 |
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 |
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please test with Kubernetes 1.33 as in You can copy https://github.com/kubeflow/manifests/blob/master/tests/install_KinD_create_KinD_cluster_install_kustomize.sh |
||
- role: worker | ||
image: kindest/node:v1.25.3@sha256:f52781bc0d7a19fb6c405c2af83abfeb311f130707a0e219175677e366cc45d1 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
latest |
There was a problem hiding this comment.
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.