Skip to content

EVEREST-1586 | Add ArgoCD guide #124

EVEREST-1586 | Add ArgoCD guide

EVEREST-1586 | Add ArgoCD guide #124

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: Check CRDs
run: |
cd charts/everest
make crds-gen
if git diff --quiet; then
echo "CRDs are up to date."
else
echo "CRDs are out of date. Please run 'make crds-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: Add dependent repos
run: |
make -C charts/everest add-repos
- 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: Build dependencies
run: |
cd charts/everest
make deps
- name: Basic tests
run: |
# Install the chart
helm install everest ./charts/everest \
--create-namespace \
--namespace everest-system \
--set dbNamespace.enabled=true
# Wait for system components
kubectl wait --for=condition=available --timeout=60s deployment/everest-server -n everest-system
kubectl wait --for=condition=available --timeout=60s deployment/everest-operator -n everest-system
kubectl wait --for=condition=available --timeout=60s deployment/kube-state-metrics -n everest-monitoring
kubectl wait --for=condition=available --timeout=60s deployment/vm-operator -n everest-monitoring
# Wait for default DB namespace.
kubectl wait --for=condition=available --timeout=60s deployment/percona-postgresql-operator -n everest
kubectl wait --for=condition=available --timeout=60s deployment/percona-server-mongodb-operator -n everest
kubectl wait --for=condition=available --timeout=60s deployment/percona-xtradb-cluster-operator -n everest
kubectl wait --for=jsonpath='.status.status'=installed dbengine/percona-server-mongodb-operator --timeout=600s -n everest
kubectl wait --for=jsonpath='.status.status'=installed dbengine/percona-xtradb-cluster-operator --timeout=600s -n everest
kubectl wait --for=jsonpath='.status.status'=installed dbengine/percona-postgresql-operator --timeout=600s -n everest
# Provision new DB namespace
helm install everest ./charts/everest/charts/everest-db-namespace \
--namespace everest-db \
--create-namespace \
--set pxc=false
# Wait for new DB namespace.
kubectl wait --for=condition=available --timeout=60s deployment/percona-postgresql-operator -n everest-db
kubectl wait --for=condition=available --timeout=60s deployment/percona-server-mongodb-operator -n everest-db
kubectl wait --for=jsonpath='.status.status'=installed dbengine/percona-server-mongodb-operator --timeout=600s -n everest-db
kubectl wait --for=jsonpath='.status.status'=installed dbengine/percona-postgresql-operator --timeout=600s -n everest-db
# Uninstall everest-db namespace
helm uninstall everest -n everest-db
kubectl delete ns everest-db
kubectl wait --for=delete namespace/everest-db --timeout=120s
# Uninstall everest-system namespace
helm uninstall everest -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