Skip to content

Commit 383e526

Browse files
committed
Refactor CI workflow to use testable scripts
- Move test logic from workflow to scripts/ci-test-{deb,rpm}.sh - Tests now verify manpage installation - Scripts can be run locally for faster iteration - Reduces workflow from 304 to 267 lines
1 parent b049a8f commit 383e526

File tree

3 files changed

+91
-48
lines changed

3 files changed

+91
-48
lines changed

.github/workflows/packages.yml

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -184,35 +184,15 @@ jobs:
184184
version: ["bookworm", "bullseye"]
185185
container: debian:${{ matrix.version }}
186186
steps:
187+
- uses: actions/checkout@v4
188+
187189
- name: Download DEB package
188190
uses: actions/download-artifact@v4
189191
with:
190192
name: debian-package
191193

192-
- name: Install package
193-
run: |
194-
apt-get update
195-
apt-get install -y ./sqlpage*.deb
196-
197-
- name: Verify installation
198-
run: |
199-
sqlpage --version
200-
which sqlpage
201-
dpkg -l | grep sqlpage
202-
test -f /usr/bin/sqlpage
203-
test -d /etc/sqlpage
204-
test -f /etc/sqlpage/sqlpage.json
205-
test -d /etc/sqlpage/templates
206-
test -f /lib/systemd/system/sqlpage.service
207-
208-
- name: Test service file
209-
run: |
210-
systemctl cat sqlpage.service || cat /lib/systemd/system/sqlpage.service
211-
212-
- name: Verify user creation
213-
run: |
214-
id sqlpage
215-
getent passwd sqlpage
194+
- name: Run DEB tests
195+
run: bash scripts/ci-test-deb.sh ./sqlpage*.deb
216196

217197
test-deb-ubuntu:
218198
name: Test DEB on Ubuntu ${{ matrix.version }}
@@ -223,28 +203,15 @@ jobs:
223203
version: ["24.04", "22.04", "20.04"]
224204
container: ubuntu:${{ matrix.version }}
225205
steps:
206+
- uses: actions/checkout@v4
207+
226208
- name: Download DEB package
227209
uses: actions/download-artifact@v4
228210
with:
229211
name: debian-package
230212

231-
- name: Install package
232-
run: |
233-
apt-get update
234-
apt-get install -y ./sqlpage*.deb
235-
236-
- name: Verify installation
237-
run: |
238-
sqlpage --version
239-
which sqlpage
240-
dpkg -l | grep sqlpage
241-
test -f /usr/bin/sqlpage
242-
test -d /etc/sqlpage
243-
test -f /etc/sqlpage/sqlpage.json
244-
245-
- name: Test service file
246-
run: |
247-
systemctl cat sqlpage.service || cat /lib/systemd/system/sqlpage.service
213+
- name: Run DEB tests
214+
run: bash scripts/ci-test-deb.sh ./sqlpage*.deb
248215

249216
test-rpm:
250217
name: Test RPM on ${{ matrix.container }}
@@ -255,18 +222,15 @@ jobs:
255222
container: [fedora:latest, rockylinux:8]
256223
container: ${{ matrix.container }}
257224
steps:
225+
- uses: actions/checkout@v4
226+
258227
- name: Download RPM package
259228
uses: actions/download-artifact@v4
260229
with:
261230
name: rpm-package
262231

263-
- name: Install package manager dependencies
264-
run: yum install -y curl sudo ./x86_64/*.rpm
265-
266-
- name: Test SQLPage functionality
267-
run: |
268-
echo "SELECT 'json' as component; SELECT 1 as it_works;" > /var/www/sqlpage/index.sql
269-
cd /var/www/sqlpage && sqlpage & sleep 2 && curl -sf http://localhost:8080/ | grep -q it_works && kill %1
232+
- name: Run RPM tests
233+
run: bash scripts/ci-test-rpm.sh ./x86_64/*.rpm
270234

271235
publish-packages:
272236
name: Publish Packages to GitHub Release

scripts/ci-test-deb.sh

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
PACKAGE_FILE=${1:-sqlpage*.deb}
5+
6+
echo "=== Installing package ==="
7+
apt-get update -qq
8+
apt-get install -y "$PACKAGE_FILE"
9+
10+
echo "=== Verifying installation ==="
11+
sqlpage --version
12+
which sqlpage
13+
dpkg -l | grep sqlpage
14+
15+
echo "=== Checking files ==="
16+
test -f /usr/bin/sqlpage
17+
test -d /etc/sqlpage
18+
test -f /etc/sqlpage/sqlpage.json
19+
test -d /etc/sqlpage/templates
20+
test -f /lib/systemd/system/sqlpage.service
21+
test -f /usr/share/man/man1/sqlpage.1.gz
22+
23+
echo "=== Verifying systemd service ==="
24+
systemctl cat sqlpage.service || cat /lib/systemd/system/sqlpage.service
25+
26+
echo "=== Verifying user ==="
27+
id sqlpage
28+
getent passwd sqlpage
29+
30+
echo "=== Testing functionality ==="
31+
echo "SELECT 'json' as component; SELECT 1 as it_works;" > /var/www/sqlpage/index.sql
32+
cd /var/www/sqlpage
33+
timeout 5 sqlpage &
34+
sleep 2
35+
curl -sf http://localhost:8080/ | grep -q it_works
36+
pkill sqlpage || true
37+
38+
echo "✓ All DEB tests passed!"

scripts/ci-test-rpm.sh

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
PACKAGE_FILE=${1:-x86_64/*.rpm}
5+
6+
echo "=== Installing package ==="
7+
if command -v dnf &> /dev/null; then
8+
dnf install -y curl $PACKAGE_FILE
9+
else
10+
yum install -y curl $PACKAGE_FILE
11+
fi
12+
13+
echo "=== Verifying installation ==="
14+
sqlpage --version
15+
which sqlpage
16+
rpm -qi sqlpage
17+
18+
echo "=== Checking files ==="
19+
test -f /usr/bin/sqlpage
20+
test -d /etc/sqlpage
21+
test -f /etc/sqlpage/sqlpage.json
22+
test -d /etc/sqlpage/templates
23+
test -f /usr/lib/systemd/system/sqlpage.service
24+
test -f /usr/share/man/man1/sqlpage.1.gz
25+
26+
echo "=== Verifying systemd service ==="
27+
systemctl cat sqlpage.service || cat /usr/lib/systemd/system/sqlpage.service
28+
29+
echo "=== Verifying user ==="
30+
id sqlpage
31+
getent passwd sqlpage
32+
33+
echo "=== Testing functionality ==="
34+
echo "SELECT 'json' as component; SELECT 1 as it_works;" > /var/www/sqlpage/index.sql
35+
cd /var/www/sqlpage
36+
timeout 5 sqlpage &
37+
sleep 2
38+
curl -sf http://localhost:8080/ | grep -q it_works
39+
pkill sqlpage || true
40+
41+
echo "✓ All RPM tests passed!"

0 commit comments

Comments
 (0)