From 0fa08423d23c56e5089e2d05fc4ac40f5ea79151 Mon Sep 17 00:00:00 2001 From: TingluoHuang Date: Thu, 14 Oct 2021 15:28:59 -0400 Subject: [PATCH] . --- .../podmanHandler/src/podmanHandler.ts | 42 ++++++++++++++----- src/Misc/layoutbin/podmanHandler/index.js | 33 ++++++++++----- .../ContainerOperationProvider.cs | 8 ++-- 3 files changed, 57 insertions(+), 26 deletions(-) diff --git a/src/Misc/containerEngineHandlers/podmanHandler/src/podmanHandler.ts b/src/Misc/containerEngineHandlers/podmanHandler/src/podmanHandler.ts index 333fddcc3..0833be68d 100644 --- a/src/Misc/containerEngineHandlers/podmanHandler/src/podmanHandler.ts +++ b/src/Misc/containerEngineHandlers/podmanHandler/src/podmanHandler.ts @@ -51,15 +51,33 @@ async function run(): Promise { // -v "/home/runner/work/_temp/_github_home":"/github/home" // -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" // --entrypoint "tail" node:10.16-jessie "-f" "/dev/null" - const containerId = await exec.getExecOutput('podman', [ - 'create', - // `--workdir ${jobContainer.containerWorkDirectory}`, - `--network=${networkName}`, - // `-v /Users/ting/Desktop/runner/_layout/_work:/__w`, - `--entrypoint=${jobContainer.containerEntryPoint}`, - `${containerImage}`, - `${jobContainer.containerEntryPointArgs}` - ]) + const creatArgs = ['create'] + creatArgs.push(`--workdir=${jobContainer.containerWorkDirectory}`) + creatArgs.push(`--network=${networkName}`) + creatArgs.push(`--entrypoint=${jobContainer.containerEntryPoint}`) + + for (const mountVolume of jobContainer.mountVolumes) { + creatArgs.push( + `-v=${mountVolume.sourceVolumePath}:${mountVolume.targetVolumePath}` + ) + } + + creatArgs.push(containerImage) + creatArgs.push(jobContainer.containerEntryPointArgs) + + core.debug(JSON.stringify(creatArgs)) + + // const containerId = await exec.getExecOutput('podman', [ + // 'create', + // // `--workdir ${jobContainer.containerWorkDirectory}`, + // `--network=${networkName}`, + // // `-v=/Users/ting/Desktop/runner/_layout/_work:/__w`, + // `--entrypoint=${jobContainer.containerEntryPoint}`, + // `${containerImage}`, + // `${jobContainer.containerEntryPointArgs}` + // ]) + + const containerId = await exec.getExecOutput('podman', creatArgs) core.debug(JSON.stringify(containerId)) @@ -78,7 +96,9 @@ async function run(): Promise { const output = JSON.stringify({CreationOutput: creationOutput}) core.debug(output) - process.stderr.write(output) + process.stderr.write( + `___CONTAINER_ENGINE_HANDLER_OUTPUT___${output}___CONTAINER_ENGINE_HANDLER_OUTPUT___` + ) } else if (command === 'Remove') { const removeInput = inputJson.removeInput core.debug(JSON.stringify(removeInput)) @@ -91,7 +111,7 @@ async function run(): Promise { // else if (command === 'Exec') { // } await exec.exec('podman', ['network', 'ls']) - await exec.exec('podman', ['network', 'ps', '-a']) + await exec.exec('podman', ['ps', '-a']) } run() diff --git a/src/Misc/layoutbin/podmanHandler/index.js b/src/Misc/layoutbin/podmanHandler/index.js index b3c64e0b9..741c25ae1 100644 --- a/src/Misc/layoutbin/podmanHandler/index.js +++ b/src/Misc/layoutbin/podmanHandler/index.js @@ -1089,15 +1089,26 @@ function run() { // -v "/home/runner/work/_temp/_github_home":"/github/home" // -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" // --entrypoint "tail" node:10.16-jessie "-f" "/dev/null" - const containerId = yield exec.getExecOutput('podman', [ - 'create', - // `--workdir ${jobContainer.containerWorkDirectory}`, - `--network=${networkName}`, - // `-v /Users/ting/Desktop/runner/_layout/_work:/__w`, - `--entrypoint=${jobContainer.containerEntryPoint}`, - `${containerImage}`, - `${jobContainer.containerEntryPointArgs}` - ]); + const creatArgs = ['create']; + creatArgs.push(`--workdir=${jobContainer.containerWorkDirectory}`); + creatArgs.push(`--network=${networkName}`); + creatArgs.push(`--entrypoint=${jobContainer.containerEntryPoint}`); + for (const mountVolume of jobContainer.mountVolumes) { + creatArgs.push(`-v=${mountVolume.sourceVolumePath}:${mountVolume.targetVolumePath}`); + } + creatArgs.push(containerImage); + creatArgs.push(jobContainer.containerEntryPointArgs); + core.debug(JSON.stringify(creatArgs)); + // const containerId = await exec.getExecOutput('podman', [ + // 'create', + // // `--workdir ${jobContainer.containerWorkDirectory}`, + // `--network=${networkName}`, + // // `-v=/Users/ting/Desktop/runner/_layout/_work:/__w`, + // `--entrypoint=${jobContainer.containerEntryPoint}`, + // `${containerImage}`, + // `${jobContainer.containerEntryPointArgs}` + // ]) + const containerId = yield exec.getExecOutput('podman', creatArgs); core.debug(JSON.stringify(containerId)); // podman start {containerId} yield exec.exec('podman', ['start', containerId.stdout.trim()]); @@ -1109,7 +1120,7 @@ function run() { }; const output = JSON.stringify({ CreationOutput: creationOutput }); core.debug(output); - process.stderr.write(output); + process.stderr.write(`___CONTAINER_ENGINE_HANDLER_OUTPUT___${output}___CONTAINER_ENGINE_HANDLER_OUTPUT___`); } else if (command === 'Remove') { const removeInput = inputJson.removeInput; @@ -1122,7 +1133,7 @@ function run() { // else if (command === 'Exec') { // } yield exec.exec('podman', ['network', 'ls']); - yield exec.exec('podman', ['network', 'ps', '-a']); + yield exec.exec('podman', ['ps', '-a']); }); } run(); diff --git a/src/Runner.Worker/ContainerOperationProvider.cs b/src/Runner.Worker/ContainerOperationProvider.cs index 1408becc7..243c89980 100644 --- a/src/Runner.Worker/ContainerOperationProvider.cs +++ b/src/Runner.Worker/ContainerOperationProvider.cs @@ -161,11 +161,11 @@ namespace GitHub.Runner.Worker processInvoker.ErrorDataReceived += delegate (object sender, ProcessDataReceivedEventArgs message) { executionContext.Output(message.Data); - if (podmanOutput == null) + if (podmanOutput == null && message.Data.IndexOf("___CONTAINER_ENGINE_HANDLER_OUTPUT___") >= 0) { try { - podmanOutput = JsonUtility.FromString(message.Data); + podmanOutput = JsonUtility.FromString(message.Data.Replace("___CONTAINER_ENGINE_HANDLER_OUTPUT___", "")); } catch (Exception ex) { @@ -335,11 +335,11 @@ namespace GitHub.Runner.Worker processInvoker.ErrorDataReceived += delegate (object sender, ProcessDataReceivedEventArgs message) { executionContext.Output(message.Data); - if (podmanOutput == null) + if (podmanOutput == null && message.Data.IndexOf("___CONTAINER_ENGINE_HANDLER_OUTPUT___") >= 0) { try { - podmanOutput = JsonUtility.FromString(message.Data); + podmanOutput = JsonUtility.FromString(message.Data.Replace("___CONTAINER_ENGINE_HANDLER_OUTPUT___", "")); } catch (Exception ex) {