Skip to content

Make runtime caches opt-in #39

Make runtime caches opt-in

Make runtime caches opt-in #39

name: Test and Build
on:
pull_request:
push:
branches:
- master
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "21"
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: "22"
cache: npm
- name: Set up Clojure CLI
run: |
curl -fsSL -O https://download.clojure.org/install/linux-install-1.12.4.1602.sh
chmod +x linux-install-1.12.4.1602.sh
sudo ./linux-install-1.12.4.1602.sh
- name: Cache Clojure dependencies
uses: actions/cache@v5
with:
path: |
~/.gitlibs
~/.m2/repository
key: ${{ runner.os }}-clojure-${{ hashFiles('deps.edn') }}
restore-keys: |
${{ runner.os }}-clojure-
- name: Install frontend dependencies
run: npm ci
- name: Install Playwright Chromium
run: npx playwright install --with-deps chromium
- name: Install Caddy
run: |
sudo apt-get update
sudo apt-get install -y caddy
caddy version
- name: Download PocketBase
env:
POCKETBASE_VERSION: "0.36.6"
run: |
curl -fsSL -o /tmp/pocketbase.zip \
"https://github.com/pocketbase/pocketbase/releases/download/v${POCKETBASE_VERSION}/pocketbase_${POCKETBASE_VERSION}_linux_amd64.zip"
unzip -q /tmp/pocketbase.zip -d /tmp/pocketbase
chmod +x /tmp/pocketbase/pocketbase
- name: Initialize PocketBase superuser
env:
PB_SUPERUSER_EMAIL: admin@example.org
PB_SUPERUSER_PASSWORD: change-me
run: |
mkdir -p /tmp/pb_ci_data
/tmp/pocketbase/pocketbase superuser create "$PB_SUPERUSER_EMAIL" "$PB_SUPERUSER_PASSWORD" --dir /tmp/pb_ci_data || \
/tmp/pocketbase/pocketbase superuser upsert "$PB_SUPERUSER_EMAIL" "$PB_SUPERUSER_PASSWORD" --dir /tmp/pb_ci_data
- name: Start PocketBase
run: |
/tmp/pocketbase/pocketbase serve \
--http 127.0.0.1:8090 \
--dir /tmp/pb_ci_data \
>/tmp/pocketbase.log 2>&1 &
echo $! > /tmp/pocketbase.pid
- name: Wait for PocketBase health
run: |
for _ in $(seq 1 30); do
if curl -fsS http://127.0.0.1:8090/api/health >/dev/null; then
exit 0
fi
sleep 1
done
cat /tmp/pocketbase.log
exit 1
- name: Initialize PocketBase users collection
env:
AGILADMIN_CONF: doc/agiladmin.pocketbase.yaml
run: clojure -M -m agiladmin.pocketbase-init
- name: Run tests
run: make test CLOJURE=clojure
# Keep browser regressions separate from live PocketBase integration noise.
- name: Run Playwright E2E tests
run: npm run test:e2e
- name: Run Caddy Playwright E2E tests
run: |
npm run test:e2e:caddy
npm run test:e2e:caddy:base-path
- name: Run PocketBase integration tests
env:
AGILADMIN_PB_IT: "1"
AGILADMIN_PB_BASE_URL: http://127.0.0.1:8090
AGILADMIN_PB_SUPERUSER_EMAIL: admin@example.org
AGILADMIN_PB_SUPERUSER_PASSWORD: change-me
AGILADMIN_PB_IT_USER_EMAIL: agiladmin-it@example.org
AGILADMIN_PB_IT_USER_PASSWORD: agiladmin-it-secret
run: make test-pocketbase-integration CLOJURE=clojure
- name: Build uberjar
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: make build CLOJURE=clojure
- name: Print PocketBase log on failure
if: failure()
run: |
test -f /tmp/pocketbase.log && cat /tmp/pocketbase.log || true
- name: Upload Playwright artifacts on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: playwright-artifacts
path: |
test-results
playwright-report
.tmp/agiladmin-e2e-state.json
output/playwright/agiladmin-server.log