Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
101ab57
ROB-2713 improve healthcheck for tempo and loki (#1189)
RoiGlinik Dec 18, 2025
75f4f7b
Adding Backstage
FilipGrebowski Dec 19, 2025
b4db929
Addressed review bot comments
FilipGrebowski Dec 19, 2025
8e909af
Moved Backstage to Installation and separated 3rd party intregrations…
FilipGrebowski Dec 27, 2025
cea4fff
mkdocs page order
FilipGrebowski Dec 27, 2025
5a7e9f6
Add runbook alerts to prompt (#1205)
moshemorad Dec 21, 2025
31d2e2e
Add image link comments to docker workflows (#1210)
aantn Dec 21, 2025
89f16c1
verify setup success in eval 64_keda_vs_hpa_confusio and change to ha…
Sheeproid Dec 22, 2025
bf8bd69
57_wrong_namespace fix judge to allow get logs from the right namespa…
Sheeproid Dec 23, 2025
fa73819
82_pod_anti_affinity_conflict: ensure anti-affinity rule exist in set…
Sheeproid Dec 23, 2025
ea26559
improving several tests setup and instructions (#1227)
Sheeproid Dec 23, 2025
e0d4c99
stabilizing more tests (#1233)
Sheeproid Dec 23, 2025
eff66a1
Add retention warning to dev image PR comments (#1224)
aantn Dec 24, 2025
bdd4088
fixing failures due to non standard pod name in eval 101. test 100b i…
Sheeproid Dec 24, 2025
5d9da0d
ad 176_network_policy_blocking_traffic_no_runbooks based on test 84 (…
Sheeproid Dec 24, 2025
98ca292
faster reliable setup for some counting and Kubernetes tests (#1238)
Sheeproid Dec 24, 2025
d600384
faster setup for 162_get_runbooks (#1239)
Sheeproid Dec 24, 2025
1a73be5
ROB-2714 more default crd permissions (#1204)
RoiGlinik Dec 24, 2025
ad97322
helm: add oci release for charts (#1188)
DrFaust92 Dec 24, 2025
a0bca65
docs: use concrete Anthropic model example instead of placeholder (#1…
aantn Dec 25, 2025
944c8d9
add a regression test tag that is to be run in PRs instead of easy te…
Sheeproid Dec 25, 2025
5827dcc
ROB-2714 default crd (#1243)
RoiGlinik Dec 25, 2025
70d1fef
Add health check to tcp connections (#1234)
moshemorad Dec 25, 2025
f1e121e
Jq memory (#1232)
arikalon1 Dec 26, 2025
beaf66c
fix docker image notifications (#1245)
aantn Dec 26, 2025
cf5d99d
Fix oci helm push action (#1246)
moshemorad Dec 26, 2025
5b4742c
Corrected file names and titles
FilipGrebowski Dec 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 147 additions & 16 deletions .github/actions/setup-kind-cluster/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ runs:
- name: Install KIND
shell: bash
run: |
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.31.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kind version
Expand All @@ -28,6 +28,8 @@ runs:
cat <<EOF > kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
disableDefaultCNI: true # Disable default kindnet to install Calico
nodes:
- role: control-plane
extraPortMappings:
Expand All @@ -42,31 +44,154 @@ runs:
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
max-pods: "200"
max-pods: "300"
- |
kind: KubeProxyConfiguration
metricsBindAddress: "0.0.0.0:10249"
- |
kind: KubeletConfiguration
maxPods: 200
- role: worker
kubeadmConfigPatches:
- |
kind: JoinConfiguration
nodeRegistration:
kubeletExtraArgs:
max-pods: "200"
- |
kind: KubeletConfiguration
maxPods: 200
maxPods: 300
EOF

# Create cluster with resource limits appropriate for GitHub Actions (7GB RAM, 2 CPU)
kind create cluster --name ${{ inputs.cluster-name }} --config kind-config.yaml --wait 5m
# Create cluster without waiting for full readiness (CNI needed first)
kind create cluster --name ${{ inputs.cluster-name }} --config kind-config.yaml

# Configure kubectl
kubectl cluster-info --context kind-${{ inputs.cluster-name }}

- name: Install Calico CNI
shell: bash
run: |
set -e # Exit on any error

# Calico version configuration
CALICO_VERSION="v3.31.3"

echo "Installing Calico CNI ${CALICO_VERSION} for NetworkPolicy support..."

# Install Calico operator
echo "Installing Calico operator..."
if ! kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/${CALICO_VERSION}/manifests/tigera-operator.yaml; then
echo "❌ Failed to install Calico operator"
exit 1
fi

# Wait for operator to be ready
echo "Waiting for Calico operator to be ready..."

# First, wait for operator pods to exist (max 60 attempts, 5s each = 300s total)
OPERATOR_PODS_FOUND=false
for i in $(seq 1 60); do
if kubectl get pods -n tigera-operator --no-headers 2>/dev/null | grep -q "tigera-operator"; then
echo "✅ Calico operator pods found!"
OPERATOR_PODS_FOUND=true
break
else
echo "⏳ Attempt $i/60: waiting for operator pods to be created, checking in 5s..."
sleep 5
fi
done

if [ "$OPERATOR_PODS_FOUND" = false ]; then
echo "❌ Calico operator pods failed to appear after 300 seconds"
kubectl get pods -n tigera-operator
kubectl describe pods -n tigera-operator
exit 1
fi

# Now wait for operator pods to be ready
echo "Waiting for operator pods to become ready..."
if ! kubectl wait --for=condition=Ready --timeout=300s -n tigera-operator pods --all; then
echo "❌ Calico operator failed to become ready"
kubectl get pods -n tigera-operator
kubectl describe pods -n tigera-operator
exit 1
fi

# Wait for operator to register CRDs
echo "Waiting for Calico operator CRDs to be registered..."
CRD_FOUND=false
for i in $(seq 1 60); do
if kubectl get crd installations.operator.tigera.io 2>/dev/null; then
echo "✅ Calico Installation CRD found!"
CRD_FOUND=true
break
else
echo "⏳ Attempt $i/60: waiting for Installation CRD to be registered, checking in 5s..."
sleep 5
fi
done

if [ "$CRD_FOUND" = false ]; then
echo "❌ Calico Installation CRD failed to be registered after 300 seconds"
kubectl get crds | grep -i tigera || echo "No tigera CRDs found"
kubectl get pods -n tigera-operator
kubectl describe pods -n tigera-operator
exit 1
fi

# Create custom resource for Calico installation optimized for KIND
echo "Creating Calico installation resource..."
if ! cat <<EOF | kubectl create -f -
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
calicoNetwork:
ipPools:
- blockSize: 26
cidr: 10.244.0.0/16 # Match KIND's default pod CIDR
encapsulation: IPIP
natOutgoing: Enabled
nodeSelector: all()
EOF
then
echo "❌ Failed to create Calico installation resource"
exit 1
fi

# Wait for Calico to be installed
echo "Waiting for Calico installation to complete..."

# First, wait for Calico system pods to exist (max 60 attempts, 5s each = 300s total)
CALICO_PODS_FOUND=false
for i in $(seq 1 60); do
if kubectl get pods -n calico-system --no-headers 2>/dev/null | grep -q "calico"; then
echo "✅ Calico system pods found!"
CALICO_PODS_FOUND=true
break
else
echo "⏳ Attempt $i/60: waiting for Calico system pods to be created, checking in 5s..."
sleep 5
fi
done

if [ "$CALICO_PODS_FOUND" = false ]; then
echo "❌ Calico system pods failed to appear after 300 seconds"
echo "=== Calico system pod status ==="
kubectl get pods -n calico-system
echo "=== Calico installation status ==="
kubectl get installations.operator.tigera.io default -o yaml || echo "Installation resource not found"
exit 1
fi

# Now wait for Calico system pods to be ready
echo "Waiting for Calico system pods to become ready..."
if ! kubectl wait --for=condition=Ready --timeout=300s -n calico-system pods --all; then
echo "❌ Calico pods failed to become ready within 300 seconds"
echo "=== Calico system pod status ==="
kubectl get pods -n calico-system
echo "=== Calico installation status ==="
kubectl get installations.operator.tigera.io default -o yaml || echo "Installation resource not found"
echo "=== Calico system pod descriptions ==="
kubectl describe pods -n calico-system
exit 1
fi


echo "✅ Calico CNI installed successfully with NetworkPolicy support"

- name: Wait for cluster to be ready
if: inputs.wait-for-ready == 'true'
shell: bash
Expand All @@ -79,6 +204,8 @@ runs:
# Wait for all system pods to be ready
echo "Waiting for system pods to be ready..."
kubectl wait --for=condition=Ready pods --all -n kube-system --timeout=300s



# Verify cluster is working by creating a test pod
echo "Creating test pod to verify cluster..."
Expand All @@ -93,4 +220,8 @@ runs:
kubectl get nodes -o wide
echo "=== System pods ==="
kubectl get pods -n kube-system
echo "=== Cluster is ready for tests ==="
echo "=== Calico pods ==="
kubectl get pods -n calico-system
echo "=== CNI configuration ==="
kubectl get installations.operator.tigera.io default -o yaml | grep -A 10 "status:" || echo "Installation status not available yet"
echo "=== Cluster is ready for tests with NetworkPolicy support ==="
16 changes: 14 additions & 2 deletions .github/workflows/build-docker-images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ jobs:
runs-on: ubuntu-latest

permissions:
contents: 'read'
id-token: 'write'
contents: read
packages: write
id-token: write

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -77,3 +78,14 @@ jobs:
- name: Upload helm chart
run: |
cd helm && ./upload_chart.sh

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push Helm chart to OCI registry
run: |
helm package helm/holmes
helm push holmes-${{github.ref_name}}.tgz oci://ghcr.io/holmesgpt/charts
Loading
Loading