236 lines
10 KiB
HTML
236 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
<title>Releases · PearDock Docs</title>
|
|
<meta name="description" content="PearDock release process: host matrix, bare-standalone, electron-forge, rolling CI." />
|
|
<meta name="keywords" content="PearDock releases, CI, bare-standalone, electron-forge" />
|
|
<meta name="author" content="HoneyPeer, LLC" />
|
|
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
|
|
<meta name="googlebot" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
|
|
<meta name="theme-color" content="#2dd4bf" />
|
|
<meta name="color-scheme" content="dark light" />
|
|
<meta name="application-name" content="PearDock" />
|
|
<meta name="apple-mobile-web-app-title" content="PearDock" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
<meta name="msapplication-TileColor" content="#2dd4bf" />
|
|
<meta name="msapplication-config" content="/assets/favicons/browserconfig.xml" />
|
|
<meta name="format-detection" content="telephone=no" />
|
|
<link rel="canonical" href="https://peardock.boats/docs/release" />
|
|
<link rel="alternate" hreflang="en" href="https://peardock.boats/docs/release" />
|
|
<link rel="alternate" hreflang="x-default" href="https://peardock.boats/docs/release" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:type" content="article" />
|
|
<meta property="og:site_name" content="PearDock" />
|
|
<meta property="og:locale" content="en_US" />
|
|
<meta property="og:url" content="https://peardock.boats/docs/release" />
|
|
<meta property="og:title" content="Releases · PearDock Docs" />
|
|
<meta property="og:description" content="PearDock release process: host matrix, bare-standalone, electron-forge, rolling CI." />
|
|
<meta property="og:image" content="https://peardock.boats/assets/brand/og-image.png" />
|
|
<meta property="og:image:secure_url" content="https://peardock.boats/assets/brand/og-image.png" />
|
|
<meta property="og:image:type" content="image/png" />
|
|
<meta property="og:image:width" content="1200" />
|
|
<meta property="og:image:height" content="630" />
|
|
<meta property="og:image:alt" content="PearDock: decentralized Docker management on HyperDHT" />
|
|
|
|
<!-- Twitter / X -->
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content="Releases · PearDock Docs" />
|
|
<meta name="twitter:description" content="PearDock release process: host matrix, bare-standalone, electron-forge, rolling CI." />
|
|
<meta name="twitter:image" content="https://peardock.boats/assets/brand/twitter-card.png" />
|
|
<meta name="twitter:image:alt" content="PearDock: decentralized Docker management" />
|
|
|
|
<!-- Icons & PWA -->
|
|
<link rel="icon" href="/assets/favicons/favicon.ico" sizes="any" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicons/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicons/favicon-16x16.png" />
|
|
<link rel="icon" type="image/png" sizes="48x48" href="/assets/favicons/favicon-48x48.png" />
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicons/apple-touch-icon.png" />
|
|
<link rel="manifest" href="/assets/favicons/site.webmanifest" />
|
|
<link rel="mask-icon" href="/assets/logo/peardock-wordmark.svg" color="#2dd4bf" />
|
|
|
|
<!-- Article -->
|
|
<meta property="article:section" content="Documentation" />
|
|
<meta property="article:author" content="HoneyPeer, LLC" />
|
|
<meta property="article:publisher" content="HoneyPeer, LLC" />
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": [
|
|
"WebPage",
|
|
"TechArticle"
|
|
],
|
|
"name": "Releases \u00b7 PearDock Docs",
|
|
"description": "PearDock release process: host matrix, bare-standalone, electron-forge, rolling CI.",
|
|
"url": "https://peardock.boats/docs/release",
|
|
"isPartOf": {
|
|
"@type": "WebSite",
|
|
"name": "PearDock",
|
|
"url": "https://peardock.boats"
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "HoneyPeer, LLC",
|
|
"url": "https://peardock.boats"
|
|
},
|
|
"inLanguage": "en-US",
|
|
"primaryImageOfPage": {
|
|
"@type": "ImageObject",
|
|
"url": "https://peardock.boats/assets/brand/og-image.png",
|
|
"width": 1200,
|
|
"height": 630
|
|
},
|
|
"headline": "Releases \u00b7 PearDock Docs"
|
|
}
|
|
</script>
|
|
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
<link rel="stylesheet" href="/src/styles/global.css" />
|
|
<link rel="stylesheet" href="/src/styles/docs.css" />
|
|
</head>
|
|
<body>
|
|
<div class="bg-mesh" aria-hidden="true"></div>
|
|
<div data-nav data-prefix="../"></div>
|
|
|
|
<div class="docs-layout">
|
|
<aside class="docs-sidebar" data-docs-nav data-prefix="../"></aside>
|
|
<button type="button" class="docs-sidebar-toggle" aria-label="Docs menu">☰</button>
|
|
|
|
<article class="docs-main">
|
|
<h1>Releases</h1>
|
|
<p class="docs-lead">How PearDock binaries are built, signed, and published for all 64-bit hosts.</p>
|
|
|
|
<h2>Host matrix</h2>
|
|
<p>No 32-bit (<code>ia32</code> / <code>armv7</code>) builds.</p>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Host</th><th>Server (Bare)</th><th>Client (Electron)</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td><code>linux-x64</code></td><td>✅</td><td>✅</td></tr>
|
|
<tr><td><code>linux-arm64</code></td><td>✅</td><td>✅</td></tr>
|
|
<tr><td><code>darwin-x64</code></td><td>✅</td><td>✅ (ad-hoc from Linux CI)</td></tr>
|
|
<tr><td><code>darwin-arm64</code></td><td>✅</td><td>✅ (ad-hoc from Linux CI)</td></tr>
|
|
<tr><td><code>win32-x64</code></td><td>✅</td><td>✅</td></tr>
|
|
<tr><td><code>win32-arm64</code></td><td>✅</td><td>✅</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p>Canonical list: <code>scripts/hosts.cjs</code> → <code>ALL_64</code>.</p>
|
|
|
|
<h2>Builders</h2>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Artifact</th><th>Tooling</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><strong>peardock-server</strong></td>
|
|
<td><code>scripts/bare-standalone.cjs</code> (bare-pack + bare-runtime prebuild embed)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>peardock-client</strong></td>
|
|
<td>esbuild → <code>electron/app.bundle.cjs</code>, then electron-forge package</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<h2>Local builds</h2>
|
|
<pre><code>npm ci
|
|
|
|
# All 64-bit server + client hosts (same as CI)
|
|
npm run make
|
|
|
|
# Server only / client only
|
|
npm run make:server
|
|
npm run make:client
|
|
|
|
# Single host
|
|
npm run make:server:linux-x64
|
|
npm run make:client:darwin-arm64</code></pre>
|
|
<p>Outputs:</p>
|
|
<pre><code>out/peardock-server-<host>/peardock-server[.exe]
|
|
out/peardock-<platform>-<arch>/ # e.g. peardock.app on macOS</code></pre>
|
|
<pre><code>PEARDOCK_SERVER_HOSTS=linux-x64,win32-x64 \
|
|
PEARDOCK_CLIENT_HOSTS=darwin-arm64,linux-x64 \
|
|
npm run make</code></pre>
|
|
|
|
<h2>Asset naming</h2>
|
|
<p>Published under tag <strong>rolling</strong>:</p>
|
|
<pre><code>peardock-server-VERSION-HOST.tar.gz
|
|
peardock-server-VERSION-HOST.tar.gz.sha256
|
|
peardock-client-VERSION-HOST.tar.gz
|
|
peardock-client-VERSION-HOST.tar.gz.sha256
|
|
|
|
# HOST examples: linux-x64, darwin-arm64, win32-x64
|
|
# Example: peardock-server-2.0.1-linux-x64.tar.gz</code></pre>
|
|
<p>
|
|
The one-line installer resolves <code>VERSION</code> from the release API (or
|
|
<code>PEARDOCK_VERSION</code>) and downloads the matching host triple.
|
|
</p>
|
|
|
|
<h2>Gitea CI rolling release</h2>
|
|
<p>Workflow: <code>.gitea/workflows/release-rolling.yml</code><br />
|
|
Script: <code>scripts/gitea-rolling-release.sh</code></p>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Secret</th><th>Purpose</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td><code>RELEASE_TOKEN</code></td><td>Gitea PAT with release write</td></tr>
|
|
<tr><td><code>GITEA_URL</code></td><td>Optional forge base URL</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p>On every push to <code>main</code> (and <code>workflow_dispatch</code>), Ubuntu CI:</p>
|
|
<ol>
|
|
<li>Installs deps (lifecycle scripts skipped for hang safety)</li>
|
|
<li>Installs vendored <code>rcodesign</code> for macOS ad-hoc signing</li>
|
|
<li>Cross-builds all six server hosts</li>
|
|
<li>Cross-packages all six Electron clients (target prebuilds only)</li>
|
|
<li>Stages tarballs + SHA-256 under <code>dist/release/</code></li>
|
|
<li>Recreates tag/release <strong>rolling</strong> and uploads assets</li>
|
|
</ol>
|
|
<pre><code>DRY_RUN=1 bash scripts/gitea-rolling-release.sh</code></pre>
|
|
<p>
|
|
Install / upgrade production hosts:
|
|
<code>curl -fsSL https://install.peardock.boats | bash -s -- --server --yes</code>
|
|
Live asset list: <a href="/releases">peardock.boats/releases</a>
|
|
(proxied from
|
|
<a href="https://git.ssh.surf/snxraven/peardock/releases" target="_blank" rel="noopener">Gitea</a>).
|
|
</p>
|
|
|
|
<h2>Notes</h2>
|
|
<ul>
|
|
<li><strong>macOS clients</strong> are ad-hoc codesigned after package so Gatekeeper does not show “damaged”. Re-sign: <code>npm run sign:macos -- out/peardock-darwin-arm64/peardock.app</code></li>
|
|
<li><strong>Native modules</strong> ship prebuilds per target; rebuild-from-source is disabled for cross packages.</li>
|
|
<li><strong>Server</strong> cross-compile uses bare-runtime platform prebuilds (no Docker-in-Docker required to build).</li>
|
|
</ul>
|
|
|
|
<h2>Checksums & SBOM</h2>
|
|
<pre><code>./scripts/release-checksums.sh dist/
|
|
# SBOM notes: docs/SBOM.md in the main repo
|
|
npx @cyclonedx/cyclonedx-npm --output-file peardock-sbom.json</code></pre>
|
|
|
|
<div class="docs-pager">
|
|
<a href="/docs/api"><span>Previous</span><strong>← RPC & API</strong></a>
|
|
<a class="next" href="/docs/faq"><span>Next</span><strong>FAQ →</strong></a>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
|
|
<div data-footer data-prefix="../"></div>
|
|
<script type="module" src="/src/js/site.js"></script>
|
|
</body>
|
|
</html>
|