20 Commits

Author SHA1 Message Date
43e1080cd7 .gitea/workflows/e2e.yml aktualisiert 2026-03-19 11:26:21 +00:00
6945a48d11 .gitea/workflows/e2e.yml aktualisiert 2026-03-19 11:18:21 +00:00
91348eb00b Rename cluster 2026-03-19 11:01:02 +00:00
24863ef249 .gitea/workflows/e2e.yml aktualisiert 2026-03-19 10:51:14 +00:00
62c14d7877 .gitea/workflows/e2e.yml aktualisiert 2026-03-19 10:45:45 +00:00
3625cf2ff2 fixes 2026-03-19 10:38:42 +00:00
4a82e5d96d .gitea/workflows/e2e.yml aktualisiert 2026-03-19 10:35:18 +00:00
86c8067beb Keep cluster alive? 2026-03-19 10:31:35 +00:00
a21154e3a6 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:51:06 +00:00
d1c20ced5e .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:46:09 +00:00
4e2e4c4b29 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:42:30 +00:00
759dffa245 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:34:19 +00:00
619d048017 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:33:12 +00:00
2f455431a9 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:28:40 +00:00
9a3b8afa55 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 22:08:30 +00:00
e2bc1191d7 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 21:54:05 +00:00
2325970518 another attempt 2026-03-18 21:46:02 +00:00
1c8e4d9ef6 .gitea/workflows/e2e.yml aktualisiert 2026-03-18 21:35:36 +00:00
7db5906c08 Add delete cluster 2026-03-18 21:20:54 +00:00
d24696be8c .gitea/workflows/e2e.yml hinzugefügt 2026-03-18 21:05:57 +00:00
2 changed files with 115 additions and 39 deletions

76
.gitea/workflows/e2e.yml Normal file
View File

@ -0,0 +1,76 @@
on: pull_request
jobs:
k8s-test:
runs-on: ubuntu-latest
env:
CLUSTER_NAME: test-cluster
steps:
- uses: actions/checkout@v4
- name: Install Docker CLI, kind, and kubectl
run: |
# Install Docker CLI (to talk to the host daemon via the mounted socket)
apt-get update && apt-get install -y docker.io jq
# Install kind
curl -Lo /usr/local/bin/kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64
chmod +x /usr/local/bin/kind
# Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
install kubectl /usr/local/bin/
- name: Create kind cluster
run: |
kind delete cluster test-cluster2
docker inspect ${CLUSTER_NAME}-control-plane && mkdir -p ~/.kube && kind get kubeconfig --name ${CLUSTER_NAME} > ~/.kube/config || kind create cluster --name ${CLUSTER_NAME} --wait 5m
- name: Connect kind to the job container's network and fix kubeconfig
if: always()
run: |
# 1. Find the Docker network the job container is on
# The job container's hostname is the container ID
JOB_CONTAINER_ID=$(hostname)
NETWORK_NAME=$(docker inspect "$JOB_CONTAINER_ID" \
--format '{{range $k, $v := .NetworkSettings.Networks}}{{$k}}{{end}}')
echo "NETWORK_NAME=$NETWORK_NAME" >> $GITHUB_ENV
echo "Job container network: $NETWORK_NAME"
# 2. Get the kind control-plane container name
KIND_CONTAINER="${CLUSTER_NAME}-control-plane"
echo "KIND_CONTAINER=$KIND_CONTAINER" >> $GITHUB_ENV
# 3. Connect the kind container to the same network
docker network connect "$NETWORK_NAME" "$KIND_CONTAINER"
# 4. Get the kind container's IP on that network
KIND_IP=$(docker inspect "$KIND_CONTAINER" \
--format "{{(index .NetworkSettings.Networks \"$NETWORK_NAME\").IPAddress}}")
echo "Kind container IP on shared network: $KIND_IP"
# 5. Rewrite the kubeconfig to use the kind container's IP
# kind's API server listens on port 6443 inside the container
kubectl config set-cluster kind-${CLUSTER_NAME} \
--server="https://${KIND_IP}:6443"
# 6. Since the TLS cert won't match the new IP, use insecure mode
# OR set insecure-skip-tls-verify
kubectl config set-cluster kind-${CLUSTER_NAME} \
--insecure-skip-tls-verify=true
- name: Verify cluster access
if: always()
run: |
kubectl cluster-info
kubectl get nodes
kubectl get pods -A
- name: Disconnect Kind Network
if: always()
run: |
docker network disconnect "$NETWORK_NAME" "$KIND_CONTAINER"

78
pnpm-lock.yaml generated
View File

@ -21,6 +21,14 @@ packages:
resolution: {integrity: sha512-7eXyJzxQTQj2ajpHlIhadciCCYWOqN8ieaweU25bStHOZowQ2c2CQyjO/bX4gxIf73LoRKxHhEYgLTllJY9SIw==}
hasBin: true
'@isaacs/balanced-match@4.0.1':
resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
engines: {node: 20 || >=22}
'@isaacs/brace-expansion@5.0.1':
resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==}
engines: {node: 20 || >=22}
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
@ -43,17 +51,9 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
balanced-match@4.0.4:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
brace-expansion@1.1.12:
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
brace-expansion@5.0.4:
resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
engines: {node: 18 || 20 || >=22}
character-entities-legacy@3.0.0:
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
@ -125,8 +125,8 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
get-east-asian-width@1.5.0:
resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==}
get-east-asian-width@1.4.0:
resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
engines: {node: '>=18'}
glob@7.2.3:
@ -171,8 +171,8 @@ packages:
resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==}
engines: {node: '>=0.10.0'}
katex@0.16.38:
resolution: {integrity: sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==}
katex@0.16.28:
resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==}
hasBin: true
linkify-it@5.0.0:
@ -181,8 +181,8 @@ packages:
lodash@4.17.23:
resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
markdown-it@14.1.1:
resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
markdown-it@14.1.0:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
markdown-table@2.0.0:
@ -275,12 +275,12 @@ packages:
micromark@4.0.2:
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
minimatch@10.1.3:
resolution: {integrity: sha512-IF6URNyBX7Z6XfvjpaNy5meRxPZiIf2OqtOoSLs+hLJ9pJAScnM1RjrFcbCaD85y42KcI+oZmKjFIJKYDFjQfg==}
minimatch@10.1.2:
resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==}
engines: {node: 20 || >=22}
minimatch@3.1.5:
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@ -322,8 +322,8 @@ packages:
resolution: {integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==}
engines: {node: '>=20'}
strip-ansi@7.2.0:
resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
strip-ansi@7.1.2:
resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
engines: {node: '>=12'}
strip-json-comments@3.1.1:
@ -355,6 +355,12 @@ snapshots:
markdown-table: 2.0.0
yaml: 2.8.2
'@isaacs/balanced-match@4.0.1': {}
'@isaacs/brace-expansion@5.0.1':
dependencies:
'@isaacs/balanced-match': 4.0.1
'@types/debug@4.1.12':
dependencies:
'@types/ms': 2.1.0
@ -371,17 +377,11 @@ snapshots:
balanced-match@1.0.2: {}
balanced-match@4.0.4: {}
brace-expansion@1.1.12:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
brace-expansion@5.0.4:
dependencies:
balanced-match: 4.0.4
character-entities-legacy@3.0.0: {}
character-entities@2.0.2: {}
@ -427,14 +427,14 @@ snapshots:
fs.realpath@1.0.0: {}
get-east-asian-width@1.5.0: {}
get-east-asian-width@1.4.0: {}
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.5
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
@ -468,7 +468,7 @@ snapshots:
jsonpointer@5.0.1: {}
katex@0.16.38:
katex@0.16.28:
dependencies:
commander: 8.3.0
@ -478,7 +478,7 @@ snapshots:
lodash@4.17.23: {}
markdown-it@14.1.1:
markdown-it@14.1.0:
dependencies:
argparse: 2.0.1
entities: 4.5.0
@ -499,9 +499,9 @@ snapshots:
js-yaml: 4.1.1
jsonc-parser: 3.3.1
jsonpointer: 5.0.1
markdown-it: 14.1.1
markdown-it: 14.1.0
markdownlint: 0.40.0
minimatch: 10.1.3
minimatch: 10.1.2
run-con: 1.3.2
smol-toml: 1.5.2
tinyglobby: 0.2.15
@ -583,7 +583,7 @@ snapshots:
dependencies:
'@types/katex': 0.16.8
devlop: 1.1.0
katex: 0.16.38
katex: 0.16.28
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
@ -696,11 +696,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
minimatch@10.1.3:
minimatch@10.1.2:
dependencies:
brace-expansion: 5.0.4
'@isaacs/brace-expansion': 5.0.1
minimatch@3.1.5:
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.12
@ -741,10 +741,10 @@ snapshots:
string-width@8.1.0:
dependencies:
get-east-asian-width: 1.5.0
strip-ansi: 7.2.0
get-east-asian-width: 1.4.0
strip-ansi: 7.1.2
strip-ansi@7.2.0:
strip-ansi@7.1.2:
dependencies:
ansi-regex: 6.2.2