Files
repospawner/ui/static/index.html
T
unkin-agent f1bcb8cd3a
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Add the initial repospawner service
repospawner turns JSON new-repo requests into terraform-git pull requests
via kubernetes Jobs, follows those PRs to merge and optionally activates
the repository in Woodpecker.
2026-08-30 14:33:31 +10:00

83 lines
3.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>repospawner</title>
<link rel="stylesheet" href="app.css">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ctext y='.9em' font-size='90'%3E%F0%9F%93%A6%3C/text%3E%3C/svg%3E">
</head>
<body>
<nav class="navbar">
<div class="container navbar-inner">
<span class="brand">repospawner</span>
<span class="brand-tag">new repositories, via terraform-git pull requests</span>
</div>
</nav>
<main class="container">
<section class="panel">
<div class="panel-heading"><h2>New repository</h2></div>
<div class="panel-body">
<form id="new-form" novalidate>
<div class="form-group">
<label for="f-name">Name</label>
<input class="form-control" id="f-name" name="name" autocomplete="off"
spellcheck="false" placeholder="my-service">
<p class="help">Lowercase letters, digits and dashes.</p>
<p class="field-error hidden" id="e-name"></p>
</div>
<div class="form-group">
<label for="f-description">Description</label>
<input class="form-control" id="f-description" name="description" autocomplete="off"
placeholder="What the repository is for">
<p class="field-error hidden" id="e-description"></p>
</div>
<div class="form-group">
<label for="f-checks">Required status checks</label>
<textarea class="form-control" id="f-checks" name="status_checks" rows="4"
spellcheck="false">ci/woodpecker/pr/build
ci/woodpecker/pr/test
ci/woodpecker/pr/pre-commit</textarea>
<p class="help">One context per line; these gate merges into <code>main</code>.</p>
<p class="field-error hidden" id="e-status_checks"></p>
</div>
<div class="form-group">
<label class="check"><input type="checkbox" id="f-woodpecker"> Enable in Woodpecker after the PR merges</label>
<p class="help hidden" id="wp-unavailable">No Woodpecker token is mounted, so enablement is unavailable.</p>
</div>
<button class="btn btn-primary" id="submit" type="submit">Request repository</button>
</form>
</div>
</section>
<section class="panel">
<div class="panel-heading">
<h2>Requests</h2>
<span class="muted" id="refreshed"></span>
</div>
<div class="panel-body">
<div class="table-wrap">
<table class="table">
<thead>
<tr>
<th>Name</th><th>State</th><th>Pull request</th><th>Woodpecker</th><th>Age</th>
</tr>
</thead>
<tbody id="rows"></tbody>
</table>
</div>
<p class="muted hidden" id="empty">No requests yet.</p>
</div>
</section>
</main>
<div id="toast" class="toast hidden"></div>
<script src="app.js"></script>
</body>
</html>