@@ -4,7 +4,7 @@ import fs from 'fs/promises';
4
4
import yaml from 'js-yaml' ;
5
5
6
6
import { copyBaseConfigurationFiles , makeLabelForStandaloneApplication , saveBuildLog , setDefaultConfiguration } from '../lib/buildPacks/common' ;
7
- import { createDirectories , decrypt , defaultComposeConfiguration , executeDockerCmd , getDomain , prisma } from '../lib/common' ;
7
+ import { createDirectories , decrypt , defaultComposeConfiguration , executeDockerCmd , getDomain , prisma , decryptApplication } from '../lib/common' ;
8
8
import * as importers from '../lib/importers' ;
9
9
import * as buildpacks from '../lib/buildPacks' ;
10
10
@@ -27,7 +27,7 @@ import * as buildpacks from '../lib/buildPacks';
27
27
28
28
const th = throttle ( async ( ) => {
29
29
try {
30
- const queuedBuilds = await prisma . build . findMany ( { where : { status : 'queued' } , orderBy : { createdAt : 'asc' } } ) ;
30
+ const queuedBuilds = await prisma . build . findMany ( { where : { status : { in : [ 'queued' , 'running' ] } } , orderBy : { createdAt : 'asc' } } ) ;
31
31
const { concurrentBuilds } = await prisma . setting . findFirst ( { } )
32
32
if ( queuedBuilds . length > 0 ) {
33
33
parentPort . postMessage ( { deploying : true } ) ;
@@ -37,68 +37,72 @@ import * as buildpacks from '../lib/buildPacks';
37
37
38
38
for ( const queueBuild of queuedBuilds ) {
39
39
actions . push ( async ( ) => {
40
- const application = await prisma . application . findUnique ( { where : { id : queueBuild . applicationId } , include : { destinationDocker : true , gitSource : { include : { githubApp : true , gitlabApp : true } } , persistentStorage : true , secrets : true , settings : true , teams : true } } )
41
- const { id : buildId , type, sourceBranch = null , pullmergeRequestId = null , forceRebuild } = queueBuild
42
- const {
43
- id : applicationId ,
44
- repository,
45
- name,
46
- destinationDocker,
47
- destinationDockerId,
48
- gitSource,
49
- configHash,
50
- fqdn,
51
- projectId,
52
- secrets,
53
- phpModules,
54
- settings,
55
- persistentStorage,
56
- pythonWSGI,
57
- pythonModule,
58
- pythonVariable,
59
- denoOptions,
60
- exposePort,
61
- baseImage,
62
- baseBuildImage,
63
- deploymentType,
64
- } = application
65
- let {
66
- branch,
67
- buildPack,
68
- port,
69
- installCommand,
70
- buildCommand,
71
- startCommand,
72
- baseDirectory,
73
- publishDirectory,
74
- dockerFileLocation,
75
- denoMainFile
76
- } = application
77
- const currentHash = crypto
78
- . createHash ( 'sha256' )
79
- . update (
80
- JSON . stringify ( {
81
- pythonWSGI,
82
- pythonModule,
83
- pythonVariable,
84
- deploymentType,
85
- denoOptions,
86
- baseImage,
87
- baseBuildImage,
88
- buildPack,
89
- port,
90
- exposePort,
91
- installCommand,
92
- buildCommand,
93
- startCommand,
94
- secrets,
95
- branch,
96
- repository,
97
- fqdn
98
- } )
99
- )
100
- . digest ( 'hex' ) ;
40
+ let application = await prisma . application . findUnique ( { where : { id : queueBuild . applicationId } , include : { destinationDocker : true , gitSource : { include : { githubApp : true , gitlabApp : true } } , persistentStorage : true , secrets : true , settings : true , teams : true } } )
41
+ let { id : buildId , type, sourceBranch = null , pullmergeRequestId = null , forceRebuild } = queueBuild
42
+ application = decryptApplication ( application )
101
43
try {
44
+ if ( queueBuild . status === 'running' ) {
45
+ await saveBuildLog ( { line : 'Building halted, restarting...' , buildId, applicationId : application . id } ) ;
46
+ }
47
+ const {
48
+ id : applicationId ,
49
+ repository,
50
+ name,
51
+ destinationDocker,
52
+ destinationDockerId,
53
+ gitSource,
54
+ configHash,
55
+ fqdn,
56
+ projectId,
57
+ secrets,
58
+ phpModules,
59
+ settings,
60
+ persistentStorage,
61
+ pythonWSGI,
62
+ pythonModule,
63
+ pythonVariable,
64
+ denoOptions,
65
+ exposePort,
66
+ baseImage,
67
+ baseBuildImage,
68
+ deploymentType,
69
+ } = application
70
+ let {
71
+ branch,
72
+ buildPack,
73
+ port,
74
+ installCommand,
75
+ buildCommand,
76
+ startCommand,
77
+ baseDirectory,
78
+ publishDirectory,
79
+ dockerFileLocation,
80
+ denoMainFile
81
+ } = application
82
+ const currentHash = crypto
83
+ . createHash ( 'sha256' )
84
+ . update (
85
+ JSON . stringify ( {
86
+ pythonWSGI,
87
+ pythonModule,
88
+ pythonVariable,
89
+ deploymentType,
90
+ denoOptions,
91
+ baseImage,
92
+ baseBuildImage,
93
+ buildPack,
94
+ port,
95
+ exposePort,
96
+ installCommand,
97
+ buildCommand,
98
+ startCommand,
99
+ secrets,
100
+ branch,
101
+ repository,
102
+ fqdn
103
+ } )
104
+ )
105
+ . digest ( 'hex' ) ;
102
106
const { debug } = settings ;
103
107
if ( concurrency === 1 ) {
104
108
await prisma . build . updateMany ( {
@@ -258,7 +262,6 @@ import * as buildpacks from '../lib/buildPacks';
258
262
] ;
259
263
if ( secrets . length > 0 ) {
260
264
secrets . forEach ( ( secret ) => {
261
- secret . value = decrypt ( secret . value )
262
265
if ( pullmergeRequestId ) {
263
266
if ( secret . isPRMRSecret ) {
264
267
envs . push ( `${ secret . name } =${ secret . value } ` ) ;
@@ -353,13 +356,16 @@ import * as buildpacks from '../lib/buildPacks';
353
356
where : { id : buildId , status : { in : [ 'queued' , 'running' ] } } ,
354
357
data : { status : 'failed' }
355
358
} ) ;
356
- await saveBuildLog ( { line : error , buildId, applicationId } ) ;
359
+ await saveBuildLog ( { line : error , buildId, applicationId : application . id } ) ;
357
360
}
358
361
} ) ;
362
+
359
363
}
364
+
360
365
await pAll . default ( actions , { concurrency } )
361
366
}
362
367
} catch ( error ) {
368
+ console . log ( error )
363
369
} finally {
364
370
}
365
371
} )
0 commit comments