Skip to content

Commit eebb6a2

Browse files
☀ projected k8s-manifests-github from d0f82a9
Source-holobranch: k8s-manifests-github Source-commit: d0f82a9 Source: d0f82a9
2 parents 2c68ebd + d0f82a9 commit eebb6a2

File tree

73 files changed

+281
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+281
-169
lines changed

.github/workflows/k8s-deploy.yml

Lines changed: 107 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,35 +28,63 @@ jobs:
2828
2929
# initialize empty log of kube operations
3030
echo -n '' > /tmp/kube.log
31+
echo -n '' > /tmp/kube.err
3132
3233
- name: 'Apply manifests: CRD resources'
3334
run: |
3435
if [ -d ./_/CustomResourceDefinition ]; then
35-
kubectl apply -Rf ./_/CustomResourceDefinition | tee -a /tmp/kube.log
36+
# Capture errors and add context
37+
dir_errors=$(kubectl apply -Rf ./_/CustomResourceDefinition 2>&1 1>>/tmp/kube.log || true)
38+
39+
# Filter and append errors with context if meaningful
40+
filtered_errors=$(echo "$dir_errors" | \
41+
grep -v "Warning: Use tokens from the TokenRequest API" | \
42+
grep -v "^Error: exit status [0-9]*$" | \
43+
grep -v "^[[:space:]]*$" || true)
44+
45+
if [ -n "$filtered_errors" ] && echo "$filtered_errors" | grep -q '[^[:space:]]' 2>/dev/null; then
46+
echo "=== CRD Resources ===" >> /tmp/kube.err
47+
echo "$filtered_errors" >> /tmp/kube.err
48+
echo "" >> /tmp/kube.err
49+
fi
3650
fi
3751
3852
- name: 'Apply manifests: non-CRD global resources'
3953
run: |
4054
if [ -d ./_ ]; then
41-
(
42-
find _ \
43-
-maxdepth 1 \
44-
-mindepth 1 \
45-
-type d \
46-
-not -name 'CustomResourceDefinition' \
47-
-print0 \
48-
| sort -z \
49-
| xargs -r0 -n 1 kubectl apply -Rf
50-
) | tee -a /tmp/kube.log
55+
find _ \
56+
-maxdepth 1 \
57+
-mindepth 1 \
58+
-type d \
59+
-not -name 'CustomResourceDefinition' \
60+
-print0 \
61+
| sort -z \
62+
| while IFS= read -r -d '' dir; do
63+
# Capture errors and add context per directory
64+
dir_errors=$(kubectl apply -Rf "$dir" 2>&1 1>>/tmp/kube.log || true)
65+
66+
# Filter and append errors with context if meaningful
67+
filtered_errors=$(echo "$dir_errors" | \
68+
grep -v "Warning: Use tokens from the TokenRequest API" | \
69+
grep -v "^Error: exit status [0-9]*$" | \
70+
grep -v "^[[:space:]]*$" || true)
71+
72+
if [ -n "$filtered_errors" ] && echo "$filtered_errors" | grep -q '[^[:space:]]' 2>/dev/null; then
73+
echo "=== Directory: $dir ===" >> /tmp/kube.err
74+
echo "$filtered_errors" >> /tmp/kube.err
75+
echo "" >> /tmp/kube.err
76+
fi
77+
done
5178
fi
5279
5380
- name: 'Apply manifests: generated regcred secrets'
5481
run: |
55-
5682
# apply a copy of regcred secret for every deployed namespace
5783
while IFS= read -r namespace; do
5884
namespace="$(basename "${namespace}")"
59-
cat <<EOF | kubectl apply -f - | tee -a /tmp/kube.log
85+
86+
# Capture errors for this namespace's regcred
87+
secret_errors=$(cat <<EOF | kubectl apply -f - 2>&1 1>>/tmp/kube.log || true
6088
apiVersion: v1
6189
kind: Secret
6290
metadata:
@@ -66,20 +94,46 @@ jobs:
6694
data:
6795
.dockerconfigjson: ${{ secrets.DOCKER_CONFIG_BASE64 }}
6896
EOF
97+
)
98+
99+
# Filter and append errors with context if meaningful
100+
filtered_errors=$(echo "$secret_errors" | \
101+
grep -v "Warning: Use tokens from the TokenRequest API" | \
102+
grep -v "^Error: exit status [0-9]*$" | \
103+
grep -v "^[[:space:]]*$" || true)
104+
105+
if [ -n "$filtered_errors" ] && echo "$filtered_errors" | grep -q '[^[:space:]]' 2>/dev/null; then
106+
echo "=== Regcred Secret: $namespace ===" >> /tmp/kube.err
107+
echo "$filtered_errors" >> /tmp/kube.err
108+
echo "" >> /tmp/kube.err
109+
fi
69110
done <<< "$(find . -maxdepth 1 -type d -not -name '_' -not -name '.*')"
70111
71112
- name: 'Apply manifests: namespaced resources'
72113
run: |
73-
(
74-
find . \
75-
-maxdepth 1 \
76-
-type d \
77-
-not -name '_' \
78-
-not -name '.*' \
79-
-print0 \
80-
| sort -z \
81-
| xargs -r0 -n 1 kubectl apply -Rf
82-
) | tee -a /tmp/kube.log
114+
find . \
115+
-maxdepth 1 \
116+
-type d \
117+
-not -name '_' \
118+
-not -name '.*' \
119+
-print0 \
120+
| sort -z \
121+
| while IFS= read -r -d '' dir; do
122+
# Capture errors and add context per directory
123+
dir_errors=$(kubectl apply -Rf "$dir" 2>&1 1>>/tmp/kube.log || true)
124+
125+
# Filter and append errors with context if meaningful
126+
filtered_errors=$(echo "$dir_errors" | \
127+
grep -v "Warning: Use tokens from the TokenRequest API" | \
128+
grep -v "^Error: exit status [0-9]*$" | \
129+
grep -v "^[[:space:]]*$" || true)
130+
131+
if [ -n "$filtered_errors" ] && echo "$filtered_errors" | grep -q '[^[:space:]]' 2>/dev/null; then
132+
echo "=== Directory: $dir ===" >> /tmp/kube.err
133+
echo "$filtered_errors" >> /tmp/kube.err
134+
echo "" >> /tmp/kube.err
135+
fi
136+
done
83137
84138
- name: 'Apply manifests: deleted resources'
85139
run: |
@@ -90,10 +144,27 @@ jobs:
90144
kind="${kind_name%%/*}"
91145
name="${kind_name##*/}"
92146
147+
# Capture errors for this deletion
93148
if [ "${namespace}" == "_" ]; then
94-
kubectl delete $kind $name | tee -a /tmp/kube.log
149+
delete_errors=$(kubectl delete $kind $name 2>&1 1>>/tmp/kube.log || true)
95150
else
96-
kubectl -n $namespace delete $kind $name | tee -a /tmp/kube.log
151+
delete_errors=$(kubectl -n $namespace delete $kind $name 2>&1 1>>/tmp/kube.log || true)
152+
fi
153+
154+
# Filter and append errors with context if meaningful
155+
filtered_errors=$(echo "$delete_errors" | \
156+
grep -v "Warning: Use tokens from the TokenRequest API" | \
157+
grep -v "^Error: exit status [0-9]*$" | \
158+
grep -v "^[[:space:]]*$" || true)
159+
160+
if [ -n "$filtered_errors" ] && echo "$filtered_errors" | grep -q '[^[:space:]]' 2>/dev/null; then
161+
if [ "${namespace}" == "_" ]; then
162+
echo "=== Deleting: $kind/$name ===" >> /tmp/kube.err
163+
else
164+
echo "=== Deleting: $namespace/$kind/$name ===" >> /tmp/kube.err
165+
fi
166+
echo "$filtered_errors" >> /tmp/kube.err
167+
echo "" >> /tmp/kube.err
97168
fi
98169
done
99170
@@ -113,6 +184,17 @@ jobs:
113184
EOF
114185
)"
115186
187+
# Conditionally append error output if it has meaningful content
188+
if [ -s /tmp/kube.err ]; then
189+
comment_body="${comment_body}
190+
191+
## Errors/Warnings
192+
193+
\`\`\`
194+
$(cat /tmp/kube.err)
195+
\`\`\`"
196+
fi
197+
116198
117199
## get most recent merged PR
118200
echo

.github/workflows/k8s-prepare.yml

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,34 @@ jobs:
3333
3434
- name: Generate diff
3535
run: |
36-
(
37-
find . \
38-
-maxdepth 1 \
39-
-type d \
40-
-not -name '.*' \
41-
-print0 \
42-
| sort -z \
43-
| xargs -r0 -n 1 kubectl diff -Rf || true
44-
) > /tmp/kube.diff
36+
# Initialize output files
37+
echo -n '' > /tmp/kube.diff
38+
echo -n '' > /tmp/kube.err
39+
40+
# Process each directory
41+
find . \
42+
-maxdepth 1 \
43+
-type d \
44+
-not -name '.*' \
45+
-print0 \
46+
| sort -z \
47+
| while IFS= read -r -d '' dir; do
48+
# Run kubectl diff: stdout to file, capture stderr in variable
49+
dir_errors=$(kubectl diff -Rf "$dir" 2>&1 1>>/tmp/kube.diff || true)
50+
51+
# Filter out known warnings, exit status messages, and blank lines
52+
filtered_errors=$(echo "$dir_errors" | \
53+
grep -v "Warning: Use tokens from the TokenRequest API" | \
54+
grep -v "^Error: exit status [0-9]*$" | \
55+
grep -v "^[[:space:]]*$" || true)
56+
57+
# If there are meaningful errors, append with prefix
58+
if [ -n "$filtered_errors" ] && echo "$filtered_errors" | grep -q '[^[:space:]]' 2>/dev/null; then
59+
echo "=== Directory: $dir ===" >> /tmp/kube.err
60+
echo "$filtered_errors" >> /tmp/kube.err
61+
echo "" >> /tmp/kube.err
62+
fi
63+
done
4564
4665
- name: Create/update pull request
4766
env:
@@ -63,6 +82,17 @@ jobs:
6382
EOF
6483
)"
6584
85+
# Conditionally append error output if it has meaningful content
86+
if [ -s /tmp/kube.err ]; then
87+
pr_body="${pr_body}
88+
89+
## Errors/Warnings
90+
91+
\`\`\`
92+
$(cat /tmp/kube.err)
93+
\`\`\`"
94+
fi
95+
6696
6797
## generate initial commit for base if needed
6898
if ! git ls-remote --exit-code --heads origin "${BRANCH_DEPLOY}"; then

_/ClusterIssuer/letsencrypt-prod.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ spec:
77
88
privateKeySecretRef:
99
name: letsencrypt-prod
10-
server: 'https://acme-v02.api.letsencrypt.org/directory'
10+
server: https://acme-v02.api.letsencrypt.org/directory
1111
solvers:
1212
- http01:
1313
ingress:

_/ClusterIssuer/letsencrypt-staging.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ spec:
77
88
privateKeySecretRef:
99
name: letsencrypt-staging
10-
server: 'https://acme-staging-v02.api.letsencrypt.org/directory'
10+
server: https://acme-staging-v02.api.letsencrypt.org/directory
1111
solvers:
1212
- http01:
1313
ingress:

_/ClusterRole/cert-manager-controller-approve:cert-manager-io.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99
app.kubernetes.io/name: cert-manager
1010
app.kubernetes.io/version: v1.10.1
1111
helm.sh/chart: cert-manager-v1.10.1
12-
name: 'cert-manager-controller-approve:cert-manager-io'
12+
name: cert-manager-controller-approve:cert-manager-io
1313
rules:
1414
- apiGroups:
1515
- cert-manager.io

_/ClusterRole/cert-manager-webhook:subjectaccessreviews.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99
app.kubernetes.io/name: webhook
1010
app.kubernetes.io/version: v1.10.1
1111
helm.sh/chart: cert-manager-v1.10.1
12-
name: 'cert-manager-webhook:subjectaccessreviews'
12+
name: cert-manager-webhook:subjectaccessreviews
1313
rules:
1414
- apiGroups:
1515
- authorization.k8s.io

_/ClusterRole/ingress-nginx-admission.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: rbac.authorization.k8s.io/v1
22
kind: ClusterRole
33
metadata:
44
annotations:
5-
helm.sh/hook: 'pre-install,pre-upgrade,post-install,post-upgrade'
6-
helm.sh/hook-delete-policy: 'before-hook-creation,hook-succeeded'
5+
helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
6+
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
77
labels:
88
app.kubernetes.io/component: admission-webhook
99
app.kubernetes.io/instance: ingress-nginx

_/ClusterRole/system:aggregated-metrics-reader.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ metadata:
66
rbac.authorization.k8s.io/aggregate-to-admin: 'true'
77
rbac.authorization.k8s.io/aggregate-to-edit: 'true'
88
rbac.authorization.k8s.io/aggregate-to-view: 'true'
9-
name: 'system:aggregated-metrics-reader'
9+
name: system:aggregated-metrics-reader
1010
rules:
1111
- apiGroups:
1212
- metrics.k8s.io

_/ClusterRole/system:metrics-server.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kind: ClusterRole
33
metadata:
44
labels:
55
k8s-app: metrics-server
6-
name: 'system:metrics-server'
6+
name: system:metrics-server
77
rules:
88
- apiGroups:
99
- ''

_/ClusterRoleBinding/cert-manager-controller-approve:cert-manager-io.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ metadata:
99
app.kubernetes.io/name: cert-manager
1010
app.kubernetes.io/version: v1.10.1
1111
helm.sh/chart: cert-manager-v1.10.1
12-
name: 'cert-manager-controller-approve:cert-manager-io'
12+
name: cert-manager-controller-approve:cert-manager-io
1313
roleRef:
1414
apiGroup: rbac.authorization.k8s.io
1515
kind: ClusterRole
16-
name: 'cert-manager-controller-approve:cert-manager-io'
16+
name: cert-manager-controller-approve:cert-manager-io
1717
subjects:
1818
- kind: ServiceAccount
1919
name: cert-manager

0 commit comments

Comments
 (0)