Skip to content

Add helm e2e test workflow #4

Add helm e2e test workflow

Add helm e2e test workflow #4

# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
name: GenAIExamples Helm CD workflow on manual event
on:
pull_request:
branches: [main]
types: [opened, reopened, ready_for_review, synchronize] # added `ready_for_review` since draft is skipped
paths:
- "**/helm/**"
# workflow_dispatch:
# inputs:
# workloads:
# default: ""
# required: false
# type: string
# description: "workloads to test, empty for testing all helm charts"
# dockerhub:
# default: "false"
# required: false
# type: string
# description: "Set to true if you want to use released docker images at dockerhub. By default using internal docker registry."
# tag:
# default: "latest"
# description: "Image tag to be tested"
# required: true
# type: string
# opea_branch:
# default: "main"
# description: 'OPEA branch for image build'
# required: false
# type: string
env:
CHARTS_DIR: "helm-charts"
jobs:
get-build-matrix:
runs-on: ubuntu-latest
outputs:
run_matrix: ${{ steps.get-services.outputs.run_matrix }}
steps:
- name: Checkout out Repo
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ inputs.opea_branch }}
- name: Get test Services
id: get-services
run: |
set -x
run_matrix="{\"include\":["
if [[ -z "${{ inputs.workloads }}" ]]; then
ls ${{ github.workspace }}
for chart in ${{ github.workspace }}/*; do
if [[ -f $chart ]]; then
continue
fi
for file in "$chart"/kubernetes/helm/*values.yaml; do
if [ -f "$file" ]; then
filename=$(basename "$file" .yaml)
if [[ "$filename" == *"gaudi"* ]]; then
run_matrix="${run_matrix}{\"example\":\"${chart}\",\"hardware\":\"gaudi\", \"valuefile\":\"${filename}\"},"
else
run_matrix="${run_matrix}{\"example\":\"${chart}\",\"hardware\":\"xeon\", \"valuefile\":\"${filename}\"},"
fi
fi
done
done
else
service_list=($(echo "CodeGen"| tr ',' ' '))
# ${{ github.event.inputs.workloads }} | tr ',' ' '))
for service in $service_list; do
for file in "$service"/kubernetes/helm/*values.yaml; do
if [ -f "$file" ]; then
filename=$(basename "$file" .yaml)
if [[ "$filename" == *"gaudi"* ]]; then
run_matrix="${run_matrix}{\"example\":\"$service\",\"hardware\":\"gaudi\", \"valuefile\":\"${filename}\"},"
else
run_matrix="${run_matrix}{\"example\":\"$service\",\"hardware\":\"xeon\", \"valuefile\":\"${filename}\"},"
fi
fi
done
done
fi
run_matrix=$run_matrix"]}"
echo "run_matrix=${run_matrix}"
echo "run_matrix=${run_matrix}" >> $GITHUB_OUTPUT
helm-release:
needs: get-build-matrix
strategy:
matrix: ${{ fromJSON(needs.get-build-matrix.outputs.run_matrix) }}
uses: ./.github/workflows/_helm-e2e.yaml
with:
tag: ${{ inputs.tag }}
dockerhub: ${{ inputs.dockerhub }}
workload: ${{ matrix.example }}
hardware: ${{ matrix.hardware }}
valuefile: ${{ matrix.valuefile }}
secrets: inherit