Skip to content

Commit

Permalink
use matrix to loop charts test
Browse files Browse the repository at this point in the history
Signed-off-by: Yingchun Guo <[email protected]>
  • Loading branch information
daisy-ycguo committed May 28, 2024
1 parent 6e7311a commit b6a2323
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 6 deletions.
5 changes: 3 additions & 2 deletions .github/workflows/chart-integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ on:
branches: [main]
types: [opened, reopened, ready_for_review, synchronize] # added `ready_for_review` since draft is skipped
paths:
- helm-charts/**
- .github/workflows/scripts/chart-integration/**
#- helm-charts/**
#- .github/workflows/scripts/chart-integration/**
- scripts
workflow_dispatch:

# If there is a new commit, the previous jobs will be canceled
Expand Down
115 changes: 115 additions & 0 deletions .github/workflows/helmcharts-e2e.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

name: E2E test with helm charts

on:
pull_request:
branches: [main]
types: [opened, reopened, ready_for_review, synchronize] # added `ready_for_review` since draft is skipped
paths:
- helm-charts/**
- .github/workflows/scripts/chart-integration/**
workflow_dispatch:

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

env:
CHARTS_DIR: "helm-charts"

jobs:
job1:
name: Get-test-matrix
runs-on: ubuntu-latest
outputs:
run_matrix: ${{ steps.get-test-matrix.outputs.run_matrix }}
steps:
- name: Checkout out Repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get test matrix
id: get-test-matrix
run: |
changed_charts=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | \
grep "^$CHARTS_DIR/" | \
grep -vE 'README.md|common' | \
cut -d'/' -f2 | sort -u )
# set run_matrix to be "{"chart":["chart1","chart2",...]}"
run_matrix="{\"chart\":["
for chart in ${changed_charts}; do
run_matrix="${run_matrix}\"${chart}\","
done
run_matrix=$run_matrix"]}"
echo "run_matrix=${run_matrix}"
echo "run_matrix=${run_matrix}" >> $GITHUB_OUTPUT
Chart-test:
needs: job1
if: always() && ${{ needs.job1.outputs.run_matrix.chart.length }} > 0
strategy:
matrix: ${{ fromJSON(needs.job1.outputs.run_matrix) }}
runs-on: inspur-icx-1
continue-on-error: true
outputs:
should_cleanup: ${{ steps.set_boolean.outputs.should_cleanup }}
steps:
- name: E2e test chart
run: |
echo "Matrix - chart: ${{ matrix.chart }}"
- name: Clean Up Working Directory
run: sudo rm -rf ${{github.workspace}}/*

- name: Checkout out Repo
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set variables
run: |
echo "RELEASE_NAME=${{ matrix.chart }}$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV
echo "NAMESPACE=${{ matrix.chart }}-$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV
echo "ROLLOUT_TIMEOUT_SECONDS=60s" >> $GITHUB_ENV
echo "KUBECTL_TIMEOUT_SECONDS=60s" >> $GITHUB_ENV
echo "should_cleanup=false" >> $GITHUB_ENV
echo "skip_validate=false" >> $GITHUB_ENV
echo "RELEASENAME=$RELEASE_NAME"
echo "NAMESPACE=$NAMESPACE"
- name: Initialize chart testing
run: |
.github/workflows/scripts/chart-integration/lib.sh init_codegen
- name: Helm install
id: install
run: |
echo "should_cleanup=true" >> $GITHUB_ENV
if ! helm install --create-namespace --namespace $NAMESPACE --wait --timeout "$ROLLOUT_TIMEOUT_SECONDS" $RELEASE_NAME $CHARTS_DIR/${{ matrix.chart }} ; then
echo "Failed to install chart ${{ matrix.chart }}"
echo "skip_validate=true" >> $GITHUB_ENV
exit 1
fi
- name: Validate e2e test
if: always()
run: |
if $skip_validate; then
echo "Skip validate"
else
.github/workflows/scripts/chart-integration/lib.sh validate_e2e $RELEASE_NAME $NAMESPACE
fi
- name: Helm uninstall
if: always()
run: |
if $should_cleanup; then
helm uninstall $RELEASE_NAME --namespace $NAMESPACE
if ! kubectl delete ns $NAMESPACE --timeout=$KUBECTL_TIMEOUT_SECONDS; then
kubectl delete pods --namespace $NAMESPACE --force --grace-period=0 --all
kubectl delete ns $NAMESPACE --force --grace-period=0 --timeout=$KUBECTL_TIMEOUT_SECONDS
fi
fi
35 changes: 34 additions & 1 deletion .github/workflows/scripts/chart-integration/lib.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
LOG_PATH=.

function init_codegen() {
# executed under path helm-charts/codegen
# init var
CHART_MOUNT=/home/$USER_ID/charts-mnt/codegen
USER_ID=$(whoami)
CHART_MOUNT=/home/$USER_ID/charts-mnt
MODELREPO=m-a-p
MODELNAME=OpenCodeInterpreter-DS-6.7B
MODELID=$MODELREPO/$MODELNAME
Expand Down Expand Up @@ -95,3 +97,34 @@ function validate_chatqna() {
echo "Response check succeed!"
fi
}

if [ $# -eq 0 ]; then
echo "Usage: $0 <function_name>"
exit 1
fi

case "$1" in
init_codegen)
pushd helm-charts/codegen
init_codegen
popd
;;
validate_codegen)
RELEASE_NAME=$2
NAMESPACE=$3
validate_codegen
;;
init_chatqna)
pushd helm-charts/chatqna
init_chatqna
popd
;;
validate_chatqna)
RELEASE_NAME=$2
NAMESPACE=$3
validate_chatqna
;;
*)
echo "Unknown function: $1"
;;
esac
2 changes: 1 addition & 1 deletion helm-charts/codegen/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ type: application
dependencies:
- name: llm-uservice
version: "0.1.0"
version: 0.1.0
version: 0.1.1
appVersion: "1.0.0"
4 changes: 2 additions & 2 deletions helm-charts/codegen/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
replicaCount: 1

image:
repository: opea/codegen:latest
repository: opea/tttcodegen:latest
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
# tag: "1.0"
Expand All @@ -22,7 +22,7 @@ service:
llm-uservice:
HUGGINGFACEHUB_API_TOKEN: "insert-your-huggingface-token-here"
image:
repository: opea/llm-tgi:latest
repository: opea/gggllm-tgi:latest
service:
port: 9000
# To override values in subchart tgi
Expand Down

0 comments on commit b6a2323

Please sign in to comment.