This commit is contained in:
@@ -1,51 +0,0 @@
|
|||||||
name: CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main, master]
|
|
||||||
pull_request:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ci-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
env:
|
|
||||||
NODE_OPTIONS: '--dns-result-order=ipv4first'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 20
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Use Node.js 22
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: '22'
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
timeout-minutes: 10
|
|
||||||
env:
|
|
||||||
GIT_TERMINAL_PROMPT: '0'
|
|
||||||
npm_config_fetch_retries: '3'
|
|
||||||
npm_config_fetch_timeout: '120000'
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
git config --global url."https://github.com/".insteadOf "ssh://[email protected]/"
|
|
||||||
git config --global url."https://github.com/".insteadOf "[email protected]:"
|
|
||||||
npm install --no-audit --no-fund --loglevel=info
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
env:
|
|
||||||
SKIP_INTEGRATION: '1'
|
|
||||||
run: npm test
|
|
||||||
|
|
||||||
- name: Syntax check packaging entrypoints
|
|
||||||
run: |
|
|
||||||
node --check bin/peardata-server.mjs
|
|
||||||
node --check scripts/make.cjs
|
|
||||||
node --check scripts/bare-standalone.cjs
|
|
||||||
node --check forge.config.cjs
|
|
||||||
node --check electron/main.cjs
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
name: CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main, master]
|
|
||||||
pull_request:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ci-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
env:
|
|
||||||
NODE_OPTIONS: '--dns-result-order=ipv4first'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 20
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node: ['20', '22']
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Use Node.js ${{ matrix.node }}
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: ${{ matrix.node }}
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
git config --global url."https://github.com/".insteadOf "ssh://[email protected]/"
|
|
||||||
git config --global url."https://github.com/".insteadOf "[email protected]:"
|
|
||||||
npm install --no-audit --no-fund
|
|
||||||
|
|
||||||
- name: Unit tests
|
|
||||||
run: npm test
|
|
||||||
env:
|
|
||||||
# Integration may hang without UDP; unit suite still runs
|
|
||||||
SKIP_INTEGRATION: '0'
|
|
||||||
|
|
||||||
- name: Syntax check entrypoints
|
|
||||||
run: |
|
|
||||||
node --check server/server.js
|
|
||||||
node --check client/connection.js
|
|
||||||
node --check app.js
|
|
||||||
node --check shared/crypto-auth.js
|
|
||||||
|
|
||||||
lint-docs:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 5
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Required docs present
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
for f in \
|
|
||||||
README.md \
|
|
||||||
LICENSE \
|
|
||||||
docs/ARCHITECTURE.md \
|
|
||||||
docs/PROTOCOL.md \
|
|
||||||
docs/DATA-MODEL.md \
|
|
||||||
docs/REST-API.md \
|
|
||||||
docs/ROADMAP.md \
|
|
||||||
docs/TECH-CHOICES.md \
|
|
||||||
docs/STORAGE-HYPERDB.md \
|
|
||||||
docs/GETTING-STARTED.md \
|
|
||||||
docs/SECURITY.md \
|
|
||||||
docs/DESKTOP.md \
|
|
||||||
docs/CONFIGURATION.md \
|
|
||||||
docs/TESTING.md \
|
|
||||||
docs/CI.md \
|
|
||||||
docs/RELEASE.md \
|
|
||||||
docs/EXTENDING.md \
|
|
||||||
.env.example
|
|
||||||
do
|
|
||||||
test -f "$f" || { echo "missing $f"; exit 1; }
|
|
||||||
done
|
|
||||||
# Desktop chrome must stay documented in the HTML shell
|
|
||||||
grep -q 'pear-ctrl' index.html
|
|
||||||
grep -q 'webkit-app-region: drag' ui/styles.css
|
|
||||||
+2
-4
@@ -13,14 +13,13 @@ PearData mirrors the PearDock-style **cross-compile from one Linux runner** pipe
|
|||||||
|
|
||||||
| Workflow | Trigger | Job |
|
| Workflow | Trigger | Job |
|
||||||
|----------|---------|-----|
|
|----------|---------|-----|
|
||||||
| `.gitea/workflows/ci.yml` | push / PR / manual | install, `npm test` |
|
|
||||||
| `.gitea/workflows/release-rolling.yml` | **every** push to `main`/`master` + manual | test → build matrix → Gitea tag **`rolling`** |
|
| `.gitea/workflows/release-rolling.yml` | **every** push to `main`/`master` + manual | test → build matrix → Gitea tag **`rolling`** |
|
||||||
|
|
||||||
Rolling job (ubuntu-latest, ~180m timeout):
|
Rolling job (ubuntu-latest, ~180m timeout):
|
||||||
|
|
||||||
1. System deps for Electron packaging
|
1. System deps for Electron packaging
|
||||||
2. `npm ci --ignore-scripts` + esbuild install
|
2. `npm ci --ignore-scripts` + esbuild install
|
||||||
3. `SKIP_INTEGRATION=1 npm test`
|
3. `SKIP_INTEGRATION=1 npm test` (inside the release job)
|
||||||
4. Install vendored `tools/rcodesign` (darwin client seal-sign)
|
4. Install vendored `tools/rcodesign` (darwin client seal-sign)
|
||||||
5. `scripts/gitea-rolling-release.sh`
|
5. `scripts/gitea-rolling-release.sh`
|
||||||
- `make.cjs server` → `peardata-server-*.tar.gz`
|
- `make.cjs server` → `peardata-server-*.tar.gz`
|
||||||
@@ -35,8 +34,7 @@ Manual inputs: `skip_client`, `server_hosts`, `client_hosts`, `dry_run`.
|
|||||||
|
|
||||||
| Workflow | Trigger | Jobs |
|
| Workflow | Trigger | Jobs |
|
||||||
|----------|---------|------|
|
|----------|---------|------|
|
||||||
| `.github/workflows/ci.yml` | push / PR / manual | **test** (Node 20+22), **lint-docs** |
|
| `.github/workflows/release.yml` | `v*` tags / manual | Build matrix → GitHub Release assets |
|
||||||
| `.github/workflows/release.yml` | `v*` tags / manual | Same binary matrix → GitHub Release assets |
|
|
||||||
|
|
||||||
## Local parity
|
## Local parity
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ Desktop clients ship **QVAC** (`@qvac/sdk` + forge plugin) unless `PEARDATA_SKIP
|
|||||||
|-------|----------|---------|--------|
|
|-------|----------|---------|--------|
|
||||||
| **Gitea** | `.gitea/workflows/release-rolling.yml` | push `main`/`master` + manual | Build matrix → prerelease tag **`rolling`** |
|
| **Gitea** | `.gitea/workflows/release-rolling.yml` | push `main`/`master` + manual | Build matrix → prerelease tag **`rolling`** |
|
||||||
| **GitHub** | `.github/workflows/release.yml` | `v*` tags + manual | Same matrix → GitHub Release assets |
|
| **GitHub** | `.github/workflows/release.yml` | `v*` tags + manual | Same matrix → GitHub Release assets |
|
||||||
| Both | `.gitea/workflows/ci.yml` / `.github/workflows/ci.yml` | PR / push | Unit tests |
|
|
||||||
|
|
||||||
Rolling script: [`scripts/gitea-rolling-release.sh`](../scripts/gitea-rolling-release.sh)
|
Rolling script: [`scripts/gitea-rolling-release.sh`](../scripts/gitea-rolling-release.sh)
|
||||||
Orchestrator: [`scripts/make.cjs`](../scripts/make.cjs)
|
Orchestrator: [`scripts/make.cjs`](../scripts/make.cjs)
|
||||||
|
|||||||
+1
-1
@@ -112,7 +112,7 @@ Reports sent / received / errors. Use before release when changing session or ro
|
|||||||
|
|
||||||
## CI
|
## CI
|
||||||
|
|
||||||
GitHub CI runs `npm test` on Node 20 and 22. Gitea CI runs `npm test` on Node 22 plus a liveness `healthcheck`.
|
There is no separate test-only pipeline. Unit tests run as part of the **release** workflows (Gitea rolling / GitHub tagged release). Locally: `npm test` or `SKIP_INTEGRATION=1 npm test`.
|
||||||
|
|
||||||
See [CI.md](./CI.md).
|
See [CI.md](./CI.md).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user