ci: add full-node tests (#920)
diff --git a/build/fetch-kubernetes-logs.sh b/build/fetch-kubernetes-logs.sh
new file mode 100755
index 0000000..5b028b5
--- /dev/null
+++ b/build/fetch-kubernetes-logs.sh
@@ -0,0 +1,78 @@
+#!/bin/bash -x
+
+# Check if an argument was provided
+if [ "$#" -ne 1 ]; then
+ echo "Usage: $0 <path_to_save_logs>"
+ exit 1
+fi
+
+# Define the base directory where you want to save the logs
+BASE_DIR="$1"
+
+# Create the base directory if it doesn't exist
+mkdir -p "$BASE_DIR"
+
+# Function to fetch logs for a pod and container
+fetch_logs() {
+ local ns="$1"
+ local pod="$2"
+ local container="$3"
+ local pod_dir="$BASE_DIR/$ns/$pod"
+ local log_file="$pod_dir/$container.log"
+ local prev_log_file="$pod_dir/${container}-previous.log"
+
+ # Ensure the pod directory exists
+ mkdir -p "$pod_dir"
+
+ # Fetch current logs
+ kubectl logs "$pod" -n "$ns" -c "$container" > "$log_file" 2>/dev/null
+
+ # Fetch previous logs if they exist
+ if kubectl logs "$pod" -n "$ns" -c "$container" --previous &>/dev/null; then
+ kubectl logs "$pod" -n "$ns" -c "$container" --previous > "$prev_log_file" 2>/dev/null
+ fi
+}
+
+export -f fetch_logs
+export BASE_DIR
+
+# Get all namespaces
+namespaces=$(kubectl get ns -o jsonpath='{.items[*].metadata.name}')
+
+# Loop through each namespace
+for ns in $namespaces; do
+ (
+ # Create a directory for the namespace
+ mkdir -p "$BASE_DIR/$ns"
+
+ # Get all pods in the namespace
+ pods=$(kubectl get pods -n "$ns" -o jsonpath='{.items[*].metadata.name}')
+
+ # Loop through each pod
+ for pod in $pods; do
+ (
+ # Create a directory for the pod
+ mkdir -p "$BASE_DIR/$ns/$pod"
+
+ # Get all containers in the pod
+ containers=$(kubectl get pod "$pod" -n "$ns" -o jsonpath='{.spec.containers[*].name}')
+
+ # Loop through each container
+ for container in $containers; do
+ # Fetch logs in parallel
+ fetch_logs "$ns" "$pod" "$container" &
+ done
+
+ # Wait for all background log fetches to complete before moving to the next pod
+ wait
+ ) &
+ done
+ # Wait for all background pods processing to complete before moving to the next namespace
+ wait
+ ) &
+done
+
+# Wait for all background namespaces processing to complete
+wait
+
+echo "Logs have been saved to $BASE_DIR"