From 974b785700f878d1fc530577bcb4e46e56471c02 Mon Sep 17 00:00:00 2001 From: Andrew Kahr <22359829+AndrewKahr@users.noreply.github.com> Date: Fri, 27 Oct 2023 18:55:23 -0700 Subject: [PATCH] Switch to process isolation mode by default and give an option to use hyperv isolation to improve performance --- action.yml | 5 +++++ dist/index.js | Bin 22172212 -> 22172394 bytes dist/index.js.map | Bin 14641708 -> 14641921 bytes src/model/docker.ts | 2 ++ src/model/input.ts | 4 ++++ 5 files changed, 11 insertions(+) diff --git a/action.yml b/action.yml index c9099e77..4a441574 100644 --- a/action.yml +++ b/action.yml @@ -117,6 +117,11 @@ inputs: 'Amount of memory to assign the docker container. Defaults to 95% of total system memory rounded down to the nearest megabyte on Linux and 80% on Windows. On unrecognized platforms, defaults to 75% of total system memory. To manually specify a value, use the format , where unit is either m or g. ie: 512m = 512 megabytes' + dockerIsolationMode: + required: false + default: 'process' + description: + 'Isolation mode to use for the docker container. Can be either process or hyperv. Only applicable on Windows' allowDirtyBuild: required: false default: '' diff --git a/dist/index.js b/dist/index.js index b5efe37eb0a3f720eaf05e84bfbf8afea527d509..9733b1f094978d005efe7188f7194967bddf4378 100644 GIT binary patch delta 1591 zcmZwHS6t3v7>Dss`in}GQhANu5((Lx%#0A(Gpj<@OWCrsvW3^)dymMCxf6bB~c2cQ3hpE4&@Pu3aE%msEjJ8iXc=&b<{vj1fv#eqYgq)7xfT|`e=ZLXoSXS zf~IJO=4gSIXoWDeMjNz6JG4hQA`poV=!i~;LT7YAS9C*nSkMDK5seu1LT~gzU-UzN z48TCdVh{#n2!>)9hGPWcFcPCM8e=dP@fe5kn1G3xgvpqKsYt*yOvemZF%z>e8*?xh z^DrL^un>!|7)!7e%di|PuoA1V8f&l?>#!ahuo0WE8C#Hut=NVnY{w4l#4hYcGWK9E z_F+E`;2;j+Fpl6Tjv)odaRMiC3a4=fXK@baaRC=`372sNS8)y3aRWDT3%79xcX1E* z@c<9;2#@guPw@=T@d7XL3a^ohH+YM8c#jYGh)?*8FZhaY_>Ld=iC_3VE;QL@5|lKG ztzsx?6+0!Jl3uY_927?-gW{xQR5B^fii?t2aaG)uEQ-70p?E4;6_b)p$*$y3aw=Ym zS@BkUlw69hl3U56_$hf6e5N@1mlQdB9X6jw?pC6!W2X{C%(Rw<{H xR|1s^N=2oTQdy~@R8@kMYD#sbhEh`rR%$7=l{!j@Qdg;`gxc)oKe2f@?GKNk<0$|D delta 1479 zcmWmEXIzZ|0EO{idMh`gA?1==k*JIaWoGZ}z4zXGuS>`d*WP=N$jlxko2-yc_TJ+; zAO6p$^ZBH&OLUG~o9H~wYG=)0wU0CAn{BafhIjl4vyo!h(mV{O_{$a}X{qg9e|z6p zm*iAiu*GDuxt=kyMEfKdaDXG6kP#+0BNH;i1=?nXE8O4?4`hQUvcn7B$N@8QA{Ts+ z8y5J&5B|u5ya+%(1R_5QAPB(-K|vHkVH80qilP|8P#h&t65)tIDU?PTltnp|ML3brQ4jUe01eRyjnM>6(G1Pe0xi)Btu@CXsj{`V}LpY2hNWf7X!*QIzNu0uIoWWU~Ln4xJ9?7_X zi@1c#xPq&=hU>V26x_ru+{PW;MJn#$J{}+q5Ag_(@dQut4A1cbFOiN{c#SuBi+6aB z5BP{r_>3?3if{OiANYx1_>DjKi+?db33jufWKirCLvc_X6(=R5Vp5!yOiE_OMaiOM zRa_M}#a;1GvMHWQcEwBaR&pq2C8v^0@lkRs7R6WbQ~Z@YN?s*E$)^M=`IQ1nkP@tf zC5N@1ml5~>tciYZ}AaixS(QVCZglu}A*rHoQmDW{ZIB9#hCMWvEbS*fB_RjMh~ bl^RM-rIu1#siQx?04(_ApeV(_Xp;=wf*sQLqH5D6FrFIujQTIC_vbxDs>04~@ zDY1E#{?NvV??rx!kQ23Dg$~)~kX_&kH@HIuHCmxHJm3j0v_V^V!v`Ap!VmsvhX4dZ zi}vUM9rWmkAjKhfa{kn%no}~2mN=_9GbtzCoE2|QHAYJLQmm9Msti(~BAbFkRUuJP z>HjWb!*c)AQS6pr_i|C6EUAQ#zohbLSrnQ=y==!QWTm5mH{B6rOD{ zrx>kPk>o1rl$u|9or{nidXsUZ5Q8unLogJv7>3~(fsq)6(HMiV7>DtgfH+LVBuqv;reG=zn1%#Q#|+HG zEX>9n%*8y+MyYH$s;xQ;s9z)jr3ZQQ|K z+{1l1@c<9;2#@guPw@=T@d7VVk5_n&H)z0HG~ylJ;{!h86F%b$zA8@bx3q*m46E>6 delta 1031 zcmW;Bd05MF0LSrXZDv{c17`cTQev~8R z&YiiBKl)>iKRlj?|MGa}kJsmUKhMYMuTmCPR4I#!?ZTU^Qww9PHcEKE$Su{AAWADW zF(M@_R3Uz=JvyKxI-xVVz=CLWMK{EtJ9?ledZ9P^z=~M(ML+b%0K_3412G7LF$6;~3<*et z4a1Ry5g3V47>zL)i*Xo_37CjUNXBHOU<#&U8d5PGX-LNm%)~6r#vIr&7xOS58E{|$ z7Ge<=V+k^`6w9z2E3gt-$i^x-u^Ks8gSA)(7uI6~HewStV+*!o8*<^scI06Pc48L< zc4H4b$j4sn!+soq7YA_&1vrc&IErI9juSYEQz*n~oWWTX;T+DxhYPrfOOS9GS5S-+ zT*Wn9#|@O?CT`(2%5VpFaS!+L01xp9<#>!Ic#3Cuju&`|3cP|Juki+N@ec3t0Uz;6 K^5{ROC;bB-`oXpU diff --git a/src/model/docker.ts b/src/model/docker.ts index ee21c753..aec955bc 100644 --- a/src/model/docker.ts +++ b/src/model/docker.ts @@ -98,6 +98,7 @@ class Docker { dockerWorkspacePath, dockerCpuLimit, dockerMemoryLimit, + dockerIsolationMode, } = parameters; return `docker run \ @@ -118,6 +119,7 @@ class Docker { --volume "${actionFolder}/BlankProject":"c:/BlankProject" \ --cpus=${dockerCpuLimit} \ --memory=${dockerMemoryLimit} \ + --isolation=${dockerIsolationMode} \ ${image} \ powershell c:/steps/entrypoint.ps1`; } diff --git a/src/model/input.ts b/src/model/input.ts index 43667e18..8e228c25 100644 --- a/src/model/input.ts +++ b/src/model/input.ts @@ -252,6 +252,10 @@ class Input { ); } + static get dockerIsolationMode(): string { + return Input.getInput('dockerIsolationMode') || 'process'; + } + public static ToEnvVarFormat(input: string) { if (input.toUpperCase() === input) { return input;