diff --git a/package.json b/package.json index 3964bd7ac..ac318b2ad 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@prisma/client": "3.11.1", "@sentry/node": "6.19.6", "bcryptjs": "^2.4.3", - "bullmq": "1.79.0", + "bullmq": "1.80.0", "compare-versions": "4.1.3", "cookie": "0.4.2", "cuid": "2.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5577cc3fa..66d7c480f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ specifiers: '@prisma/client': 3.11.1 '@sentry/node': 6.19.6 '@sveltejs/adapter-node': 1.0.0-next.73 - '@sveltejs/kit': 1.0.0-next.310 + '@sveltejs/kit': 1.0.0-next.303 '@types/js-cookie': 3.0.1 '@types/js-yaml': 4.0.5 '@types/node': 17.0.23 @@ -15,7 +15,7 @@ specifiers: '@zerodevx/svelte-toast': 0.7.1 autoprefixer: 10.4.4 bcryptjs: ^2.4.3 - bullmq: 1.79.0 + bullmq: 1.78.1 compare-versions: 4.1.3 cookie: 0.4.2 cross-env: 7.0.3 @@ -60,7 +60,7 @@ dependencies: '@prisma/client': 3.11.1_prisma@3.11.1 '@sentry/node': 6.19.6 bcryptjs: 2.4.3 - bullmq: 1.79.0 + bullmq: 1.78.1 compare-versions: 4.1.3 cookie: 0.4.2 cuid: 2.1.8 @@ -82,7 +82,7 @@ dependencies: devDependencies: '@sveltejs/adapter-node': 1.0.0-next.73 - '@sveltejs/kit': 1.0.0-next.310_svelte@3.47.0 + '@sveltejs/kit': 1.0.0-next.303_svelte@3.47.0 '@types/js-cookie': 3.0.1 '@types/js-yaml': 4.0.5 '@types/node': 17.0.23 @@ -374,10 +374,10 @@ packages: tiny-glob: 0.2.9 dev: true - /@sveltejs/kit/1.0.0-next.310_svelte@3.47.0: + /@sveltejs/kit/1.0.0-next.303_svelte@3.47.0: resolution: { - integrity: sha512-pTyMyaoyHS+V5cQZIQMfQXmLkhw1VaRwT9avOSgwDc0QBpnNw2LdzwoPYsUr96ca5B6cfT3SMUNolxErTNHmPQ== + integrity: sha512-WdxDc8OiF1WEd/bEza7CBdzA+3qIcCi1GKBj/gieKX9I3N8iDJt/Cg2POrLo9wQoJ47nZcAd1eOhfr7XEX1aIQ== } engines: { node: '>=14.13' } hasBin: true @@ -1669,10 +1669,10 @@ packages: ieee754: 1.2.1 dev: false - /bullmq/1.79.0: + /bullmq/1.78.1: resolution: { - integrity: sha512-rVtNCDpcWdc+U1MinRtvhJv+GBFNkz0Q3Unf20010qIC6Pj+O2kkIUeepBkCmMNz6G9abrhsee2PheGRJ32+sw== + integrity: sha512-er45mM8nGhgA83EVCJ4PNxPyDSzakvoxeFGU4vdSgYeB+SbeFQAlJYmAC50Ms7YFPstm1LeinbVZ+oX/BmBzOg== } dependencies: cron-parser: 4.2.1 diff --git a/src/lib/api.ts b/src/lib/api.ts index 867ed338e..2e9271a6c 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -69,7 +69,7 @@ export function del( export function post( path: string, data: Record, - headers: Record + headers?: Record ): Promise> { return send({ method: 'POST', path, data, headers }); } diff --git a/src/lib/database/gitSources.ts b/src/lib/database/gitSources.ts index 01d36a7da..4d3374344 100644 --- a/src/lib/database/gitSources.ts +++ b/src/lib/database/gitSources.ts @@ -18,18 +18,10 @@ export async function listSources( export async function newSource({ name, - teamId, - type, - htmlUrl, - apiUrl, - organization + teamId }: { name: string; teamId: string; - type: string; - htmlUrl: string; - apiUrl: string; - organization: string; }): Promise { return await prisma.gitSource.create({ data: { @@ -74,8 +66,11 @@ export async function getSource({ if (body?.gitlabApp?.appSecret) body.gitlabApp.appSecret = decrypt(body.gitlabApp.appSecret); return body; } -export async function addGitHubSource({ id, teamId, type, name, htmlUrl, apiUrl }) { - await prisma.gitSource.update({ where: { id }, data: { type, name, htmlUrl, apiUrl } }); +export async function addGitHubSource({ id, teamId, type, name, htmlUrl, apiUrl, organization }) { + await prisma.gitSource.update({ + where: { id }, + data: { type, name, htmlUrl, apiUrl, organization } + }); return await prisma.githubApp.create({ data: { teams: { connect: { id: teamId } }, @@ -123,10 +118,14 @@ export async function configureGitsource({ } export async function updateGitsource({ id, - name + name, + htmlUrl, + apiUrl }: { id: string; name: string; + htmlUrl: string; + apiUrl: string; }): Promise { return await prisma.gitSource.update({ where: { id }, diff --git a/src/lib/queues/index.ts b/src/lib/queues/index.ts index 21a5b0330..694ddc9cc 100644 --- a/src/lib/queues/index.ts +++ b/src/lib/queues/index.ts @@ -2,7 +2,9 @@ import * as Bullmq from 'bullmq'; import { default as ProdBullmq, QueueScheduler } from 'bullmq'; import { dev } from '$app/env'; import { prisma } from '$lib/database'; + import builder from './builder'; +import logger from './logger'; import cleanup from './cleanup'; import proxy from './proxy'; import ssl from './ssl'; @@ -142,5 +144,9 @@ buildWorker.on('failed', async (job: Bullmq.Job, failedReason) => { const buildLogQueueName = 'log_queue'; const buildLogQueue = new Queue(buildLogQueueName, connectionOptions); +const buildLogWorker = new Worker(buildLogQueueName, async (job) => await logger(job), { + concurrency: 1, + ...connectionOptions +}); export { buildQueue, buildLogQueue }; diff --git a/src/routes/sources/[id]/_Github.svelte b/src/routes/sources/[id]/_Github.svelte index a01746267..3390cb712 100644 --- a/src/routes/sources/[id]/_Github.svelte +++ b/src/routes/sources/[id]/_Github.svelte @@ -2,6 +2,7 @@ export let source; import { page, session } from '$app/stores'; import { post } from '$lib/api'; + import Explainer from '$lib/components/Explainer.svelte'; import { errorNotification } from '$lib/form'; import { toast } from '@zerodevx/svelte-toast'; const { id } = $page.params; @@ -51,7 +52,8 @@ type: 'github', name: source.name, htmlUrl: source.htmlUrl.replace(/\/$/, ''), - apiUrl: source.apiUrl.replace(/\/$/, '') + apiUrl: source.apiUrl.replace(/\/$/, ''), + organization: source.organization }); } catch ({ error }) { return errorNotification(error); @@ -97,6 +99,22 @@ +
+
+ + +
+ +
{#if source.apiUrl && source.htmlUrl && source.name}
@@ -135,6 +153,21 @@
+
+
+ +
+ +
{:else} diff --git a/src/routes/sources/[id]/github.json.ts b/src/routes/sources/[id]/github.json.ts index e0f1d3b61..14da66c0a 100644 --- a/src/routes/sources/[id]/github.json.ts +++ b/src/routes/sources/[id]/github.json.ts @@ -9,8 +9,8 @@ export const post: RequestHandler = async (event) => { const { id } = event.params; try { - let { type, name, htmlUrl, apiUrl } = await event.request.json(); - await db.addGitHubSource({ id, teamId, type, name, htmlUrl, apiUrl }); + let { type, name, htmlUrl, apiUrl, organization } = await event.request.json(); + await db.addGitHubSource({ id, teamId, type, name, htmlUrl, apiUrl, organization }); return { status: 201 }; } catch (error) { return ErrorHandler(error);