Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/desktop-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ jobs:
run: ${{ matrix.os == 'ubuntu-latest' && 'xvfb-run --auto-servernum npm run selftest:tunnel' || 'npm run selftest:tunnel' }}
shell: bash

- name: Install Linux packaging tools
if: matrix.os == 'ubuntu-latest'
# electron-builder's rpm target shells out to rpmbuild; ubuntu-latest
# runners do not ship it by default.
run: sudo apt-get update && sudo apt-get install -y rpm

- name: Build installers
working-directory: desktop
env:
Expand Down
2 changes: 1 addition & 1 deletion desktop/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DeepSQL Desktop

**Version 1.0.0** — first public Desktop cut (ships with DeepSQL product `v1.3.0`).
**Version 1.0.2** — first public Desktop cut (ships with DeepSQL product `v1.3.0`).

A cross-platform desktop client for a self-hosted DeepSQL server. It connects to
the VM (or bare metal) running the DeepSQL stack either **directly over TLS** or
Expand Down
8 changes: 7 additions & 1 deletion desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
{
"name": "deepsql-desktop",
"productName": "DeepSQL",
"version": "1.0.0",
"version": "1.0.2",
"private": true,
"description": "DeepSQL desktop client \u2014 connect to a self-hosted DeepSQL VM over TLS or an SSH tunnel.",
"homepage": "https://github.com/DeepSQLAI/deepsql",
"repository": {
"type": "git",
"url": "https://github.com/DeepSQLAI/deepsql.git",
"directory": "desktop"
},
"license": "Apache-2.0",
"author": {
"name": "DeepSQL",
Expand Down
26 changes: 23 additions & 3 deletions desktop/scripts/tunnel-selftest.js
Original file line number Diff line number Diff line change
Expand Up @@ -224,13 +224,23 @@ app.whenReady().then(async () => {
check('missing key file is reported clearly', keyError?.code === 'key-unreadable', keyError?.code);

// ── 5. Teardown ────────────────────────────────────────────────────────
sshServer.close();
upstream.close();
fs.rmSync(tmpDir, { recursive: true, force: true });
await closeServer(sshServer);
await closeServer(upstream);
try {
// Windows can still have Electron file handles open on userData when we
// rmSync synchronously; retry briefly so CI doesn't hang after the checks
// pass (observed as ENOTEMPTY + no exit on windows-latest).
fs.rmSync(tmpDir, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 });
} catch (err) {
process.stderr.write(`WARN: temp cleanup: ${err.message}\n`);
}

const failed = results.filter((r) => !r.ok).length;
process.stdout.write(`\n${results.length - failed}/${results.length} checks passed\n`);
app.exit(failed === 0 ? 0 : 1);
}).catch((err) => {
process.stderr.write(`${err?.stack || err}\n`);
app.exit(1);
});

function makeProfile({ keyPath, sshPort, upstreamPort }) {
Expand Down Expand Up @@ -291,6 +301,16 @@ function listen(server, port, host) {
});
}

function closeServer(server) {
return new Promise((resolve) => {
if (!server || !server.listening) {
resolve();
return;
}
server.close(() => resolve());
});
}

function portIsFree(port) {
return new Promise((resolve) => {
const socket = net.connect(port, '127.0.0.1');
Expand Down
Loading