-
-
Notifications
You must be signed in to change notification settings - Fork 108
198 lines (172 loc) · 6.44 KB
/
Copy pathpr.yml
File metadata and controls
198 lines (172 loc) · 6.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
name: Wheels Pull Requests
on:
pull_request:
branches:
- develop
types: [opened, edited, synchronize, reopened]
permissions:
contents: read
checks: write
jobs:
commitlint:
name: Validate Commit Messages
runs-on: ubuntu-latest
env:
PR_TITLE: ${{ github.event.pull_request.title }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: '20'
- run: npm ci
- name: Validate PR title
run: echo "$PR_TITLE" | npx commitlint --verbose
fast-test:
name: "Lucee 7 + SQLite (LuCLI)"
if: github.event.action != 'edited'
runs-on: ubuntu-latest
env:
LUCLI_VERSION: "0.3.7"
WHEELS_CI: "true"
WHEELS_BROWSER_TEST_BASE_URL: "http://localhost:60007"
WHEELS_BROWSER_CI_ENABLE: "true"
steps:
- uses: actions/checkout@v5
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Install LuCLI
run: |
curl -sL "https://github.com/cybersonic/LuCLI/releases/download/v${LUCLI_VERSION}/lucli-${LUCLI_VERSION}-linux" \
-o /usr/local/bin/lucli
chmod +x /usr/local/bin/lucli
lucli --version
- name: Create test databases
run: |
sudo apt-get update -y && sudo apt-get install -y --no-install-recommends sqlite3
sqlite3 wheelstestdb.db "SELECT 1;"
sqlite3 wheelstestdb_tenant_b.db "SELECT 1;"
- name: Cache Playwright
id: playwright-cache
uses: actions/cache@v5
with:
path: |
~/.wheels/browser/lib
~/.cache/ms-playwright
key: playwright-${{ hashFiles('vendor/wheels/browser-manifest.json') }}
restore-keys: |
playwright-
- name: Install Playwright
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: |
mkdir -p ~/.wheels/browser/lib
# Download JARs from manifest
for row in $(jq -c '.classpath[]' vendor/wheels/browser-manifest.json); do
URL=$(echo "$row" | jq -r '.url')
FILE=$(echo "$row" | jq -r '.filename')
SHA=$(echo "$row" | jq -r '.sha256')
echo "Downloading ${FILE}..."
curl -sL "$URL" -o ~/.wheels/browser/lib/"$FILE"
ACTUAL=$(sha256sum ~/.wheels/browser/lib/"$FILE" | cut -d' ' -f1)
if [ "$ACTUAL" != "$SHA" ]; then
echo "::error::SHA-256 mismatch for ${FILE}: expected ${SHA}, got ${ACTUAL}"
exit 1
fi
done
# Build classpath and install Chromium + system deps
CP=$(ls ~/.wheels/browser/lib/*.jar | tr '\n' ':')
java -cp "$CP" com.microsoft.playwright.CLI install --with-deps chromium
- name: Download SQLite JDBC driver
run: |
curl -sL "https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.50.3.0/sqlite-jdbc-3.50.3.0.jar" \
-o /tmp/sqlite-jdbc.jar
- name: Start Lucee server
run: |
cp tools/ci/lucee.ci.json lucee.json
# Start server (downloads Lucee Express on first run)
nohup lucli server run --port=60007 > /tmp/lucli-server.log 2>&1 &
echo $! > /tmp/lucli-server.pid
echo "Waiting for Lucee to start..."
for i in $(seq 1 120); do
if curl -s -o /dev/null --connect-timeout 2 --max-time 3 "http://localhost:60007/" 2>/dev/null; then
echo "Lucee is up (attempt ${i})"
break
fi
if ! kill -0 $(cat /tmp/lucli-server.pid) 2>/dev/null; then
echo "::error::LuCLI server process died"
cat /tmp/lucli-server.log
exit 1
fi
sleep 2
done
- name: Install SQLite JDBC into Lucee
run: |
# Find where LuCLI placed the Lucee Express lib directory
LUCEE_LIB=$(find ~/.lucli/express -path "*/lib/ext" -type d 2>/dev/null | head -1)
if [ -z "$LUCEE_LIB" ]; then
LUCEE_LIB=$(find ~/.lucli/express -maxdepth 2 -name "lib" -type d 2>/dev/null | head -1)
fi
if [ -n "$LUCEE_LIB" ]; then
cp /tmp/sqlite-jdbc.jar "$LUCEE_LIB/"
echo "SQLite JDBC installed to: $LUCEE_LIB"
else
echo "::error::Could not find Lucee lib directory"
find ~/.lucli/express -type d | head -20
exit 1
fi
# Stop server fully and restart to pick up the new JDBC driver
kill $(cat /tmp/lucli-server.pid) 2>/dev/null || true
lucli server stop 2>/dev/null || true
# Wait for port to be freed
for i in $(seq 1 15); do
if ! curl -s -o /dev/null --connect-timeout 1 "http://localhost:60007/" 2>/dev/null; then
break
fi
sleep 1
done
# Also kill any lingering java processes on the port
fuser -k 60007/tcp 2>/dev/null || true
sleep 2
nohup lucli server run --port=60007 --force > /tmp/lucli-server.log 2>&1 &
echo $! > /tmp/lucli-server.pid
echo "Waiting for Lucee to restart..."
for i in $(seq 1 60); do
if curl -s -o /dev/null --connect-timeout 2 --max-time 3 "http://localhost:60007/" 2>/dev/null; then
echo "Lucee restarted with SQLite JDBC"
break
fi
sleep 2
done
- name: Run tests
run: |
mkdir -p /tmp/test-results /tmp/junit-results
PORT=60007 \
RESULT_DIR=/tmp/test-results \
JUNIT_DIR=/tmp/junit-results \
bash tools/ci/run-tests.sh
- name: Upload test results
if: always()
uses: actions/upload-artifact@v6
with:
name: test-results-lucee7-sqlite
path: /tmp/test-results/
if-no-files-found: warn
- name: Upload JUnit results
if: always()
uses: actions/upload-artifact@v6
with:
name: junit-lucee7-sqlite
path: /tmp/junit-results/
if-no-files-found: warn
- name: Debug server logs
if: failure()
run: cat /tmp/lucli-server.log 2>/dev/null || true
- name: Stop server
if: always()
run: |
if [ -f /tmp/lucli-server.pid ]; then
kill $(cat /tmp/lucli-server.pid) 2>/dev/null || true
fi
lucli server stop 2>/dev/null || true