-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
310 additions
and
7 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
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,16 @@ | ||
.PHONY: test clean help | ||
|
||
SCRIPT=./e2e.applications.sh | ||
PRECHECKS=./pre-checks.sh | ||
|
||
help: | ||
@echo "Usage: make {test|clean}" | ||
@echo " test - Run the end-to-end tests." | ||
@echo " clean - Clean up resources." | ||
|
||
test: | ||
@bash $(PRECHECKS) test | ||
@bash $(SCRIPT) test | ||
|
||
clean: | ||
@bash $(SCRIPT) clean |
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,54 @@ | ||
for file in ./modules/*.sh; do | ||
source "$file" | ||
done | ||
|
||
ROOT_NS="tenant-root" | ||
TEST_TENANT="tenant-e2e" | ||
|
||
FLUX_NS="cozy-fluxcd" | ||
GITREPO_NAME="e2e-repo" | ||
BRANCH="main" | ||
|
||
function test() { | ||
create_git_repo $GITREPO_NAME $FLUX_NS $BRANCH | ||
|
||
install_tenant $TEST_TENANT $ROOT_NS $GITREPO_NAME $FLUX_NS | ||
check_helmrelease_status $TEST_TENANT $ROOT_NS | ||
|
||
install_all_apps "../packages/apps" "$TEST_TENANT" $GITREPO_NAME $FLUX_NS | ||
|
||
if true; then | ||
echo -e "${GREEN}All tests passed!${RESET}" | ||
return 0 | ||
else | ||
echo -e "${RED}Some tests failed!${RESET}" | ||
return 1 | ||
fi | ||
} | ||
|
||
function clean() { | ||
kubectl delete gitrepository.source.toolkit.fluxcd.io $GITREPO_NAME -n $FLUX_NS | ||
kubectl delete helmrelease.helm.toolkit.fluxcd.io $TEST_TENANT -n $ROOT_NS | ||
if true; then | ||
echo -e "${GREEN}Cleanup successful!${RESET}" | ||
return 0 | ||
else | ||
echo -e "${RED}Cleanup failed!${RESET}" | ||
return 1 | ||
fi | ||
} | ||
|
||
case "$1" in | ||
test) | ||
echo -e "${YELLOW}Running tests...${RESET}" | ||
test | ||
;; | ||
clean) | ||
echo -e "${YELLOW}Cleaning up...${RESET}" | ||
clean | ||
;; | ||
*) | ||
echo -e "${RED}Usage: $0 {test|clean}${RESET}" | ||
exit 1 | ||
;; | ||
esac |
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,32 @@ | ||
#!/bin/bash | ||
|
||
source ./modules/colors.sh | ||
|
||
function check_helmrelease_status() { | ||
local release_name="$1" | ||
local namespace="$2" | ||
local timeout=300 # Timeout in seconds | ||
local interval=5 # Interval between checks in seconds | ||
local elapsed=0 | ||
|
||
while [[ $elapsed -lt $timeout ]]; do | ||
local status_output | ||
status_output=$(kubectl get helmrelease "$release_name" -n "$namespace" -o json | jq -r '.status.conditions[-1].reason') | ||
|
||
if [[ "$status_output" == "InstallSucceeded" ]]; then | ||
echo -e "${GREEN}Helm release '$release_name' is ready.${RESET}" | ||
return 0 | ||
elif [[ "$status_output" == "InstallFailed" ]]; then | ||
echo -e "${RED}Helm release '$release_name': InstallFailed${RESET}" | ||
exit 1 | ||
else | ||
echo -e "${YELLOW}Helm release '$release_name' is not ready. Current status: $status_output${RESET}" | ||
fi | ||
|
||
sleep "$interval" | ||
elapsed=$((elapsed + interval)) | ||
done | ||
|
||
echo -e "${RED}Timeout reached. Helm release '$release_name' is still not ready after $timeout seconds.${RESET}" | ||
exit 1 | ||
} |
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,6 @@ | ||
#!/bin/bash | ||
|
||
RED='\033[0;31m' | ||
GREEN='\033[0;32m' | ||
RESET='\033[0m' | ||
YELLOW='\033[0;33m' |
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,33 @@ | ||
#!/bin/bash | ||
|
||
function create_git_repo() { | ||
local repo_name="$1" | ||
local namespace="$2" | ||
local branch="$3" | ||
|
||
if [[ -z "$repo_name" || -z "$namespace" || -z "$branch" ]]; then | ||
echo "Usage: create_git_repo <repo_name> <namespace> <branch>" | ||
return 1 | ||
fi | ||
|
||
local gitrepo_file=$(mktemp /tmp/GitRepository.XXXXXX.yaml) | ||
{ | ||
echo "apiVersion: source.toolkit.fluxcd.io/v1" | ||
echo "kind: GitRepository" | ||
echo "metadata:" | ||
echo " name: \"$repo_name\"" | ||
echo " namespace: \"$namespace\"" | ||
echo "spec:" | ||
echo " interval: 1m" | ||
echo " url: https://github.com/aenix-io/cozystack" | ||
echo " ref:" | ||
echo " branch: \"$branch\"" | ||
echo " ignore: |" | ||
echo " !/packages/apps/ " | ||
|
||
} > "$gitrepo_file" | ||
|
||
kubectl apply -f "$gitrepo_file" | ||
|
||
rm -f "$gitrepo_file" | ||
} |
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,6 @@ | ||
tenant | ||
http-cache | ||
mysql | ||
rabbitmq | ||
virtual-machine | ||
vpn |
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,66 @@ | ||
#!/bin/bash | ||
|
||
source ./modules/colors.sh | ||
|
||
# Function to load ignored charts from a file | ||
function load_ignored_charts() { | ||
local ignore_file="$1" | ||
local ignored_charts=() | ||
|
||
if [[ -f "$ignore_file" ]]; then | ||
while IFS= read -r chart; do | ||
ignored_charts+=("$chart") | ||
done < "$ignore_file" | ||
else | ||
echo "Ignore file not found: $ignore_file" | ||
fi | ||
|
||
# Return the array of ignored charts | ||
echo "${ignored_charts[@]}" | ||
} | ||
|
||
# Function to check if a chart is in the ignored list | ||
function is_chart_ignored() { | ||
local chart_name="$1" | ||
shift | ||
local ignored_charts=("$@") | ||
|
||
for ignored_chart in "${ignored_charts[@]}"; do | ||
if [[ "$ignored_chart" == "$chart_name" ]]; then | ||
return 0 | ||
fi | ||
done | ||
return 1 | ||
} | ||
|
||
function install_all_apps() { | ||
local charts_dir="$1" | ||
local namespace="$2" | ||
local gitrepo_name="$3" | ||
local flux_ns="$4" | ||
|
||
local ignore_file="./modules/ignored_charts" | ||
local ignored_charts | ||
ignored_charts=($(load_ignored_charts "$ignore_file")) | ||
|
||
for chart_path in "$charts_dir"/*; do | ||
if [[ -d "$chart_path" ]]; then | ||
local chart_name | ||
chart_name=$(basename "$chart_path") | ||
# Check if the chart is in the ignored list | ||
if is_chart_ignored "$chart_name" "${ignored_charts[@]}"; then | ||
echo "Skipping chart: $chart_name (listed in ignored charts)" | ||
continue | ||
fi | ||
|
||
chart_name="$chart_name-e2e" | ||
echo "Installing chart: $chart_name" | ||
install_helmrelease "$chart_name" "$namespace" "$chart_path" "$gitrepo_name" "$flux_ns" | ||
|
||
echo "Checking status for HelmRelease: $chart_name" | ||
check_helmrelease_status "$chart_name" "$namespace" | ||
else | ||
echo "$chart_path is not a directory. Skipping." | ||
fi | ||
done | ||
} |
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 @@ | ||
#!/bin/bash | ||
|
||
source ./modules/colors.sh | ||
|
||
function install_helmrelease() { | ||
local release_name="$1" | ||
local namespace="$2" | ||
local chart_path="$3" | ||
local gitrepo_name="$4" | ||
local flux_ns="$5" | ||
local values_file="$6" | ||
|
||
if [[ -z "$release_name" ]]; then | ||
echo -e "${RED}Error: Release name is required.${RESET}" | ||
exit 1 | ||
fi | ||
|
||
if [[ -z "$namespace" ]]; then | ||
echo -e "${RED}Error: Namespace name is required.${RESET}" | ||
exit 1 | ||
fi | ||
|
||
if [[ -z "$chart_path" ]]; then | ||
echo -e "${RED}Error: Chart path name is required.${RESET}" | ||
exit 1 | ||
fi | ||
|
||
local helmrelease_file=$(mktemp /tmp/HelmRelease.XXXXXX.yaml) | ||
|
||
{ | ||
echo "apiVersion: helm.toolkit.fluxcd.io/v2" | ||
echo "kind: HelmRelease" | ||
echo "metadata:" | ||
echo " labels:" | ||
echo " cozystack.io/ui: \"true\"" | ||
echo " name: \"$release_name\"" | ||
echo " namespace: \"$namespace\"" | ||
echo "spec:" | ||
echo " chart:" | ||
echo " spec:" | ||
echo " chart: \"$chart_path\"" | ||
echo " reconcileStrategy: Revision" | ||
echo " sourceRef:" | ||
echo " kind: GitRepository" | ||
echo " name: \"$gitrepo_name\"" | ||
echo " namespace: \"$flux_ns\"" | ||
echo " version: '*'" | ||
echo " interval: 1m0s" | ||
echo " timeout: 5m0s" | ||
|
||
if [[ -n "$values_file" && -f "$values_file" ]]; then | ||
echo " values:" | ||
cat "$values_file" | sed 's/^/ /' | ||
fi | ||
} > "$helmrelease_file" | ||
|
||
kubectl apply -f "$helmrelease_file" | ||
|
||
rm -f "$helmrelease_file" | ||
} |
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,11 @@ | ||
#!/bin/bash | ||
|
||
function install_tenant (){ | ||
local release_name="$1" | ||
local namespace="$2" | ||
local gitrepo_name="$3" | ||
local flux_ns="$4" | ||
local values_file="${5:-tenant.yaml}" | ||
|
||
install_helmrelease "$release_name" "$namespace" "../../packages/apps/tenant" "$gitrepo_name" "$flux_ns" "$values_file" | ||
} |
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,6 @@ | ||
host: "" | ||
etcd: false | ||
monitoring: true | ||
ingress: false | ||
seaweedfs: true | ||
isolated: true |
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
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
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