Commit cdc3e853 authored by nanahira's avatar nanahira

one build per app

parent 3f81a889
Pipeline #39939 passed with stages
in 7 minutes and 15 seconds
...@@ -21,6 +21,7 @@ import { AssetsS3Service } from './assets-s3/assets-s3.service'; ...@@ -21,6 +21,7 @@ import { AssetsS3Service } from './assets-s3/assets-s3.service';
import { Redis } from 'ioredis'; import { Redis } from 'ioredis';
import { InjectRedis } from '@nestjs-modules/ioredis'; import { InjectRedis } from '@nestjs-modules/ioredis';
import _ from 'lodash'; import _ from 'lodash';
import BetterLock from 'better-lock';
@Injectable() @Injectable()
export class AppService extends ConsoleLogger { export class AppService extends ConsoleLogger {
...@@ -181,6 +182,8 @@ export class AppService extends ConsoleLogger { ...@@ -181,6 +182,8 @@ export class AppService extends ConsoleLogger {
return this.db.getRepository(Build).findOne({ where: { depot, version }, select: ['id'] }); return this.db.getRepository(Build).findOne({ where: { depot, version }, select: ['id'] });
} }
private buildLock = new BetterLock();
async makeBuild(user: MyCardUser, stream: NodeJS.ReadableStream, id: string, depotDto: DepotDto, version: string) { async makeBuild(user: MyCardUser, stream: NodeJS.ReadableStream, id: string, depotDto: DepotDto, version: string) {
if (!user) { if (!user) {
throw new BlankReturnMessageDto(401, 'Needs login').toException(); throw new BlankReturnMessageDto(401, 'Needs login').toException();
...@@ -203,6 +206,7 @@ export class AppService extends ConsoleLogger { ...@@ -203,6 +206,7 @@ export class AppService extends ConsoleLogger {
let build = new Build(); let build = new Build();
build.depot = depot; build.depot = depot;
build.version = version; build.version = version;
return this.buildLock.acquire(id, async () => {
this.log(`Start packaging ${app.id} ${version} for ${JSON.stringify(depot)}.`); this.log(`Start packaging ${app.id} ${version} for ${JSON.stringify(depot)}.`);
try { try {
const previousTracingBuildChecksums = ( const previousTracingBuildChecksums = (
...@@ -246,6 +250,7 @@ export class AppService extends ConsoleLogger { ...@@ -246,6 +250,7 @@ export class AppService extends ConsoleLogger {
this.error(`Build ${app.id} ${JSON.stringify(depotDto.toActual)} ${build.version} failed: ${e.toString()}`); this.error(`Build ${app.id} ${JSON.stringify(depotDto.toActual)} ${build.version} failed: ${e.toString()}`);
throw new BlankReturnMessageDto(500, 'Build failed').toException(); throw new BlankReturnMessageDto(500, 'Build failed').toException();
} }
})
} }
private packageReferenceSubQuery(query: SelectQueryBuilder<any>) { private packageReferenceSubQuery(query: SelectQueryBuilder<any>) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment