Phase 4-5: build pipeline + device enrollment
Builder service (Mac mini): - Build worker: xcodebuild archive + export + fastlane signing + upload to unraid - /api/build/upload (source archive) and /api/build/git (clone) ingest paths - SSE-streamed build logs, builds list UI, live status updates - /api/devices/from-enrollment bridge endpoint (shared-secret auth) Storefront (unraid): - /enroll/ public flow: landing page, mobileconfig generator, callback parser - Forwards extracted UDIDs to the Mac mini builder for ASC registration - docker-compose.yml now passes BUILDER_URL and BUILDER_SHARED_SECRET Updated CLAUDE.md with full architecture, deploy flow, and gotchas.
This commit is contained in:
67
builder/views/build.html
Normal file
67
builder/views/build.html
Normal file
@@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>New Build - Builder</title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="header-left"><h1>🔨 Builder</h1></div>
|
||||
<nav>
|
||||
<a href="/">Builds</a>
|
||||
<a href="/build" class="active">New Build</a>
|
||||
<a href="/devices">Devices</a>
|
||||
<a href="/settings">Settings</a>
|
||||
<a href="/logout" class="logout">Logout</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<h1 class="page-title">New Build</h1>
|
||||
|
||||
<div class="section">
|
||||
<h2>From source archive</h2>
|
||||
<div class="card">
|
||||
<form id="upload-form" enctype="multipart/form-data">
|
||||
<label>Archive (.zip or .tar.gz)</label>
|
||||
<input type="file" name="source" id="source-input" accept=".zip,.tar.gz,.tgz" required>
|
||||
<label>Scheme (optional)</label>
|
||||
<input type="text" name="scheme" placeholder="leave blank to use the first scheme">
|
||||
<div class="btn-row">
|
||||
<button type="submit">Queue Build</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h2>From git URL</h2>
|
||||
<div class="card">
|
||||
<form id="git-form">
|
||||
<label>Repository URL</label>
|
||||
<input type="text" name="url" placeholder="git@gitea.treytartt.com:user/repo.git or https://…">
|
||||
<div class="field-group">
|
||||
<div>
|
||||
<label>Branch (optional)</label>
|
||||
<input type="text" name="branch" placeholder="main">
|
||||
</div>
|
||||
<div>
|
||||
<label>Scheme (optional)</label>
|
||||
<input type="text" name="scheme" placeholder="first scheme">
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-row">
|
||||
<button type="submit">Queue Build</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="toast" class="toast"></div>
|
||||
</main>
|
||||
|
||||
<script src="/js/build.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
40
builder/views/builds.html
Normal file
40
builder/views/builds.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Builds - Builder</title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="header-left"><h1>🔨 Builder</h1></div>
|
||||
<nav>
|
||||
<a href="/" class="active">Builds</a>
|
||||
<a href="/build">New Build</a>
|
||||
<a href="/devices">Devices</a>
|
||||
<a href="/settings">Settings</a>
|
||||
<a href="/logout" class="logout">Logout</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px">
|
||||
<h1 class="page-title" style="margin-bottom:0">Builds</h1>
|
||||
<a href="/build" class="btn-sm" style="background:var(--accent);color:white;padding:8px 16px;border-radius:20px;text-decoration:none;font-weight:600;font-size:14px">+ New Build</a>
|
||||
</div>
|
||||
|
||||
<div id="jobs-container"><div class="card"><p style="color:var(--text-muted)">Loading…</p></div></div>
|
||||
|
||||
<div id="detail" class="section" style="display:none">
|
||||
<h2 id="detail-title">Job details</h2>
|
||||
<div class="card">
|
||||
<div id="detail-meta" class="mono" style="font-size:12px;color:var(--text-muted);margin-bottom:12px"></div>
|
||||
<pre id="log-viewer" class="log-viewer"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="/js/builds.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user