-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add gh action to validate book helm charts
Signed-off-by: Your Name <[email protected]> generate charts for samples under docs Signed-off-by: Your Name <[email protected]> call chart Signed-off-by: Your Name <[email protected]> fix Signed-off-by: Your Name <[email protected]> generate charts Signed-off-by: Your Name <[email protected]> fix Signed-off-by: Your Name <[email protected]>
- Loading branch information
1 parent
458615a
commit c451ce3
Showing
80 changed files
with
14,377 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
name: Helm Docs Tutorials | ||
|
||
on: | ||
push: | ||
paths: | ||
- "docs/book/src/cronjob-tutorial/testdata/project/**" | ||
- "docs/book/src/getting-started/testdata/project/**" | ||
- "docs/book/src/multiversion-tutorial/testdata/project/**" | ||
- ".github/workflows/test-helm-book.yml" | ||
pull_request: | ||
paths: | ||
- "docs/book/src/cronjob-tutorial/testdata/project/** " | ||
- "docs/book/src/getting-started/testdata/project/**" | ||
- "docs/book/src/multiversion-tutorial/testdata/project/**" | ||
- ".github/workflows/test-helm-book.yml" | ||
|
||
jobs: | ||
helm-test: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
folder: [ | ||
"docs/book/src/getting-started/testdata/project", | ||
"docs/book/src/cronjob-tutorial/testdata/project", | ||
"docs/book/src/multiversion-tutorial/testdata/project" | ||
] | ||
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository | ||
steps: | ||
- name: Set project name | ||
id: project | ||
run: echo "name=$(basename ${{ matrix.folder }})" >> $GITHUB_OUTPUT | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: go.mod | ||
|
||
- name: Install the latest version of kind | ||
run: | | ||
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64 | ||
chmod +x ./kind | ||
sudo mv ./kind /usr/local/bin/kind | ||
- name: Verify kind installation | ||
run: kind version | ||
|
||
- name: Create kind cluster | ||
run: kind create cluster | ||
|
||
- name: Prepare project | ||
run: | | ||
cd ${{ matrix.folder }} | ||
go mod tidy | ||
make docker-build IMG=${{ steps.project.outputs.name}}:v0.1.0 | ||
kind load docker-image ${{ steps.project.outputs.name}}:v0.1.0 | ||
- name: Install Helm | ||
run: | | ||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash | ||
- name: Verify Helm installation | ||
run: helm version | ||
|
||
- name: Lint Helm chart | ||
run: | | ||
helm lint ${{ matrix.folder }}/dist/chart | ||
- name: Install Prometheus Operator CRDs | ||
run: | | ||
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts | ||
helm repo update | ||
helm install prometheus-crds prometheus-community/prometheus-operator-crds | ||
- name: Install cert-manager via Helm | ||
run: | | ||
helm repo add jetstack https://charts.jetstack.io | ||
helm repo update | ||
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true | ||
- name: Wait for cert-manager to be ready | ||
run: | | ||
kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager | ||
kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager-cainjector | ||
kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager-webhook | ||
- name: Render Helm chart | ||
run: | | ||
helm template ${{ matrix.folder }}/dist/chart --namespace=${{ steps.project.outputs.name }}-system | ||
- name: Install Helm chart | ||
run: | | ||
helm install my-release ${{ matrix.folder }}/dist/chart --create-namespace --namespace ${{ steps.project.outputs.name}}-system | ||
- name: Check Helm release status | ||
run: | | ||
helm status my-release --namespace ${{ steps.project.outputs.name}}-system | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
90 changes: 90 additions & 0 deletions
90
docs/book/src/cronjob-tutorial/testdata/project/.github/workflows/test-chart.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
name: Test Chart | ||
|
||
on: | ||
push: | ||
pull_request: | ||
|
||
jobs: | ||
test-e2e: | ||
name: Run on Ubuntu | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Clone the code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: go.mod | ||
|
||
- name: Install the latest version of kind | ||
run: | | ||
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64 | ||
chmod +x ./kind | ||
sudo mv ./kind /usr/local/bin/kind | ||
- name: Verify kind installation | ||
run: kind version | ||
|
||
- name: Create kind cluster | ||
run: kind create cluster | ||
|
||
- name: Prepare project | ||
run: | | ||
go mod tidy | ||
make docker-build IMG=project:v0.1.0 | ||
kind load docker-image project:v0.1.0 | ||
- name: Install Helm | ||
run: | | ||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash | ||
- name: Verify Helm installation | ||
run: helm version | ||
|
||
- name: Lint Helm Chart | ||
run: | | ||
helm lint ./dist/chart | ||
# TODO: Uncomment if cert-manager is enabled | ||
# - name: Install cert-manager via Helm | ||
# run: | | ||
# helm repo add jetstack https://charts.jetstack.io | ||
# helm repo update | ||
# helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true | ||
# | ||
# - name: Wait for cert-manager to be ready | ||
# run: | | ||
# kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager | ||
# kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager-cainjector | ||
# kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager-webhook | ||
|
||
# TODO: Uncomment if Prometheus is enabled | ||
# - name: Install Prometheus Operator CRDs | ||
# run: | | ||
# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts | ||
# helm repo update | ||
# helm install prometheus-crds prometheus-community/prometheus-operator-crds | ||
# | ||
# - name: Install Prometheus via Helm | ||
# run: | | ||
# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts | ||
# helm repo update | ||
# helm install prometheus prometheus-community/prometheus --namespace monitoring --create-namespace | ||
# | ||
# - name: Wait for Prometheus to be ready | ||
# run: | | ||
# kubectl wait --namespace monitoring --for=condition=available --timeout=300s deployment/prometheus-server | ||
|
||
- name: Install Helm chart for project | ||
run: | | ||
helm install my-release ./dist/chart --create-namespace --namespace project-system | ||
- name: Check Helm release status | ||
run: | | ||
helm status my-release --namespace project-system | ||
# TODO: Uncomment if prometheus.enabled is set to true to confirm that the ServiceMonitor gets created | ||
# - name: Check Presence of ServiceMonitor | ||
# run: | | ||
# kubectl wait --namespace project-system --for=jsonpath='{.kind}'=ServiceMonitor servicemonitor/project-controller-manager-metrics-monitor |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
25 changes: 25 additions & 0 deletions
25
docs/book/src/cronjob-tutorial/testdata/project/dist/chart/.helmignore
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Patterns to ignore when building Helm packages. | ||
# Operating system files | ||
.DS_Store | ||
|
||
# Version control directories | ||
.git/ | ||
.gitignore | ||
.bzr/ | ||
.hg/ | ||
.hgignore | ||
.svn/ | ||
|
||
# Backup and temporary files | ||
*.swp | ||
*.tmp | ||
*.bak | ||
*.orig | ||
*~ | ||
|
||
# IDE and editor-related files | ||
.idea/ | ||
.vscode/ | ||
|
||
# Helm chart artifacts | ||
dist/chart/*.tgz |
7 changes: 7 additions & 0 deletions
7
docs/book/src/cronjob-tutorial/testdata/project/dist/chart/Chart.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
apiVersion: v2 | ||
name: project | ||
description: A Helm chart to distribute the project project | ||
type: application | ||
version: 0.1.0 | ||
appVersion: "0.1.0" | ||
icon: "https://example.com/icon.png" |
50 changes: 50 additions & 0 deletions
50
docs/book/src/cronjob-tutorial/testdata/project/dist/chart/templates/_helpers.tpl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
{{- define "chart.name" -}} | ||
{{- if .Chart }} | ||
{{- if .Chart.Name }} | ||
{{- .Chart.Name | trunc 63 | trimSuffix "-" }} | ||
{{- else if .Values.nameOverride }} | ||
{{ .Values.nameOverride | trunc 63 | trimSuffix "-" }} | ||
{{- else }} | ||
project | ||
{{- end }} | ||
{{- else }} | ||
project | ||
{{- end }} | ||
{{- end }} | ||
|
||
|
||
{{- define "chart.labels" -}} | ||
{{- if .Chart.AppVersion -}} | ||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||
{{- end }} | ||
{{- if .Chart.Version }} | ||
helm.sh/chart: {{ .Chart.Version | quote }} | ||
{{- end }} | ||
app.kubernetes.io/name: {{ include "chart.name" . }} | ||
app.kubernetes.io/instance: {{ .Release.Name }} | ||
app.kubernetes.io/managed-by: {{ .Release.Service }} | ||
{{- end }} | ||
|
||
|
||
{{- define "chart.selectorLabels" -}} | ||
app.kubernetes.io/name: {{ include "chart.name" . }} | ||
app.kubernetes.io/instance: {{ .Release.Name }} | ||
{{- end }} | ||
|
||
|
||
{{- define "chart.hasMutatingWebhooks" -}} | ||
{{- $hasMutating := false }} | ||
{{- range . }} | ||
{{- if eq .type "mutating" }} | ||
$hasMutating = true }}{{- end }} | ||
{{- end }} | ||
{{ $hasMutating }}}}{{- end }} | ||
|
||
|
||
{{- define "chart.hasValidatingWebhooks" -}} | ||
{{- $hasValidating := false }} | ||
{{- range . }} | ||
{{- if eq .type "validating" }} | ||
$hasValidating = true }}{{- end }} | ||
{{- end }} | ||
{{ $hasValidating }}}}{{- end }} |
60 changes: 60 additions & 0 deletions
60
...k/src/cronjob-tutorial/testdata/project/dist/chart/templates/certmanager/certificate.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
{{- if .Values.certmanager.enable }} | ||
# Self-signed Issuer | ||
apiVersion: cert-manager.io/v1 | ||
kind: Issuer | ||
metadata: | ||
labels: | ||
{{- include "chart.labels" . | nindent 4 }} | ||
name: selfsigned-issuer | ||
namespace: {{ .Release.Namespace }} | ||
spec: | ||
selfSigned: {} | ||
{{- if .Values.webhook.enable }} | ||
--- | ||
# Certificate for the webhook | ||
apiVersion: cert-manager.io/v1 | ||
kind: Certificate | ||
metadata: | ||
annotations: | ||
{{- if .Values.crd.keep }} | ||
"helm.sh/resource-policy": keep | ||
{{- end }} | ||
name: serving-cert | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "chart.labels" . | nindent 4 }} | ||
spec: | ||
dnsNames: | ||
- project.{{ .Release.Namespace }}.svc | ||
- project.{{ .Release.Namespace }}.svc.cluster.local | ||
- project-webhook-service.{{ .Release.Namespace }}.svc | ||
issuerRef: | ||
kind: Issuer | ||
name: selfsigned-issuer | ||
secretName: webhook-server-cert | ||
{{- end }} | ||
{{- if .Values.metrics.enable }} | ||
--- | ||
# Certificate for the metrics | ||
apiVersion: cert-manager.io/v1 | ||
kind: Certificate | ||
metadata: | ||
annotations: | ||
{{- if .Values.crd.keep }} | ||
"helm.sh/resource-policy": keep | ||
{{- end }} | ||
labels: | ||
{{- include "chart.labels" . | nindent 4 }} | ||
name: metrics-certs | ||
namespace: {{ .Release.Namespace }} | ||
spec: | ||
dnsNames: | ||
- project.{{ .Release.Namespace }}.svc | ||
- project.{{ .Release.Namespace }}.svc.cluster.local | ||
- project-metrics-service.{{ .Release.Namespace }}.svc | ||
issuerRef: | ||
kind: Issuer | ||
name: selfsigned-issuer | ||
secretName: metrics-server-cert | ||
{{- end }} | ||
{{- end }} |
Oops, something went wrong.