Attributes
Includes Deno configuration
Repository
Current version released
3 weeks ago
Dependencies
std
ghact
A framework to act on any (new) file in a Github repository
This provides a GHActServer class which:
- listens for github webhooks (
POSTrequests) from the configured source repo - processes the changed files in a webworker set-up using the
GHActWorkerclass
The server also exposes the follwing paths:
/status: Serves a Badge (svg) to show the current service status/workdir/jobs/: List of runs/workdir/jobs/[id]/status.json: Status of run with that id/workdir/jobs/[id]/log.txt: Log of run with that id/update?from=[from-commit-id]&till=[till-commit-id]: send aPOSThere to update all files modified since from-commit-id up till-commit-id or HEAD if not specified/full_update: send aPOSThere to run the full_update script. Note that this will not delete any files (yet).
Usage / Documentation
Documentation is available on deno.land.
Example Usage
main.ts:
import { GHActServer, type Config } from "ghact/mod.ts";
const config: Config = { ... };
// worker must be in separate file, use GHActWorker there
const worker = new Worker(import.meta.resolve("./worker.ts"), { type: "module" });
const server = new GHActServer(worker, config);
await server.serve(); // defaults to port 4505worker.ts:
/// <reference lib="webworker" />
import { GHActWorker, type Config, type Job } from "ghact/mod.ts";
const config: Config = { ... };
new GHActWorker(self, config, (job: Job, log) => {
log(`Proudly executing ${JSON.stringify(job, undefined, 2)}`);
});See also the example folder.