Functionality test for helm chart workflow (vllm-project/production-stack)
The Functionality test for helm chart workflow from vllm-project/production-stack, explained and optimized by Latchkey.
CI health: A - excellent
Run this on Latchkey for self-healing, caching, and up to 58% lower cost.
Grade your own workflow free or run it on Latchkey →What it does
This is the Functionality test for helm chart workflow from the vllm-project/production-stack repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: Functionality test for helm chart
run-name: ${{ github.actor }} is testing out helm chart functions π
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- main
paths:
- '.github/**'
- '**.py'
- 'pyproject.toml'
- 'helm/**'
pull_request:
paths:
- '.github/**'
- '**.py'
- 'pyproject.toml'
- 'helm/**'
merge_group:
jobs:
Secure-Minimal-Example:
runs-on: self-hosted
steps:
- run: echo "π The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "π§ This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "π The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- run: echo "π‘ The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "π₯οΈ The workflow is now ready to test your code on the runner."
- name: Helm uninstall
run: |
releases=$(helm list -q)
if [ -n "$releases" ]; then
echo "Found releases: $releases"
for r in $releases; do
echo "Uninstalling $r..."
helm uninstall "$r"
done
else
echo "No Helm releases found; skipping uninstall."
fi
# Wait until no pods remain
echo "Waiting for all pods to terminate..."
while kubectl get pods --no-headers 2>/dev/null | grep -q .; do
sleep 5
done
echo "All pods have terminated."
- name: Build Helm dependencies
run: |
helm dependency build helm/
- name: Deploy via helm charts
env:
DOCKER_BUILDKIT: 1
run: |
cd ${{ github.workspace }}
kubectl config use-context minikube
sudo sysctl fs.protected_regular=0
eval "$(minikube docker-env)"
docker build --build-arg INSTALL_OPTIONAL_DEP=default -t git-act-router:ci -f docker/Dockerfile .
helm install vllm ./helm -f .github/values-05-secure-vllm.yaml
- name: Validate the installation and send query to the stack
run: |
bash .github/port-forward.sh curl-05-secure-vllm
timeout-minutes: 3
- name: Archive functionality results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: always()
with:
name: output-05-secure-vllm
path: |
output-05-secure-vllm/
- name: Helm uninstall
run: |
helm uninstall vllm
sudo docker image prune -f
if: always()
- run: echo "π This job's status is ${{ job.status }}."
Two-Pods-Minimal-Example:
runs-on: self-hosted
needs: Secure-Minimal-Example
steps:
- name: Helm uninstall
run: |
releases=$(helm list -q)
if [ -n "$releases" ]; then
echo "Found releases: $releases"
for r in $releases; do
echo "Uninstalling $r..."
helm uninstall "$r"
done
else
echo "No Helm releases found; skipping uninstall."
fi
# Wait until no pods remain
echo "Waiting for all pods to terminate..."
while kubectl get pods --no-headers 2>/dev/null | grep -q .; do
sleep 5
done
echo "All pods have terminated."
- name: Build Helm dependencies
run: |
helm dependency build helm/
- name: Deploy via helm charts
run: |
cd ${{ github.workspace }}
helm install vllm ./helm -f .github/values-01-2pods-minimal-example.yaml
- name: Validate the installation and send query to the stack
run: |
bash .github/port-forward.sh curl-02-two-pods
timeout-minutes: 3
- name: Archive functionality results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: always()
with:
name: output-02-two-pods
path: |
output-02-two-pods/
- name: Helm uninstall
run: |
helm uninstall vllm
if: always()
- run: echo "π This job's status is ${{ job.status }}."
Multiple-Models:
runs-on: self-hosted
needs: Two-Pods-Minimal-Example
steps:
- name: Helm uninstall
run: |
releases=$(helm list -q)
if [ -n "$releases" ]; then
echo "Found releases: $releases"
for r in $releases; do
echo "Uninstalling $r..."
helm uninstall "$r"
done
else
echo "No Helm releases found; skipping uninstall."
fi
# Wait until no pods remain
echo "Waiting for all pods to terminate..."
while kubectl get pods --no-headers 2>/dev/null | grep -q .; do
sleep 5
done
echo "All pods have terminated."
- name: Build Helm dependencies
run: |
helm dependency build helm/
- name: Deploy via helm charts
run: |
helm install vllm ./helm -f .github/values-04-multiple-models.yaml
- name: Validate the installation and send query to the stack
run: |
bash .github/port-forward.sh curl-04-multiple-models
timeout-minutes: 5
- name: Archive functionality results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: always()
with:
name: output-04-multiple-models
path: |
output-04-multiple-models/
- name: Helm uninstall
run: |
helm uninstall vllm
if: always()
- run: echo "π This job's status is ${{ job.status }}."
Minimal-Example-With-Monitoring:
runs-on: self-hosted
needs: Secure-Minimal-Example
steps:
- run: echo "π The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "π§ This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "π The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- run: echo "π‘ The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "π₯οΈ The workflow is now ready to test your code on the runner."
- name: Helm uninstall
run: |
releases=$(helm list -q)
if [ -n "$releases" ]; then
echo "Found releases: $releases"
for r in $releases; do
echo "Uninstalling $r..."
helm uninstall "$r"
done
else
echo "No Helm releases found; skipping uninstall."
fi
# Wait until no pods remain
echo "Waiting for all pods to terminate..."
while kubectl get pods --no-headers 2>/dev/null | grep -q .; do
sleep 5
done
echo "All pods have terminated."
- name: Build Helm dependencies
run: |
helm dependency build helm/
- name: Deploy via helm charts
env:
DOCKER_BUILDKIT: 1
run: |
cd ${{ github.workspace }}
kubectl config use-context minikube
sudo sysctl fs.protected_regular=0
eval "$(minikube docker-env)"
docker build --build-arg INSTALL_OPTIONAL_DEP=default -t git-act-router:ci -f docker/Dockerfile .
helm install vllm ./helm -f .github/values-11-monitoring.yaml
- name: Validate the installation and send query to the stack
run: |
bash .github/port-forward.sh curl-06-monitoring
timeout-minutes: 3
- name: Archive functionality results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: always()
with:
name: curl-06-monitoring
path: |
output-06-monitoring/
- name: Helm uninstall
run: |
helm uninstall vllm
sudo docker image prune -f
if: always()
- run: echo "π This job's status is ${{ job.status }}."
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Functionality test for helm chart run-name: ${{ github.actor }} is testing out helm chart functions π concurrency: group: ${{ github.ref }} cancel-in-progress: true on: push: branches: - main paths: - '.github/**' - '**.py' - 'pyproject.toml' - 'helm/**' pull_request: paths: - '.github/**' - '**.py' - 'pyproject.toml' - 'helm/**' merge_group: jobs: Secure-Minimal-Example: timeout-minutes: 30 runs-on: self-hosted steps: - run: echo "π The job was automatically triggered by a ${{ github.event_name }} event." - run: echo "π§ This job is now running on a ${{ runner.os }} server hosted by GitHub!" - run: echo "π The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - name: Check out repository code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - run: echo "π‘ The ${{ github.repository }} repository has been cloned to the runner." - run: echo "π₯οΈ The workflow is now ready to test your code on the runner." - name: Helm uninstall run: | releases=$(helm list -q) if [ -n "$releases" ]; then echo "Found releases: $releases" for r in $releases; do echo "Uninstalling $r..." helm uninstall "$r" done else echo "No Helm releases found; skipping uninstall." fi # Wait until no pods remain echo "Waiting for all pods to terminate..." while kubectl get pods --no-headers 2>/dev/null | grep -q .; do sleep 5 done echo "All pods have terminated." - name: Build Helm dependencies run: | helm dependency build helm/ - name: Deploy via helm charts env: DOCKER_BUILDKIT: 1 run: | cd ${{ github.workspace }} kubectl config use-context minikube sudo sysctl fs.protected_regular=0 eval "$(minikube docker-env)" docker build --build-arg INSTALL_OPTIONAL_DEP=default -t git-act-router:ci -f docker/Dockerfile . helm install vllm ./helm -f .github/values-05-secure-vllm.yaml - name: Validate the installation and send query to the stack run: | bash .github/port-forward.sh curl-05-secure-vllm timeout-minutes: 3 - name: Archive functionality results uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: name: output-05-secure-vllm path: | output-05-secure-vllm/ - name: Helm uninstall run: | helm uninstall vllm sudo docker image prune -f if: always() - run: echo "π This job's status is ${{ job.status }}." Two-Pods-Minimal-Example: timeout-minutes: 30 runs-on: self-hosted needs: Secure-Minimal-Example steps: - name: Helm uninstall run: | releases=$(helm list -q) if [ -n "$releases" ]; then echo "Found releases: $releases" for r in $releases; do echo "Uninstalling $r..." helm uninstall "$r" done else echo "No Helm releases found; skipping uninstall." fi # Wait until no pods remain echo "Waiting for all pods to terminate..." while kubectl get pods --no-headers 2>/dev/null | grep -q .; do sleep 5 done echo "All pods have terminated." - name: Build Helm dependencies run: | helm dependency build helm/ - name: Deploy via helm charts run: | cd ${{ github.workspace }} helm install vllm ./helm -f .github/values-01-2pods-minimal-example.yaml - name: Validate the installation and send query to the stack run: | bash .github/port-forward.sh curl-02-two-pods timeout-minutes: 3 - name: Archive functionality results uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: name: output-02-two-pods path: | output-02-two-pods/ - name: Helm uninstall run: | helm uninstall vllm if: always() - run: echo "π This job's status is ${{ job.status }}." Multiple-Models: timeout-minutes: 30 runs-on: self-hosted needs: Two-Pods-Minimal-Example steps: - name: Helm uninstall run: | releases=$(helm list -q) if [ -n "$releases" ]; then echo "Found releases: $releases" for r in $releases; do echo "Uninstalling $r..." helm uninstall "$r" done else echo "No Helm releases found; skipping uninstall." fi # Wait until no pods remain echo "Waiting for all pods to terminate..." while kubectl get pods --no-headers 2>/dev/null | grep -q .; do sleep 5 done echo "All pods have terminated." - name: Build Helm dependencies run: | helm dependency build helm/ - name: Deploy via helm charts run: | helm install vllm ./helm -f .github/values-04-multiple-models.yaml - name: Validate the installation and send query to the stack run: | bash .github/port-forward.sh curl-04-multiple-models timeout-minutes: 5 - name: Archive functionality results uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: name: output-04-multiple-models path: | output-04-multiple-models/ - name: Helm uninstall run: | helm uninstall vllm if: always() - run: echo "π This job's status is ${{ job.status }}." Minimal-Example-With-Monitoring: timeout-minutes: 30 runs-on: self-hosted needs: Secure-Minimal-Example steps: - run: echo "π The job was automatically triggered by a ${{ github.event_name }} event." - run: echo "π§ This job is now running on a ${{ runner.os }} server hosted by GitHub!" - run: echo "π The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - name: Check out repository code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - run: echo "π‘ The ${{ github.repository }} repository has been cloned to the runner." - run: echo "π₯οΈ The workflow is now ready to test your code on the runner." - name: Helm uninstall run: | releases=$(helm list -q) if [ -n "$releases" ]; then echo "Found releases: $releases" for r in $releases; do echo "Uninstalling $r..." helm uninstall "$r" done else echo "No Helm releases found; skipping uninstall." fi # Wait until no pods remain echo "Waiting for all pods to terminate..." while kubectl get pods --no-headers 2>/dev/null | grep -q .; do sleep 5 done echo "All pods have terminated." - name: Build Helm dependencies run: | helm dependency build helm/ - name: Deploy via helm charts env: DOCKER_BUILDKIT: 1 run: | cd ${{ github.workspace }} kubectl config use-context minikube sudo sysctl fs.protected_regular=0 eval "$(minikube docker-env)" docker build --build-arg INSTALL_OPTIONAL_DEP=default -t git-act-router:ci -f docker/Dockerfile . helm install vllm ./helm -f .github/values-11-monitoring.yaml - name: Validate the installation and send query to the stack run: | bash .github/port-forward.sh curl-06-monitoring timeout-minutes: 3 - name: Archive functionality results uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: name: curl-06-monitoring path: | output-06-monitoring/ - name: Helm uninstall run: | helm uninstall vllm sudo docker image prune -f if: always() - run: echo "π This job's status is ${{ job.status }}."
What changed
- Add a job timeout so a hung step cannot burn hours of runner time.
What Latchkey heals here
This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:
- Container pulls and builds
This workflow runs 4 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.