feat: custom port for git instances

This commit is contained in:
Andras Bacsai
2022-07-12 11:01:48 +02:00
parent 9b47de71fc
commit 5a7edcb762
8 changed files with 137 additions and 29 deletions

View File

@@ -56,7 +56,7 @@ import * as buildpacks from '../lib/buildPacks';
exposePort,
baseImage,
baseBuildImage,
deploymentType
deploymentType,
} = message
let {
branch,
@@ -127,6 +127,7 @@ import * as buildpacks from '../lib/buildPacks';
repodir,
githubAppId: gitSource.githubApp?.id,
gitlabAppId: gitSource.gitlabApp?.id,
customPort: gitSource.customPort,
repository,
branch,
buildId,

View File

@@ -11,7 +11,8 @@ export default async function ({
apiUrl,
htmlUrl,
branch,
buildId
buildId,
customPort
}: {
applicationId: string;
workdir: string;
@@ -21,6 +22,7 @@ export default async function ({
htmlUrl: string;
branch: string;
buildId: string;
customPort: number;
}): Promise<string> {
const { default: got } = await import('got')
const url = htmlUrl.replace('https://', '').replace('http://', '');
@@ -54,7 +56,7 @@ export default async function ({
applicationId
});
await asyncExecShell(
`git clone -q -b ${branch} https://x-access-token:${token}@${url}/${repository}.git ${workdir}/ && cd ${workdir} && git submodule update --init --recursive && git lfs pull && cd .. `
`git clone -q -b ${branch} https://x-access-token:${token}@${url}/${repository}.git --config core.sshCommand="ssh -p ${customPort}" ${workdir}/ && cd ${workdir} && git submodule update --init --recursive && git lfs pull && cd .. `
);
const { stdout: commit } = await asyncExecShell(`cd ${workdir}/ && git rev-parse HEAD`);
return commit.replace('\n', '');

View File

@@ -9,7 +9,8 @@ export default async function ({
repository,
branch,
buildId,
privateSshKey
privateSshKey,
customPort
}: {
applicationId: string;
workdir: string;
@@ -19,6 +20,7 @@ export default async function ({
buildId: string;
repodir: string;
privateSshKey: string;
customPort: number;
}): Promise<string> {
const url = htmlUrl.replace('https://', '').replace('http://', '').replace(/\/$/, '');
await saveBuildLog({ line: 'GitLab importer started.', buildId, applicationId });
@@ -32,7 +34,7 @@ export default async function ({
});
await asyncExecShell(
`git clone -q -b ${branch} git@${url}:${repository}.git --config core.sshCommand="ssh -q -i ${repodir}id.rsa -o StrictHostKeyChecking=no" ${workdir}/ && cd ${workdir}/ && git submodule update --init --recursive && git lfs pull && cd .. `
`git clone -q -b ${branch} git@${url}:${repository}.git --config core.sshCommand="ssh -p ${customPort} -q -i ${repodir}id.rsa -o StrictHostKeyChecking=no" ${workdir}/ && cd ${workdir}/ && git submodule update --init --recursive && git lfs pull && cd .. `
);
const { stdout: commit } = await asyncExecShell(`cd ${workdir}/ && git rev-parse HEAD`);
return commit.replace('\n', '');

View File

@@ -20,10 +20,11 @@ export async function listSources(request: FastifyRequest) {
export async function saveSource(request, reply) {
try {
const { id } = request.params
const { name, htmlUrl, apiUrl } = request.body
let { name, htmlUrl, apiUrl, customPort } = request.body
if (customPort) customPort = Number(customPort)
await prisma.gitSource.update({
where: { id },
data: { name, htmlUrl, apiUrl }
data: { name, htmlUrl, apiUrl, customPort }
});
return reply.code(201).send()
} catch ({ status, message }) {
@@ -45,7 +46,8 @@ export async function getSource(request: FastifyRequest) {
type: null,
htmlUrl: null,
apiUrl: null,
organization: null
organization: null,
customPort: 22,
},
settings
}
@@ -58,7 +60,7 @@ export async function getSource(request: FastifyRequest) {
if (!source) {
throw { status: 404, message: 'Source not found.' }
}
if (source?.githubApp?.clientSecret)
source.githubApp.clientSecret = decrypt(source.githubApp.clientSecret);
if (source?.githubApp?.webhookSecret)
@@ -97,9 +99,12 @@ export async function deleteSource(request) {
}
export async function saveGitHubSource(request: FastifyRequest, reply: FastifyReply) {
try {
const { id } = request.params
const { name, type, htmlUrl, apiUrl, organization } = request.body
const { teamId } = request.user
const { id } = request.params
let { name, type, htmlUrl, apiUrl, organization, customPort } = request.body
if (customPort) customPort = Number(customPort)
if (id === 'new') {
const newId = cuid()
await prisma.gitSource.create({
@@ -109,6 +114,7 @@ export async function saveGitHubSource(request: FastifyRequest, reply: FastifyRe
htmlUrl,
apiUrl,
organization,
customPort,
type: 'github',
teams: { connect: { id: teamId } }
}
@@ -126,15 +132,16 @@ export async function saveGitLabSource(request: FastifyRequest, reply: FastifyRe
try {
const { id } = request.params
const { teamId } = request.user
let { type, name, htmlUrl, apiUrl, oauthId, appId, appSecret, groupName } =
let { type, name, htmlUrl, apiUrl, oauthId, appId, appSecret, groupName, customPort } =
request.body
oauthId = Number(oauthId);
if (oauthId) oauthId = Number(oauthId);
if (customPort) customPort = Number(customPort)
const encryptedAppSecret = encrypt(appSecret);
if (id === 'new') {
const newId = cuid()
await prisma.gitSource.create({ data: { id: newId, type, apiUrl, htmlUrl, name, teams: { connect: { id: teamId } } } });
await prisma.gitSource.create({ data: { id: newId, type, apiUrl, htmlUrl, name, customPort, teams: { connect: { id: teamId } } } });
await prisma.gitlabApp.create({
data: {
teams: { connect: { id: teamId } },
@@ -150,7 +157,7 @@ export async function saveGitLabSource(request: FastifyRequest, reply: FastifyRe
id: newId
}
} else {
await prisma.gitSource.update({ where: { id }, data: { type, apiUrl, htmlUrl, name } });
await prisma.gitSource.update({ where: { id }, data: { type, apiUrl, htmlUrl, name, customPort } });
await prisma.gitlabApp.update({
where: { id },
data: {