Skip to content

Commit 63e583f

Browse files
Issue #2 : GitHub Actions.
1 parent e30f5af commit 63e583f

2 files changed

Lines changed: 249 additions & 1 deletion

File tree

.github/workflows/build-matrix.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ jobs:
8484
needs: prepare
8585
runs-on: ${{ matrix.os }}
8686
timeout-minutes: 60
87-
container: ${{ matrix.container }}
87+
container:
88+
image: ${{ matrix.container }}
89+
options: --user root
8890

8991
strategy:
9092
fail-fast: false
@@ -207,6 +209,7 @@ jobs:
207209

208210
container:
209211
image: ${{ matrix.os }}
212+
options: --user root
210213

211214
steps:
212215
- name: Checkout code
@@ -263,6 +266,7 @@ jobs:
263266

264267
container:
265268
image: ${{ matrix.os }}
269+
options: --user root
266270

267271
steps:
268272
- name: Checkout code
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
#!/bin/bash
2+
# Verify build-matrix.yml workflow
3+
4+
set -e
5+
6+
echo "╔════════════════════════════════════════════════════════════════╗"
7+
echo "║ ║"
8+
echo "║ Build Matrix Workflow Verification ║"
9+
echo "║ ║"
10+
echo "╚════════════════════════════════════════════════════════════════╝"
11+
echo
12+
13+
GREEN='\033[0;32m'
14+
RED='\033[0;31m'
15+
YELLOW='\033[1;33m'
16+
NC='\033[0m'
17+
18+
ERRORS=0
19+
WARNINGS=0
20+
21+
WORKFLOW=".github/workflows/build-matrix.yml"
22+
23+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
24+
echo "1. File Structure Checks"
25+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
26+
echo
27+
28+
if [ -f "$WORKFLOW" ]; then
29+
echo -e "${GREEN}${NC} Workflow file exists"
30+
else
31+
echo -e "${RED}${NC} Workflow file not found"
32+
exit 1
33+
fi
34+
35+
echo
36+
37+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
38+
echo "2. Trigger Configuration"
39+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
40+
echo
41+
42+
if grep -q "workflow_dispatch:" "$WORKFLOW"; then
43+
echo -e "${GREEN}${NC} Manual trigger configured (workflow_dispatch)"
44+
else
45+
echo -e "${RED}${NC} Missing manual trigger"
46+
((ERRORS++))
47+
fi
48+
49+
if grep -q "push:" "$WORKFLOW" || grep -q "pull_request:" "$WORKFLOW"; then
50+
echo -e "${RED}${NC} Has automatic triggers (should be manual-only)"
51+
((ERRORS++))
52+
else
53+
echo -e "${GREEN}${NC} No automatic triggers (manual-only)"
54+
fi
55+
56+
echo
57+
58+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
59+
echo "3. Job Definitions"
60+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
61+
echo
62+
63+
JOBS=(prepare build package-deb package-rpm test-packages release summary)
64+
for job in "${JOBS[@]}"; do
65+
if grep -q "^ ${job}:" "$WORKFLOW"; then
66+
echo -e "${GREEN}${NC} Job: $job"
67+
else
68+
echo -e "${YELLOW}!${NC} Job: $job (not found)"
69+
((WARNINGS++))
70+
fi
71+
done
72+
73+
echo
74+
75+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
76+
echo "4. Platform Support"
77+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
78+
echo
79+
80+
if grep -q '"ubuntu"' "$WORKFLOW"; then
81+
echo -e "${GREEN}${NC} Ubuntu platform"
82+
fi
83+
84+
if grep -q '"macos"' "$WORKFLOW"; then
85+
echo -e "${GREEN}${NC} macOS platform"
86+
fi
87+
88+
if grep -q '"rocky"' "$WORKFLOW"; then
89+
echo -e "${GREEN}${NC} Rocky Linux platform"
90+
fi
91+
92+
echo
93+
94+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
95+
echo "5. Critical Fixes Verification"
96+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
97+
echo
98+
99+
# Check for Rocky Linux fix
100+
if grep -q "redhat-rpm-config" "$WORKFLOW"; then
101+
echo -e "${GREEN}${NC} Rocky Linux fix: redhat-rpm-config installed"
102+
else
103+
echo -e "${RED}${NC} Missing redhat-rpm-config package"
104+
((ERRORS++))
105+
fi
106+
107+
# Check for DEB permission fix
108+
if grep -q "mkdir -p /etc/dpkg/dpkg.cfg.d" "$WORKFLOW"; then
109+
echo -e "${GREEN}${NC} DEB fix: Directory creation added"
110+
else
111+
echo -e "${YELLOW}!${NC} Warning: Missing mkdir -p for dpkg config"
112+
((WARNINGS++))
113+
fi
114+
115+
# Check for jq compact output
116+
if grep -q "jq -nc" "$WORKFLOW"; then
117+
echo -e "${GREEN}${NC} JSON fix: Compact output configured"
118+
else
119+
echo -e "${RED}${NC} Missing compact JSON output"
120+
((ERRORS++))
121+
fi
122+
123+
echo
124+
125+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
126+
echo "6. PostgreSQL Repository Configuration"
127+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
128+
echo
129+
130+
if grep -q "postgresql.org" "$WORKFLOW"; then
131+
echo -e "${GREEN}${NC} Official PostgreSQL repositories configured"
132+
else
133+
echo -e "${RED}${NC} Missing PostgreSQL repository setup"
134+
((ERRORS++))
135+
fi
136+
137+
# Check PGDG setup for Ubuntu
138+
if grep -q "apt.postgresql.org" "$WORKFLOW"; then
139+
echo -e "${GREEN}${NC} PGDG APT repository (Ubuntu/Debian)"
140+
fi
141+
142+
# Check PGDG setup for Rocky
143+
if grep -q "download.postgresql.org/pub/repos/yum" "$WORKFLOW"; then
144+
echo -e "${GREEN}${NC} PGDG YUM repository (Rocky/RHEL)"
145+
fi
146+
147+
echo
148+
149+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
150+
echo "7. Build Optimizations"
151+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
152+
echo
153+
154+
if grep -q "DEBIAN_FRONTEND=noninteractive" "$WORKFLOW"; then
155+
echo -e "${GREEN}${NC} DEB: Non-interactive mode"
156+
fi
157+
158+
if grep -q "man-db" "$WORKFLOW"; then
159+
echo -e "${GREEN}${NC} DEB: man-db optimization"
160+
fi
161+
162+
if grep -q "deltarpm=0" "$WORKFLOW"; then
163+
echo -e "${GREEN}${NC} RPM: deltarpm disabled"
164+
fi
165+
166+
if grep -q "install_weak_deps=false" "$WORKFLOW"; then
167+
echo -e "${GREEN}${NC} RPM: weak dependencies disabled"
168+
fi
169+
170+
echo
171+
172+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
173+
echo "8. Timeout Configuration"
174+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
175+
echo
176+
177+
if grep -q "timeout-minutes:" "$WORKFLOW"; then
178+
TIMEOUT_COUNT=$(grep -c "timeout-minutes:" "$WORKFLOW")
179+
echo -e "${GREEN}${NC} Timeouts configured ($TIMEOUT_COUNT jobs)"
180+
else
181+
echo -e "${YELLOW}!${NC} No timeouts configured"
182+
((WARNINGS++))
183+
fi
184+
185+
echo
186+
187+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
188+
echo "9. Matrix Strategy"
189+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
190+
echo
191+
192+
if grep -q "strategy:" "$WORKFLOW" && grep -q "matrix:" "$WORKFLOW"; then
193+
echo -e "${GREEN}${NC} Matrix strategy configured"
194+
else
195+
echo -e "${RED}${NC} Missing matrix strategy"
196+
((ERRORS++))
197+
fi
198+
199+
if grep -q "fail-fast: false" "$WORKFLOW"; then
200+
echo -e "${GREEN}${NC} fail-fast disabled (builds all combinations)"
201+
fi
202+
203+
echo
204+
205+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
206+
echo "10. Dependencies Check"
207+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
208+
echo
209+
210+
DEPS=(gcc make golang json-c-devel postgresql-server-dev)
211+
for dep in "${DEPS[@]}"; do
212+
if grep -q "$dep" "$WORKFLOW"; then
213+
echo -e "${GREEN}${NC} Dependency: $dep"
214+
fi
215+
done
216+
217+
echo
218+
219+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
220+
echo "Summary"
221+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
222+
echo
223+
224+
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
225+
echo -e "${GREEN}✓ All checks passed!${NC}"
226+
echo
227+
echo "Build matrix workflow is ready to use:"
228+
echo " gh workflow run build-matrix.yml"
229+
exit 0
230+
elif [ $ERRORS -eq 0 ]; then
231+
echo -e "${YELLOW}! Verification completed with warnings${NC}"
232+
echo
233+
echo "Errors: $ERRORS"
234+
echo "Warnings: $WARNINGS"
235+
echo
236+
echo "Workflow is functional but could be improved."
237+
exit 0
238+
else
239+
echo -e "${RED}✗ Verification failed${NC}"
240+
echo
241+
echo "Errors: $ERRORS"
242+
echo "Warnings: $WARNINGS"
243+
exit 1
244+
fi

0 commit comments

Comments
 (0)