@@ -4,20 +4,20 @@ import { listEC2Runners, RunnerInfo, RunnerList, terminateRunner } from './runne
4
4
import { getIdleRunnerCount , ScalingDownConfig } from './scale-down-config' ;
5
5
import { createOctoClient , createGithubAppAuth , createGithubInstallationAuth } from './gh-auth' ;
6
6
import { githubCache , GhRunners } from './cache' ;
7
- import { logger as rootLogger } from './logger' ;
7
+ import { logger as rootLogger , LogFields } from './logger' ;
8
8
9
- const logger = rootLogger . getChildLogger ( ) ;
9
+ const logger = rootLogger . getChildLogger ( { name : 'scale-down' } ) ;
10
10
11
11
async function getOrCreateOctokit ( runner : RunnerInfo ) : Promise < Octokit > {
12
12
const key = runner . owner ;
13
13
const cachedOctokit = githubCache . clients . get ( key ) ;
14
14
15
15
if ( cachedOctokit ) {
16
- logger . debug ( `[createGitHubClientForRunner] Cache hit for ${ key } ` ) ;
16
+ logger . debug ( `[createGitHubClientForRunner] Cache hit for ${ key } ` , LogFields . print ( ) ) ;
17
17
return cachedOctokit ;
18
18
}
19
19
20
- logger . debug ( `[createGitHubClientForRunner] Cache miss for ${ key } ` ) ;
20
+ logger . debug ( `[createGitHubClientForRunner] Cache miss for ${ key } ` , LogFields . print ( ) ) ;
21
21
const ghesBaseUrl = process . env . GHES_URL ;
22
22
let ghesApiUrl = '' ;
23
23
if ( ghesBaseUrl ) {
@@ -50,11 +50,11 @@ async function listGitHubRunners(runner: RunnerInfo): Promise<GhRunners> {
50
50
const key = runner . owner as string ;
51
51
const cachedRunners = githubCache . runners . get ( key ) ;
52
52
if ( cachedRunners ) {
53
- logger . debug ( `[listGithubRunners] Cache hit for ${ key } ` ) ;
53
+ logger . debug ( `[listGithubRunners] Cache hit for ${ key } ` , LogFields . print ( ) ) ;
54
54
return cachedRunners ;
55
55
}
56
56
57
- logger . debug ( `[listGithubRunners] Cache miss for ${ key } ` ) ;
57
+ logger . debug ( `[listGithubRunners] Cache miss for ${ key } ` , LogFields . print ( ) ) ;
58
58
const client = await getOrCreateOctokit ( runner ) ;
59
59
const runners =
60
60
runner . type === 'Org'
@@ -102,12 +102,18 @@ async function removeRunner(ec2runner: RunnerInfo, ghRunnerId: number): Promise<
102
102
103
103
if ( result . status == 204 ) {
104
104
await terminateRunner ( ec2runner . instanceId ) ;
105
- logger . info ( `AWS runner instance '${ ec2runner . instanceId } ' is terminated and GitHub runner is de-registered.` ) ;
105
+ logger . info (
106
+ `AWS runner instance '${ ec2runner . instanceId } ' is terminated and GitHub runner is de-registered.` ,
107
+ LogFields . print ( ) ,
108
+ ) ;
106
109
} else {
107
- logger . error ( `Failed to de-register GitHub runner: ${ result . status } ` ) ;
110
+ logger . error ( `Failed to de-register GitHub runner: ${ result . status } ` , LogFields . print ( ) ) ;
108
111
}
109
112
} catch ( e ) {
110
- logger . info ( `Runner '${ ec2runner . instanceId } ' cannot be de-registered, most likely the runner is active.` ) ;
113
+ logger . info (
114
+ `Runner '${ ec2runner . instanceId } ' cannot be de-registered, most likely the runner is active.` ,
115
+ LogFields . print ( ) ,
116
+ ) ;
111
117
}
112
118
}
113
119
@@ -120,26 +126,29 @@ async function evaluateAndRemoveRunners(
120
126
121
127
for ( const ownerTag of ownerTags ) {
122
128
const ec2RunnersFiltered = ec2Runners . filter ( ( runner ) => runner . owner === ownerTag ) ;
123
- logger . debug ( `Found: '${ ec2RunnersFiltered . length } ' active GitHub runners with owner tag: '${ ownerTag } '` ) ;
129
+ logger . debug (
130
+ `Found: '${ ec2RunnersFiltered . length } ' active GitHub runners with owner tag: '${ ownerTag } '` ,
131
+ LogFields . print ( ) ,
132
+ ) ;
124
133
for ( const ec2Runner of ec2RunnersFiltered ) {
125
134
const ghRunners = await listGitHubRunners ( ec2Runner ) ;
126
135
const ghRunner = ghRunners . find ( ( runner ) => runner . name === ec2Runner . instanceId ) ;
127
136
if ( ghRunner ) {
128
137
if ( runnerMinimumTimeExceeded ( ec2Runner ) ) {
129
138
if ( idleCounter > 0 ) {
130
139
idleCounter -- ;
131
- logger . info ( `Runner '${ ec2Runner . instanceId } ' will kept idle.` ) ;
140
+ logger . info ( `Runner '${ ec2Runner . instanceId } ' will kept idle.` , LogFields . print ( ) ) ;
132
141
} else {
133
- logger . info ( `Runner '${ ec2Runner . instanceId } ' will be terminated.` ) ;
142
+ logger . info ( `Runner '${ ec2Runner . instanceId } ' will be terminated.` , LogFields . print ( ) ) ;
134
143
await removeRunner ( ec2Runner , ghRunner . id ) ;
135
144
}
136
145
}
137
146
} else {
138
147
if ( bootTimeExceeded ( ec2Runner ) ) {
139
- logger . info ( `Runner '${ ec2Runner . instanceId } ' is orphaned and will be removed.` ) ;
148
+ logger . info ( `Runner '${ ec2Runner . instanceId } ' is orphaned and will be removed.` , LogFields . print ( ) ) ;
140
149
terminateOrphan ( ec2Runner . instanceId ) ;
141
150
} else {
142
- logger . debug ( `Runner ${ ec2Runner . instanceId } has not yet booted.` ) ;
151
+ logger . debug ( `Runner ${ ec2Runner . instanceId } has not yet booted.` , LogFields . print ( ) ) ;
143
152
}
144
153
}
145
154
}
@@ -150,7 +159,7 @@ async function terminateOrphan(instanceId: string): Promise<void> {
150
159
try {
151
160
await terminateRunner ( instanceId ) ;
152
161
} catch ( e ) {
153
- logger . debug ( `Orphan runner '${ instanceId } ' cannot be removed.` ) ;
162
+ logger . debug ( `Orphan runner '${ instanceId } ' cannot be removed.` , LogFields . print ( ) ) ;
154
163
}
155
164
}
156
165
@@ -195,19 +204,25 @@ export async function scaleDown(): Promise<void> {
195
204
// list and sort runners, newest first. This ensure we keep the newest runners longer.
196
205
const ec2Runners = await listAndSortRunners ( environment ) ;
197
206
const activeEc2RunnersCount = ec2Runners . length ;
198
- logger . info ( `Found: '${ activeEc2RunnersCount } ' active GitHub EC2 runner instances before clean-up.` ) ;
207
+ logger . info (
208
+ `Found: '${ activeEc2RunnersCount } ' active GitHub EC2 runner instances before clean-up.` ,
209
+ LogFields . print ( ) ,
210
+ ) ;
199
211
200
212
if ( activeEc2RunnersCount === 0 ) {
201
- logger . debug ( `No active runners found for environment: '${ environment } '` ) ;
213
+ logger . debug ( `No active runners found for environment: '${ environment } '` , LogFields . print ( ) ) ;
202
214
return ;
203
215
}
204
216
const legacyRunners = filterLegacyRunners ( ec2Runners ) ;
205
- logger . debug ( JSON . stringify ( legacyRunners ) ) ;
217
+ logger . debug ( JSON . stringify ( legacyRunners ) , LogFields . print ( ) ) ;
206
218
const runners = filterRunners ( ec2Runners ) ;
207
219
208
220
await evaluateAndRemoveRunners ( runners , scaleDownConfigs ) ;
209
221
await evaluateAndRemoveRunners ( legacyRunners , scaleDownConfigs ) ;
210
222
211
223
const activeEc2RunnersCountAfter = ( await listAndSortRunners ( environment ) ) . length ;
212
- logger . info ( `Found: '${ activeEc2RunnersCountAfter } ' active GitHub EC2 runners instances after clean-up.` ) ;
224
+ logger . info (
225
+ `Found: '${ activeEc2RunnersCountAfter } ' active GitHub EC2 runners instances after clean-up.` ,
226
+ LogFields . print ( ) ,
227
+ ) ;
213
228
}
0 commit comments