summaryrefslogtreecommitdiff
path: root/hooks
diff options
context:
space:
mode:
authorElizabeth <lizhunt@amazon.com>2025-05-28 15:05:38 -0700
committerElizabeth <lizhunt@amazon.com>2025-05-28 15:05:38 -0700
commit3005cc83e605fb89b079cf0e6fd0ec95cd27b30e (patch)
tree992c5933f2ec4a75e32469ddd772c61dbcb2e2fd /hooks
parente3cf820b07e282221502cf2f116c9780b7375e0e (diff)
downloadci-3005cc83e605fb89b079cf0e6fd0ec95cd27b30e.tar.gz
ci-3005cc83e605fb89b079cf0e6fd0ec95cd27b30e.zip
Run prettier, add zed settings
Diffstat (limited to 'hooks')
-rw-r--r--hooks/server/ci.ts15
-rw-r--r--hooks/server/health.ts9
-rw-r--r--hooks/server/job/activity.ts72
-rw-r--r--hooks/server/job/queuer.ts48
4 files changed, 83 insertions, 61 deletions
diff --git a/hooks/server/ci.ts b/hooks/server/ci.ts
index 8f06124..4f0d7ba 100644
--- a/hooks/server/ci.ts
+++ b/hooks/server/ci.ts
@@ -24,15 +24,16 @@ export class CiHookServer {
healthCheck: HealthChecker = _healthCheck,
jobQueuer: IJobQueuer<ITraceable<Job, ServerTrace>> = new LaminarJobQueuer(
getRequiredEnv("LAMINAR_URL").fold((err, val) =>
- err ? "https://ci.liz.coffee" : val
+ err ? "https://ci.liz.coffee" : val,
),
),
- private readonly healthCheckActivity: IHealthCheckActivity =
- new HealthCheckActivityImpl(healthCheck),
- private readonly jobHookActivity: IJobHookActivity =
- new JobHookActivityImpl(jobQueuer),
- private readonly fourOhFourActivity: IFourOhFourActivity =
- new FourOhFourActivityImpl(),
+ private readonly healthCheckActivity: IHealthCheckActivity = new HealthCheckActivityImpl(
+ healthCheck,
+ ),
+ private readonly jobHookActivity: IJobHookActivity = new JobHookActivityImpl(
+ jobQueuer,
+ ),
+ private readonly fourOhFourActivity: IFourOhFourActivity = new FourOhFourActivityImpl(),
) {}
private route(req: ITraceable<PenguenoRequest, ServerTrace>) {
diff --git a/hooks/server/health.ts b/hooks/server/health.ts
index 2f67aa4..1acc074 100644
--- a/hooks/server/health.ts
+++ b/hooks/server/health.ts
@@ -13,13 +13,16 @@ import {
export const healthCheck: HealthChecker = (
input: ITraceable<HealthCheckInput, ServerTrace>,
): Promise<IEither<Error, HealthCheckOutput>> =>
- input.bimap(TraceUtil.withFunctionTrace(healthCheck))
+ input
+ .bimap(TraceUtil.withFunctionTrace(healthCheck))
.move(getRequiredEnv("LAMINAR_HOST"))
// ensure LAMINAR_HOST is propagated to getStdout for other procedures
.map((e) => e.get().moveRight(["laminarc", "show-jobs"]))
.map((i) =>
- i.get().mapRight(i.move.apply)
+ i
+ .get()
+ .mapRight(i.move.apply)
.flatMapAsync(getStdout.apply)
- .then((gotJobs) => gotJobs.moveRight(HealthCheckOutput.YAASSSLAYQUEEN))
+ .then((gotJobs) => gotJobs.moveRight(HealthCheckOutput.YAASSSLAYQUEEN)),
)
.get();
diff --git a/hooks/server/job/activity.ts b/hooks/server/job/activity.ts
index 14ea459..173cedf 100644
--- a/hooks/server/job/activity.ts
+++ b/hooks/server/job/activity.ts
@@ -22,7 +22,8 @@ const wellFormedJobMetric = Metric.fromName("Job.WellFormed");
const jobJsonTransformer = (
j: ITraceable<unknown, ServerTrace>,
): IEither<PenguenoError, Job> =>
- j.bimap(TraceUtil.withMetricTrace(wellFormedJobMetric))
+ j
+ .bimap(TraceUtil.withMetricTrace(wellFormedJobMetric))
.map((tJson) => {
if (!isJob(tJson) || !validateExecutionEntries(tJson)) {
const err = "seems like a pwetty mawfomed job \\(-.-)/";
@@ -33,10 +34,12 @@ const jobJsonTransformer = (
})
.peek((tJob) =>
tJob.trace.trace(
- tJob.get().fold((err) =>
- err ? wellFormedJobMetric.failure : wellFormedJobMetric.success
- ),
- )
+ tJob
+ .get()
+ .fold((err) =>
+ err ? wellFormedJobMetric.failure : wellFormedJobMetric.success,
+ ),
+ ),
)
.get();
@@ -51,18 +54,19 @@ export class JobHookActivityImpl implements IJobHookActivity {
) {}
private trace(r: ITraceable<PenguenoRequest, ServerTrace>) {
- return r.bimap(TraceUtil.withClassTrace(this))
- .bimap(
- TraceUtil.withMetricTrace(jobHookRequestMetric),
- );
+ return r
+ .bimap(TraceUtil.withClassTrace(this))
+ .bimap(TraceUtil.withMetricTrace(jobHookRequestMetric));
}
public processHook(r: ITraceable<PenguenoRequest, ServerTrace>) {
- return this.trace(r).map(jsonModel(jobJsonTransformer))
+ return this.trace(r)
+ .map(jsonModel(jobJsonTransformer))
.map(async (tEitherJobJson) => {
const eitherJob = await tEitherJobJson.get();
return eitherJob.flatMapAsync(async (job) => {
- const eitherQueued = await tEitherJobJson.move(job)
+ const eitherQueued = await tEitherJobJson
+ .move(job)
.map(this.queuer.queue)
.get();
return eitherQueued.mapLeft((e) => new PenguenoError(e.message, 500));
@@ -70,29 +74,35 @@ export class JobHookActivityImpl implements IJobHookActivity {
})
.peek(
TraceUtil.promiseify((tJob) =>
- tJob.get().fold(
- (err: PenguenoError | undefined, _val: string | undefined) => {
- if (!err) {
- tJob.trace.trace(jobHookRequestMetric.success);
- tJob.trace.trace(`all queued up and weady to go :D !! ${_val}`);
- return;
- }
- tJob.trace.trace(
- err.source === ErrorSource.SYSTEM
- ? jobHookRequestMetric.failure
- : jobHookRequestMetric.warn,
- );
- tJob.trace.addTrace(err.source).trace(`${err}`);
- },
- )
+ tJob
+ .get()
+ .fold(
+ (err: PenguenoError | undefined, _val: string | undefined) => {
+ if (!err) {
+ tJob.trace.trace(jobHookRequestMetric.success);
+ tJob.trace.trace(
+ `all queued up and weady to go :D !! ${_val}`,
+ );
+ return;
+ }
+ tJob.trace.trace(
+ err.source === ErrorSource.SYSTEM
+ ? jobHookRequestMetric.failure
+ : jobHookRequestMetric.warn,
+ );
+ tJob.trace.addTrace(err.source).trace(`${err}`);
+ },
+ ),
),
)
.map(
- TraceUtil.promiseify((tEitherQueuedJob) =>
- new JsonResponse(r, tEitherQueuedJob.get(), {
- status: tEitherQueuedJob.get()
- .fold(({ status }, _val) => _val ? 200 : status),
- })
+ TraceUtil.promiseify(
+ (tEitherQueuedJob) =>
+ new JsonResponse(r, tEitherQueuedJob.get(), {
+ status: tEitherQueuedJob
+ .get()
+ .fold(({ status }, _val) => (_val ? 200 : status)),
+ }),
),
)
.get();
diff --git a/hooks/server/job/queuer.ts b/hooks/server/job/queuer.ts
index 6094183..069cca4 100644
--- a/hooks/server/job/queuer.ts
+++ b/hooks/server/job/queuer.ts
@@ -18,15 +18,14 @@ export interface IJobQueuer<TJob> {
}
export class LaminarJobQueuer
- implements IJobQueuer<ITraceable<Job, ServerTrace>> {
- constructor(
- private readonly queuePositionPrefix: string,
- ) {}
+ implements IJobQueuer<ITraceable<Job, ServerTrace>>
+{
+ constructor(private readonly queuePositionPrefix: string) {}
private static GetJobTypeTrace = (jobType: string) =>
`LaminarJobQueue.Queue.${jobType}`;
private static JobTypeMetrics = memoize((jobType: string) =>
- Metric.fromName(LaminarJobQueuer.GetJobTypeTrace(jobType))
+ Metric.fromName(LaminarJobQueuer.GetJobTypeTrace(jobType)),
);
public queue(j: ITraceable<Job, ServerTrace>) {
@@ -50,29 +49,38 @@ export class LaminarJobQueuer
.peek((c) =>
c.trace.trace(
`im so excited to see how this queue job will end!! (>ᴗ<): ${c.get().toString()}`,
- )
+ ),
)
.map(getStdout)
.peek(
TraceUtil.promiseify((q) =>
q.trace.trace(
- q.get().fold((err, _val) => err ? metric.failure : metric.success),
- )
+ q
+ .get()
+ .fold((err, _val) => (err ? metric.failure : metric.success)),
+ ),
),
)
- .map(TraceUtil.promiseify((q) =>
- q.get().mapRight((stdout) => {
- q.trace.addTrace(LogLevel.DEBUG).trace(`stdout ${stdout}`);
- const [jobName, jobId] = stdout.split(":");
- const jobUrl = `${this.queuePositionPrefix}/jobs/${jobName}/${jobId}`;
+ .map(
+ TraceUtil.promiseify((q) =>
+ q
+ .get()
+ .mapRight((stdout) => {
+ q.trace.addTrace(LogLevel.DEBUG).trace(`stdout ${stdout}`);
+ const [jobName, jobId] = stdout.split(":");
+ const jobUrl = `${this.queuePositionPrefix}/jobs/${jobName}/${jobId}`;
- q.trace.trace(`all queued up and weady to go~ (˘ω˘) => ${jobUrl}`);
- return jobUrl;
- }).mapLeft((err) => {
- q.trace.addTrace(LogLevel.ERROR).trace(err.toString());
- return err;
- })
- ))
+ q.trace.trace(
+ `all queued up and weady to go~ (˘ω˘) => ${jobUrl}`,
+ );
+ return jobUrl;
+ })
+ .mapLeft((err) => {
+ q.trace.addTrace(LogLevel.ERROR).trace(err.toString());
+ return err;
+ }),
+ ),
+ )
.get();
}
}