Skip to content

EVEREST-1513 | [CI] Add step to PR check to ensure generated docs are up-to-date #28

EVEREST-1513 | [CI] Add step to PR check to ensure generated docs are up-to-date

EVEREST-1513 | [CI] Add step to PR check to ensure generated docs are up-to-date #28

name: Everest PR checks
on:
pull_request:
paths:
- 'charts/everest/**'
jobs:
lint-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
sparse-checkout: |
.github/
charts/everest
- name: Check docs
run: |
cd charts/everest
make docs-gen
if git diff --quiet; then
echo "Docs are up to date."
else
echo "Docs are out of date. Please run 'make docs-gen' and commit the changes."
exit 1
fi
- name: Set up Helm
uses: azure/[email protected]
with:
version: v3.15.4
- uses: azure/setup-kubectl@v4
- name: Set up chart-testing
uses: helm/[email protected]
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --config .github/ct.yaml)
if [[ -n "$changed" ]]; then
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Run chart-testing (lint)
run: |
# Ensure common sub-chart is linted and has version increment
ct lint --config .github/ct.yaml --lint-conf .github/lintconf.yaml --chart-dirs=charts/everest/charts --excluded-charts=everest-db-namespace
# Ensure main chart is linted, skip version increment check
ct lint --config .github/ct.yaml --lint-conf .github/lintconf.yaml --check-version-increment=false
# Ensure all sub-charts are linted, skip version increment check
ct lint --config .github/ct.yaml --lint-conf .github/lintconf.yaml --chart-dirs=charts/everest/charts --check-version-increment=false
- name: Create kind cluster
uses: helm/[email protected]
# Only build a kind cluster if there are chart changes to test.
if: steps.list-changed.outputs.changed == 'true'
- name: Basic tests
run: |
# Install the chart
helm install everest-core ./charts/everest --create-namespace --namespace everest-system
# Wait for system components
kubectl wait --for=condition=available --timeout=60s deployment/percona-everest -n everest-system
kubectl wait --for=condition=available --timeout=60s deployment/everest-operator -n everest-system
# Provision DB namespace
kubectl create ns everest
kubectl label ns everest app.kubernetes.io/managed-by=everest
helm install everest ./charts/everest/charts/everest-db-namespace --namespace everest
# Ensure operators are installed
subs=$(kubectl -n everest get subscription -o jsonpath='{.items[*].metadata.name}')
for sub in $subs
do
echo "Waiting for InstallPlan to be created for Subscription $sub"
kubectl wait --for=jsonpath='.status.installplan.name' sub/$sub -n everest --timeout=600s
ip=$(kubectl -n everest get sub $sub -o jsonpath='{.status.installplan.name}')
echo "InstallPlan $ip created for Subscription $sub"
echo "Waiting for InstallPlan to be complete $ip"
kubectl wait --for=jsonpath='.status.phase'=Complete installplan/$ip -n everest --timeout=600s
csv=$(kubectl get sub $sub -n everest -o jsonpath='{.status.installedCSV}')
echo "Waiting for CSV $csv to succeed"
kubectl wait --for=jsonpath='.status.phase'=Succeeded csv/$csv -n everest --timeout=600s
done
# Uninstall
helm uninstall everest -n everest
kubectl delete ns everest
kubectl wait --for=delete namespace/everest --timeout=120s
helm uninstall everest-core -n everest-system
kubectl delete ns everest-system
kubectl wait --for=delete namespace/everest-system --timeout=120s
- name: Build chart package
run: |
changed=$(ct list-changed --config .github/ct.yaml)
[ $(echo -n "$changed" | grep -c '^') == 1 ] && helm package $changed || echo "skipping package"
- name: Upload helm chart
uses: actions/upload-artifact@v4
with:
path: ./*.tgz
retention-days: 30
if-no-files-found: ignore