Skip to content

Commit

Permalink
add e2e test
Browse files Browse the repository at this point in the history
Signed-off-by: cpanato <[email protected]>
  • Loading branch information
cpanato committed Apr 27, 2024
1 parent 7e5f555 commit 97f2fc6
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 2 deletions.
50 changes: 48 additions & 2 deletions .github/workflows/test-action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:

name: Install chart-testing and test presence in path
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
- name: Install chart-testing
uses: ./
- name: Check install!
Expand Down Expand Up @@ -38,7 +38,7 @@ jobs:

name: Install Custom chart-testing and test presence in path
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
- name: Install chart-testing
uses: ./
with:
Expand All @@ -65,3 +65,49 @@ jobs:
else
exit 0
fi
test_ct_action_with_helm:
runs-on: ubuntu-latest

name: run action to test a helm chart
steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
with:
fetch-depth: 0

- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: v3.14.4

- uses: actions/setup-python@v4
with:
python-version: '3.x'
check-latest: true

- name: Install chart-testing
uses: ./

- run: |
sed -i "s/version: .*/version: 2.0.0/" testdata/simple-deployment/Chart.yaml
cat testdata/simple-deployment/Chart.yaml
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --chart-dirs=testdata --target-branch ${{ github.event.repository.default_branch }})
if [[ -n "$changed" ]]; then
echo "changed=true" >> "$GITHUB_OUTPUT"
fi
- name: Run chart-testing (lint)
if: steps.list-changed.outputs.changed == 'true'
run: ct lint --chart-dirs=testdata --target-branch ${{ github.event.repository.default_branch }}

- name: Create kind cluster
if: steps.list-changed.outputs.changed == 'true'
uses: helm/[email protected]

- name: Run chart-testing (install)
if: steps.list-changed.outputs.changed == 'true'
run: ct install --chart-dirs=testdata --target-branch ${{ github.event.repository.default_branch }}
8 changes: 8 additions & 0 deletions testdata/simple-deployment/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: nginx
version: 0.1.0
maintainers:
- name: cpanato
- name: davidkarlsen
4 changes: 4 additions & 0 deletions testdata/simple-deployment/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Simple chart with a Deployment.

The integration test will install first simple-deployment and then try to upgrade
to simple-deployment-different-selector failing as expected
32 changes: 32 additions & 0 deletions testdata/simple-deployment/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "nginx.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "nginx.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "nginx.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
29 changes: 29 additions & 0 deletions testdata/simple-deployment/templates/deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "nginx.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "nginx.name" . }}
helm.sh/chart: {{ include "nginx.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: {{ include "nginx.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "nginx.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 80
protocol: TCP
11 changes: 11 additions & 0 deletions testdata/simple-deployment/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent

nameOverride: ""
fullnameOverride: ""

0 comments on commit 97f2fc6

Please sign in to comment.