From eba396b69e1bb60a5f96ac9f8e6836580489e27b Mon Sep 17 00:00:00 2001 From: Frostebite Date: Wed, 16 Aug 2023 00:39:32 +0100 Subject: [PATCH] no wait, just repeat logs --- .../workflows/cloud-runner-ci-pipeline.yml | 1 + dist/index.js | Bin 19470304 -> 19470692 bytes dist/index.js.map | Bin 13771427 -> 13771833 bytes .../providers/k8s/kubernetes-task-runner.ts | 1 + .../remote-client/remote-client-logger.ts | 15 +++--- .../tests/e2e/cloud-runner-kubernetes.test.ts | 51 ++++++++++++++++++ 6 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 src/model/cloud-runner/tests/e2e/cloud-runner-kubernetes.test.ts diff --git a/.github/workflows/cloud-runner-ci-pipeline.yml b/.github/workflows/cloud-runner-ci-pipeline.yml index 622bb02e..a5804b38 100644 --- a/.github/workflows/cloud-runner-ci-pipeline.yml +++ b/.github/workflows/cloud-runner-ci-pipeline.yml @@ -118,6 +118,7 @@ jobs: - 'cloud-runner-end2end-locking' - 'cloud-runner-end2end-caching' - 'cloud-runner-end2end-retaining' + - 'cloud-runner-end2end-kubernetes' - 'cloud-runner-environment' - 'cloud-runner-github-checks' steps: diff --git a/dist/index.js b/dist/index.js index 462ea8f873ececa3d75ead9d2b7c484e3c2958dc..5404867435e9ee3f9801f361f3ce2caef178e327 100644 GIT binary patch delta 1600 zcmYk+cX$(J9Ki7>*K{N)9i*&6;U!61(T1h1iW94?)gnS2sHnXr*EW*T<}Qs9E2to9 zRa&Z?+p2XB6jAB~7fw{%0~HnbLKOGl`}6VP@sH2siYAyB3(vUS&^7wT6(NQrFB!8hE=5^@lZ4sj>OwkFlcgO1mz~x zp(pj2VHrt#(*~`??%n9lwbhU(XYJBHEwsX(-|cqWg*950z0L3N+nzv{&)(cpkZ)H9 zvgX+X4Nj*$Q0MUHHO{VYnxO&N1j%){N3wiv>((b{VS0FyiiAb0*uJ3$neoXQ;p5=z9wrc7p5BE9S3Txc;E zj$8eXm0r7OiWan+XE~hO)JgW7no@6nZ?S7xqC5*uWFrT;$b*cz;Xyuzp#X&_LNSKJ zixP~$NQ}a0j6o^JVjRja9uuH25kB}4KshQyJHVjA&AMCf~lB>>DUu{p&B*V z8~b2i%)oxw9|zz-9E5{06NjJ{hvG2Qp&o~$0Y~6SG-4Kx!fYIkIhczk9D`$V9FE64 zoPZN?66WJ%oPtx)3>_^9Aq)epXhS<9I1LLBMGSEy(1A`QVZuTRT}b0}WN-!+;!Jeo zEG)ueoQ-pEE|y>^&ciaCj|*@idT~A;|08kjd%$!;}vYet9T8s;|;utx9~RJ!Mk`5oAEwAz=zm^ zkMJ=*!B%{V&+s|Ez?b+6U*j8mi|_C~w&4eC$B+04JMc4p!LRrYzvB=5iNEkS{^?1S zJC;MDNwOqPNwy?Mk}JuRxFl|gN0KiYCMl21GFmc5QYslM j87C=|jF(K1D9J>LPvVyZB>!%_LXIjO>-bGLI=Alxb_7qW delta 1370 zcmXZcWl)qs7{KwlJ3584D1CtgTMSI>7VPdmP82x=4D3KrQObDj#O?$ey92vH#cssT z|KqqbzyIvcvmf@;=I%(d&Dok}J0VW9OB1q3MJW^<$xYK~H>C_};`qB)yPVG$-JW}s2_(TZ`n zF)CJO!(xnT-;B+A)w!zHRZ~e_5xiTkCL44mE##h>WpAlhE955H#pnC$U;#^5!5TKO zh0N{Y07p2%83o`1SLjg?g-{qpP!w)(hX*|2g<>cU1>W$1FAVU5KT4n^N})8$pe)Lv zJOWSw6;TP55r`_NifX8i8mNgN)Ix34L0!~CeKbHrG(uxEK~pqCa|9yC&f z7VXd;9ncY-&>3CO72VJsJMZw7yZy517JibOc;nT48mZ9V+bN(MkIzJ3ekwc zFbu~Cj6^I(VKl~IEXH9xCSW2aVKU+{1yd1^X_$@~NWe_YLL!ooj1;6|Hs)Y1=0U}L zEWko6!eT7JQY^!AtiVdFLK;?M4c1~E)?))UViPuF3$|h#wqpl&Vi$H}57Lo=z1WBS zIDmsVgu}?h5gf%a9LEWq#3`J{8JxvAoW})R#3fut7OvnbuHiav;3jV2Htygq?%_Tj zAR9S&h(~ygTs*;3Ji~Lmz)QTsYrMf*yu*8ZKps9KAD{3UU+@**@Et$!6Tk2qe-iTj zHA#?YB|3?P#8P4v0VW!TU!8vCbCoND! z#BS(VTf178c_}4HN6QOVUw{1)TfBEeMxRle znR2hAKiBTuS$k`wJaPG0y33}9j%Ss{?{wNbhCN-w9vensH0(%0D#joUW08&wWFiaM zxDPqFAGydwKE|N{<1qn+a3qF3&XViuPMf26VU1>5A}qZ!&?q%F=%IS96@7|`>EU&JcFG@Bl zdBRzu8l%qqyXS4y{7Y0VonnfH;wn89@re}?!;oQ77c(sxY$z7dfUXO##`|<(`K8c9 z%_8cTh6q@~KQc?i>y@V26w&qA|K|O-(x+LPutK6$h67D8p^-&^NoT7RjdCnG_jaV# ztHOd=Za4cOxG5ACGv}};Z^-bOBLQ@VqW?XBgGR}^_#h8Q=lwvZbU@9I$8Kz-6$}t0ORA44%VKyGd96W-# zn1@F(ACKX2Jb?vx5|vnpMX17JEWuN##?x4eWq1ZPcoxrLIco7dR-g_m@d93i2dnTB zUPe6{uo`Qy7VDs)5nlKp(S&CB5x^^W6*_`25JC&qBMcK3B4|Yv8xX^5*oaMd9dDow z?bwVh=)hKVVjH@!9o^W0H}MwU#yfZyJ=lp|h+{Y2!~0O!gT43wAL1i?j8E_>_Te*p zj{W!oU*Z71!a*FuVI0BN_y$LD488ak$I*xHZ~`Zhz$u)@_xJ&4a2Drq9{sq0AMq1@ d#sGf7MI>&{0an?{cN0RG7)k#)zzTjZR3N zYPk^Ynhf!yE=rrM&vDq?v56L!#V-9HgF(u1IGj?Z!zCq1x!HC%-Db$;!AR&Z3ZtQi z|8ES&VjRXJ4h9%80r8lKNl3tCOuLN>Nz2Xc@LI~;Ig zCtPqN5BVs-F6@Q}dr*iX?8QFpM==hd1f@8LLpY2w9Klf>!*QIzNtELhDo}~jsKObX z#W@I^M>Q_sA}--FuAl~2aShi|iyOF!TeyuoxQlzJ!+q4_0Un|Ojd+A6JjN3|g%{7z sjOTcPmw1KOc!L(S;w|3cJ=*XAAK^ngKA{7j@daPei7szT$2U* 0) { + CloudRunnerLogger.log(`Last received timestamp was set, including --since-time parameter`); const currentDate = new Date(KubernetesTaskRunner.lastReceivedTimestamp); const dateTimeIsoString = currentDate.toISOString(); sinceTime = ` --since-time="${dateTimeIsoString}"`; diff --git a/src/model/cloud-runner/remote-client/remote-client-logger.ts b/src/model/cloud-runner/remote-client/remote-client-logger.ts index 593f2370..4032cbc4 100644 --- a/src/model/cloud-runner/remote-client/remote-client-logger.ts +++ b/src/model/cloud-runner/remote-client/remote-client-logger.ts @@ -43,13 +43,16 @@ export class RemoteClientLogger { hashedLogs = await await CloudRunnerSystem.Run(`md5sum ${RemoteClientLogger.LogFilePath}`); - CloudRunnerLogger.log(`LOGHASH: ${hashedLogs}`); - const logs = fs.readFileSync(RemoteClientLogger.LogFilePath).toString(); - CloudRunnerLogger.log(logs); + for (let index = 0; index < 3; index++) { + CloudRunnerLogger.log(`LOGHASH: ${hashedLogs}`); + const logs = fs.readFileSync(RemoteClientLogger.LogFilePath).toString(); + CloudRunnerLogger.log(`LOGS: ${Buffer.from(logs).toString('base64')}`); + CloudRunnerLogger.log( + `Game CI's "Cloud Runner System" will cancel the log when it has successfully received the log data to verify all logs have been received.`, + ); - // loop for 5 mins logging the logs every minute - for (let index = 0; index < 2; index++) { - CloudRunnerLogger.log(logs); + // wait for 15 seconds to allow the log to be sent + await new Promise((resolve) => setTimeout(resolve, 15000)); } } } diff --git a/src/model/cloud-runner/tests/e2e/cloud-runner-kubernetes.test.ts b/src/model/cloud-runner/tests/e2e/cloud-runner-kubernetes.test.ts new file mode 100644 index 00000000..11626bbc --- /dev/null +++ b/src/model/cloud-runner/tests/e2e/cloud-runner-kubernetes.test.ts @@ -0,0 +1,51 @@ +import CloudRunner from '../../cloud-runner'; +import UnityVersioning from '../../../unity-versioning'; +import { Cli } from '../../../cli/cli'; +import CloudRunnerLogger from '../../services/core/cloud-runner-logger'; +import { v4 as uuidv4 } from 'uuid'; +import CloudRunnerOptions from '../../options/cloud-runner-options'; +import setups from '../cloud-runner-suite.test'; +import BuildParameters from '../../../build-parameters'; +import ImageTag from '../../../image-tag'; + +async function CreateParameters(overrides: any) { + if (overrides) { + Cli.options = overrides; + } + + return await BuildParameters.create(); +} + +describe('Cloud Runner Kubernetes', () => { + it('Responds', () => {}); + setups(); + if (CloudRunnerOptions.cloudRunnerDebug) { + it('Run one build it using K8s without error', async () => { + if (CloudRunnerOptions.providerStrategy !== `k8s`) { + return; + } + const overrides = { + versioning: 'None', + projectPath: 'test-project', + unityVersion: UnityVersioning.determineUnityVersion('test-project', UnityVersioning.read('test-project')), + targetPlatform: 'StandaloneLinux64', + cacheKey: `test-case-${uuidv4()}`, + containerHookFiles: `debug-cache`, + }; + const buildParameter = await CreateParameters(overrides); + expect(buildParameter.projectPath).toEqual(overrides.projectPath); + + const baseImage = new ImageTag(buildParameter); + const results = await CloudRunner.run(buildParameter, baseImage.toString()); + const libraryString = 'Rebuilding Library because the asset database could not be found!'; + const cachePushFail = 'Did not push source folder to cache because it was empty Library'; + const buildSucceededString = 'Build succeeded'; + + expect(results).toContain(libraryString); + expect(results).toContain(buildSucceededString); + expect(results).not.toContain(cachePushFail); + + CloudRunnerLogger.log(`run 1 succeeded`); + }, 1_000_000_000); + } +});