Skip to content

Commit 3d5cbb3

Browse files
committed
refactor createService
1 parent 7604223 commit 3d5cbb3

File tree

4 files changed

+25
-21
lines changed

4 files changed

+25
-21
lines changed

src/components/cloud/CreateServiceForm.tsx

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ const createGithubWebhook = async (namespace: string, service) => {
6161
auth: account.access_token,
6262
});
6363
return await ok.repos.createWebhook({
64-
owner: service.ghPackageOwner,
65-
repo: service.ghPackageRepo,
64+
owner: service.annotations["apps.deploycat.io/gh-package-owner"],
65+
repo: service.annotations["apps.deploycat.io/gh-package-repo"],
6666
config: {
6767
url: `${config?.publicurl}/api/webhooks/github/apps/${namespace}/${service.name}/package`,
6868
content_type: "json",
69-
secret: service.webhookSecret,
69+
secret: service.annotations["apps.deploycat.io/gh-webhook-secret"],
7070
},
7171
events: ["package"],
7272
active: true,
@@ -75,15 +75,10 @@ const createGithubWebhook = async (namespace: string, service) => {
7575

7676
const createServiceFromForm = async (form: FormData) => {
7777
"use server";
78+
const source = form.get("source") as string;
7879
const service = {
7980
name: form.get("name") as string,
80-
source: form.get("source") as string,
8181
image: form.get("image") as string,
82-
ghPackage: form.get("ghPackage") as string,
83-
ghPackageTag: form.get("ghPackageTag") as string,
84-
ghPackageName: form.get("ghPackageName") as string,
85-
ghPackageOwner: form.get("ghPackageOwner") as string,
86-
ghPackageRepo: form.get("ghPackageRepo") as string,
8782
port: Number(form.get("port")) as number,
8883
resources: {
8984
cpuLimit: toNumber(form.get("cpuLimit")),
@@ -94,26 +89,33 @@ const createServiceFromForm = async (form: FormData) => {
9489
maxRequests: toNumber(form.get("maxRequests")),
9590
},
9691
envVars: JSON.parse(form.get("env") as string) as { [key: string]: string },
92+
annotations: {
93+
"apps.deploycat.io/gh-package": form.get("ghPackage"),
94+
"apps.deploycat.io/gh-package-repo": form.get("ghPackageRepo"),
95+
"apps.deploycat.io/gh-package-name": form.get("ghPackageName"),
96+
"apps.deploycat.io/gh-package-owner": form.get("ghPackageOwner"),
97+
"apps.deploycat.io/gh-package-tag": form.get("ghPackageTag"),
98+
},
9799
} as Service;
98100

99101
const user = await getUser();
100-
if (service?.source === "ghcr") {
102+
if (source === "ghcr") {
101103
try {
102-
service.webhookSecret = crypto.randomBytes(16).toString("hex");
103104
await ensureGithubPullSecret(user.name);
105+
service.annotations["apps.deploycat.io/gh-webhook-secret"] = crypto
106+
.randomBytes(16)
107+
.toString("hex");
104108
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-
};
109+
service.annotations["apps.deploycat.io/gh-webhook-id"] =
110+
hook.id.toString();
109111
} catch (e) {
110112
console.error(e);
111113
}
112-
service.image = `ghcr.io/${service.ghPackageOwner}/${service.ghPackageName}:${service.ghPackageTag}`;
114+
service.image = `ghcr.io/${service.annotations["apps.deploycat.io/gh-package-owner"]}/${service.annotations["apps.deploycat.io/gh-package-name"]}:${service.annotations["apps.deploycat.io/gh-package-tag"]}`;
113115
service.pullSecret = "pull-secret-ghcr";
114116
}
115117
try {
116-
await knative.createService(service, user.name, service.source);
118+
await knative.createService(service, user.name, source);
117119
} catch (e) {
118120
console.error(e);
119121
}

src/lib/knative.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import k8s from "@kubernetes/client-node";
33
export type Service = {
44
name: string;
55
image: string;
6+
pullSecret?: string;
67
port: number;
78
resources: {
89
cpuLimit: number;
@@ -14,6 +15,7 @@ export type Service = {
1415
};
1516
envVars: { [key: string]: string };
1617
raw?: any;
18+
annotations: { [key: string]: string };
1719
};
1820

1921
export const toNumber = (value: any) => value && Number(value);
@@ -55,6 +57,7 @@ const toKnService = (service: any) =>
5557
value,
5658
]) ?? []
5759
),
60+
annotations: service.metadata.annotations,
5861
raw: service,
5962
} as Service);
6063

@@ -126,9 +129,8 @@ export class Knative {
126129
"app.kubernetes.io/managed-by": "deploycat",
127130
},
128131
annotations: {
129-
"apps.deploycat.io/webhook-secret": service.webhookSecret,
130132
"apps.deploycat.io/source": source,
131-
...(service.annotations ?? {}),
133+
...service.annotations,
132134
},
133135
},
134136
spec: {

src/routes/api/webhooks/github/apps/[namespace]/[app]/package.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export async function POST({ params, request }: APIEvent) {
88

99
const currentService = await knative.getService(app, namespace);
1010
const secret =
11-
currentService.raw.metadata.annotations["apps.deploycat.io/webhook-secret"];
11+
currentService.raw.metadata.annotations["apps.deploycat.io/gh-webhook-secret"];
1212

1313
const wh = new Webhooks({ secret });
1414
const signature = request.headers.get("x-hub-signature-256");

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const deleteServiceFromForm = async (form: FormData) => {
4949
await ok.repos.deleteWebhook({
5050
owner: user.name,
5151
repo: currentService.raw.metadata.annotations[
52-
"apps.deploycat.io/gh-repo"
52+
"apps.deploycat.io/gh-package-repo"
5353
],
5454
hook_id: Number(
5555
currentService.raw.metadata.annotations[

0 commit comments

Comments
 (0)