Skip to content

Commit 7604223

Browse files
committed
delete webhook on service deletion
1 parent b6baa86 commit 7604223

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

src/components/cloud/CreateServiceForm.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const createGithubWebhook = async (namespace: string, service) => {
6060
const ok = new Octokit({
6161
auth: account.access_token,
6262
});
63-
ok.repos.createWebhook({
63+
return await ok.repos.createWebhook({
6464
owner: service.ghPackageOwner,
6565
repo: service.ghPackageRepo,
6666
config: {
@@ -101,7 +101,11 @@ const createServiceFromForm = async (form: FormData) => {
101101
try {
102102
service.webhookSecret = crypto.randomBytes(16).toString("hex");
103103
await ensureGithubPullSecret(user.name);
104-
await createGithubWebhook(user.name, service);
104+
const { data: hook } = await createGithubWebhook(user.name, service);
105+
service.annotations = {
106+
"apps.deploycat.io/gh-webhook-id": hook.id.toString(),
107+
"apps.deploycat.io/gh-repo": service.ghPackageRepo,
108+
};
105109
} catch (e) {
106110
console.error(e);
107111
}

src/lib/knative.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export class Knative {
128128
annotations: {
129129
"apps.deploycat.io/webhook-secret": service.webhookSecret,
130130
"apps.deploycat.io/source": source,
131+
...(service.annotations ?? {}),
131132
},
132133
},
133134
spec: {

src/routes/cloud/apps/[app].tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import { rangeQuery } from "~/lib/prometheus";
1818
import { CheckBadgeIcon } from "@deploy-cat/heroicons-solid/24/solid/esm";
1919
import { StatusBadge } from "~/components/cloud/service/StatusBadge";
2020
import type { Service as KnativeService } from "~/lib/knative";
21+
import { getAccount } from "~/lib/auth";
22+
import { Octokit } from "@octokit/rest";
2123

2224
const getService = cache(async (app: string) => {
2325
"use server";
@@ -35,6 +37,27 @@ const deleteServiceFromForm = async (form: FormData) => {
3537
name: form.get("name") as string,
3638
};
3739
const user = await getUser();
40+
const currentService = await knative.getService(service.name, user.name);
41+
if (
42+
currentService.raw.metadata?.annotations["apps.deploycat.io/source"] ===
43+
"ghcr"
44+
) {
45+
const account = await getAccount();
46+
const ok = new Octokit({
47+
auth: account.access_token,
48+
});
49+
await ok.repos.deleteWebhook({
50+
owner: user.name,
51+
repo: currentService.raw.metadata.annotations[
52+
"apps.deploycat.io/gh-repo"
53+
],
54+
hook_id: Number(
55+
currentService.raw.metadata.annotations[
56+
"apps.deploycat.io/gh-webhook-id"
57+
]
58+
),
59+
});
60+
}
3861
await knative.deleteService(service.name, user.name);
3962
throw redirect("/cloud/apps");
4063
};

0 commit comments

Comments
 (0)