Skip to content

chore(docs): refresh blog visual baseline after content change #3503

chore(docs): refresh blog visual baseline after content change

chore(docs): refresh blog visual baseline after content change #3503

Workflow file for this run

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