@@ -27,7 +27,7 @@ import * as tc from '@actions/tool-cache';
27
27
28
28
import { Exec } from '../exec' ;
29
29
import { Util } from '../util' ;
30
- import { colimaYamlData , setupDockerLinuxSh , setupDockerWinPs1 } from './assets' ;
30
+ import { colimaYamlData , dockerServiceLogsPs1 , setupDockerLinuxSh , setupDockerWinPs1 } from './assets' ;
31
31
32
32
export class Install {
33
33
public async download ( version : string , channel ?: string ) : Promise < string > {
@@ -134,6 +134,7 @@ export class Install {
134
134
135
135
private async installLinux ( toolDir : string , runDir : string ) : Promise < void > {
136
136
const dockerHost = `unix://${ path . join ( runDir , 'docker.sock' ) } ` ;
137
+ await io . mkdirP ( runDir ) ;
137
138
138
139
await core . group ( 'Start Docker daemon' , async ( ) => {
139
140
const bashPath : string = await io . which ( 'bash' , true ) ;
@@ -189,13 +190,15 @@ export class Install {
189
190
private async installWindows ( toolDir : string , runDir : string ) : Promise < void > {
190
191
const dockerHost = 'npipe:////./pipe/setup_docker_action' ;
191
192
192
- const setupCmd = await Util . powershellCommand ( setupDockerWinPs1 ( ) , {
193
- ToolDir : toolDir ,
194
- RunDir : runDir ,
195
- DockerHost : dockerHost
196
- } ) ;
197
193
await core . group ( 'Install Docker daemon service' , async ( ) => {
194
+ const setupCmd = await Util . powershellCommand ( setupDockerWinPs1 ( ) , {
195
+ ToolDir : toolDir ,
196
+ RunDir : runDir ,
197
+ DockerHost : dockerHost
198
+ } ) ;
198
199
await Exec . exec ( setupCmd . command , setupCmd . args ) ;
200
+ const logCmd = await Util . powershellCommand ( dockerServiceLogsPs1 ( ) ) ;
201
+ await Exec . exec ( logCmd . command , logCmd . args ) ;
199
202
} ) ;
200
203
201
204
await core . group ( 'Create Docker context' , async ( ) => {
@@ -204,6 +207,66 @@ export class Install {
204
207
} ) ;
205
208
}
206
209
210
+ public async tearDown ( runDir : string ) : Promise < void > {
211
+ switch ( os . platform ( ) ) {
212
+ case 'darwin' : {
213
+ await this . tearDownDarwin ( runDir ) ;
214
+ break ;
215
+ }
216
+ case 'linux' : {
217
+ await this . tearDownLinux ( runDir ) ;
218
+ break ;
219
+ }
220
+ case 'win32' : {
221
+ await this . tearDownWindows ( ) ;
222
+ break ;
223
+ }
224
+ default : {
225
+ throw new Error ( `Unsupported platform: ${ os . platform ( ) } ` ) ;
226
+ }
227
+ }
228
+ }
229
+
230
+ private async tearDownDarwin ( runDir : string ) : Promise < void > {
231
+ await core . group ( 'Docker daemon logs' , async ( ) => {
232
+ await Exec . exec ( 'colima' , [ 'exec' , '--' , 'cat' , '/var/log/docker.log' ] ) ;
233
+ } ) ;
234
+ await core . group ( 'Stopping colima' , async ( ) => {
235
+ await Exec . exec ( 'colima' , [ 'stop' , '--very-verbose' ] ) ;
236
+ } ) ;
237
+ await core . group ( 'Removing Docker context' , async ( ) => {
238
+ await Exec . exec ( 'docker' , [ 'context' , 'rm' , '-f' , 'setup-docker-action' ] ) ;
239
+ } ) ;
240
+ await core . group ( `Cleaning up runDir` , async ( ) => {
241
+ await Exec . exec ( 'sudo' , [ 'rm' , '-rf' , runDir ] ) ;
242
+ } ) ;
243
+ }
244
+
245
+ private async tearDownLinux ( runDir : string ) : Promise < void > {
246
+ await core . group ( 'Docker daemon logs' , async ( ) => {
247
+ core . info ( fs . readFileSync ( path . join ( runDir , 'dockerd.log' ) , { encoding : 'utf8' } ) ) ;
248
+ } ) ;
249
+ await core . group ( 'Stopping Docker daemon' , async ( ) => {
250
+ await Exec . exec ( 'sudo' , [ 'kill' , fs . readFileSync ( path . join ( runDir , 'docker.pid' ) ) . toString ( ) . trim ( ) ] ) ;
251
+ } ) ;
252
+ await core . group ( 'Removing Docker context' , async ( ) => {
253
+ await Exec . exec ( 'docker' , [ 'context' , 'rm' , '-f' , 'setup-docker-action' ] ) ;
254
+ } ) ;
255
+ await core . group ( `Cleaning up runDir` , async ( ) => {
256
+ await Exec . exec ( 'sudo' , [ 'rm' , '-rf' , runDir ] ) ;
257
+ } ) ;
258
+ }
259
+
260
+ private async tearDownWindows ( ) : Promise < void > {
261
+ await core . group ( 'Docker daemon logs' , async ( ) => {
262
+ const logCmd = await Util . powershellCommand ( dockerServiceLogsPs1 ( ) ) ;
263
+ await Exec . exec ( logCmd . command , logCmd . args ) ;
264
+ } ) ;
265
+ await core . group ( 'Removing Docker context' , async ( ) => {
266
+ await Exec . exec ( 'docker' , [ 'context' , 'rm' , '-f' , 'setup-docker-action' ] ) ;
267
+ } ) ;
268
+ }
269
+
207
270
private downloadURL ( version : string , channel : string ) : string {
208
271
const platformOS = Install . platformOS ( ) ;
209
272
const platformArch = Install . platformArch ( ) ;
0 commit comments