Changed structure of docker.js to match new standard

pull/184/head
maishiroma 2022-05-23 09:46:24 -07:00
parent ccedbb68b5
commit 10bbe05d2e
4 changed files with 254 additions and 183 deletions

211
dist/index.js generated vendored
View File

@ -154,99 +154,128 @@ const path_1 = __importDefault(__nccwpck_require__(1017));
const Docker = { const Docker = {
run(image, parameters, silent = false) { run(image, parameters, silent = false) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const { actionFolder, editorVersion, workspace, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, gitPrivateToken, githubToken, runnerTemporaryPath, } = parameters; let runCommand = '';
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home'); switch (process.platform) {
if (!(0, fs_1.existsSync)(githubHome)) case 'linux':
(0, fs_1.mkdirSync)(githubHome); runCommand = this.getLinuxCommand(image, parameters);
const githubWorkflow = path_1.default.join(runnerTemporaryPath, '_github_workflow'); break;
if (!(0, fs_1.existsSync)(githubWorkflow)) case 'win32':
(0, fs_1.mkdirSync)(githubWorkflow); runCommand = this.getWindowsCommand(image, parameters);
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';'); break;
const dockerPaths = new Map([ default:
[ throw new Error(`Operation system, ${process.platform}, is not supported yet.`);
'linux', }
new Map([ yield (0, exec_1.exec)(runCommand, undefined, { silent });
['shellCommand', '/bin/bash /dist/entrypoint.sh'],
['sshAgent', '/ssh-agent'],
['githubHome', '/root'],
['githubWorkflow', '/github/workflow'],
['githubWorkspace', '/github/workspace'],
['stepsPathParent', `${actionFolder}/steps`],
['stepsPathContainer', '/steps'],
['entrypointPathParent', `${actionFolder}/`],
['entrypointPathContainer', '/dist'],
['knownHostsParent', ' /home/runner/.ssh/known_hosts'],
['knownHostsContainer', '/root/.ssh/known_hosts'],
]),
],
[
'win32',
new Map([
['shellCommand', 'powershell C:\\dist\\entrypoint.ps1'],
['sshAgent', 'C:\\ssh-agent'],
['githubHome', 'C:\\root'],
['githubWorkflow', 'C:\\github\\workflow'],
['githubWorkspace', 'C:\\github\\workspace'],
['stepsPathParent', `${actionFolder}\\steps`],
['stepsPathContainer', 'C:\\steps'],
['entrypointPathParent', `${actionFolder}\\`],
['entrypointPathContainer', 'C:\\dist'],
['knownHostsParent', 'C:\\Users\\Administrator\\.ssh\\known_hosts'],
['knownHostsContainer', 'C:\\root\\.ssh\\known_hosts'],
]),
],
]);
const currentDockerPath = dockerPaths.get(process.platform);
const bindMountZ = process.platform === 'linux' ? ':z' : '';
const bindMountRO = process.platform === 'linux' ? ':ro' : '';
const command = `docker run \
--workdir /github/workspace \
--rm \
--env UNITY_LICENSE \
--env UNITY_LICENSE_FILE \
--env UNITY_EMAIL \
--env UNITY_PASSWORD \
--env UNITY_SERIAL \
--env UNITY_VERSION="${editorVersion}" \
--env PROJECT_PATH="${projectPath}" \
--env CUSTOM_PARAMETERS="${customParameters}" \
--env TEST_PLATFORMS="${testPlatforms}" \
--env COVERAGE_OPTIONS="${coverageOptions}" \
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
--env ARTIFACTS_PATH="${artifactsPath}" \
--env GITHUB_REF \
--env GITHUB_SHA \
--env GITHUB_REPOSITORY \
--env GITHUB_ACTOR \
--env GITHUB_WORKFLOW \
--env GITHUB_HEAD_REF \
--env GITHUB_BASE_REF \
--env GITHUB_EVENT_NAME \
--env GITHUB_WORKSPACE="${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('githubWorkspace')}" \
--env GITHUB_ACTION \
--env GITHUB_EVENT_PATH \
--env RUNNER_OS \
--env RUNNER_TOOL_CACHE \
--env RUNNER_TEMP \
--env RUNNER_WORKSPACE \
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
${sshAgent ? `--env SSH_AUTH_SOCK=${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('sshAgent')}` : ''} \
--volume "${githubHome}:${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('githubHome')}${bindMountZ}" \
--volume "${githubWorkflow}:${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('githubWorkflow')}${bindMountZ}" \
--volume "${workspace}:${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('githubWorkspace')}${bindMountZ}" \
--volume "${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('stepsPathParent')}:${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('stepsPathContainer')}${bindMountZ}" \
--volume "${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('entrypointPathParent')}:${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('entrypointPathContainer')}${bindMountZ}" \
${sshAgent ? `--volume ${sshAgent}:${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('sshAgent')}` : ''} \
${sshAgent
? `--volume ${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('knownHostParent')}${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('knownHostContainer')}${bindMountRO}`
: ''} \
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
${currentDockerPath === null || currentDockerPath === void 0 ? void 0 : currentDockerPath.get('shellCommand')}`;
yield (0, exec_1.exec)(command, undefined, { silent });
}); });
}, },
getLinuxCommand(image, parameters) {
const { actionFolder, editorVersion, workspace, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, gitPrivateToken, githubToken, runnerTemporaryPath, } = parameters;
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
if (!(0, fs_1.existsSync)(githubHome))
(0, fs_1.mkdirSync)(githubHome);
const githubWorkflow = path_1.default.join(runnerTemporaryPath, '_github_workflow');
if (!(0, fs_1.existsSync)(githubWorkflow))
(0, fs_1.mkdirSync)(githubWorkflow);
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
return `docker run \
--workdir /github/workspace \
--rm \
--env UNITY_LICENSE \
--env UNITY_LICENSE_FILE \
--env UNITY_EMAIL \
--env UNITY_PASSWORD \
--env UNITY_SERIAL \
--env UNITY_VERSION="${editorVersion}" \
--env PROJECT_PATH="${projectPath}" \
--env CUSTOM_PARAMETERS="${customParameters}" \
--env TEST_PLATFORMS="${testPlatforms}" \
--env COVERAGE_OPTIONS="${coverageOptions}" \
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
--env ARTIFACTS_PATH="${artifactsPath}" \
--env GITHUB_REF \
--env GITHUB_SHA \
--env GITHUB_REPOSITORY \
--env GITHUB_ACTOR \
--env GITHUB_WORKFLOW \
--env GITHUB_HEAD_REF \
--env GITHUB_BASE_REF \
--env GITHUB_EVENT_NAME \
--env GITHUB_WORKSPACE="/github/workspace" \
--env GITHUB_ACTION \
--env GITHUB_EVENT_PATH \
--env RUNNER_OS \
--env RUNNER_TOOL_CACHE \
--env RUNNER_TEMP \
--env RUNNER_WORKSPACE \
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
--volume "${githubHome}:/root:z" \
--volume "${githubWorkflow}:/github/workflow:z" \
--volume "${workspace}:/github/workspace:z" \
--volume "${actionFolder}/steps:/steps:z" \
--volume "${actionFolder}/entrypoint.sh:/entrypoint.sh:z" \
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
${sshAgent ? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro` : ''} \
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
/bin/bash -c /entrypoint.sh`;
},
getWindowsCommand(image, parameters) {
const { actionFolder, editorVersion, workspace, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, gitPrivateToken, githubToken, runnerTemporaryPath, } = parameters;
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
if (!(0, fs_1.existsSync)(githubHome))
(0, fs_1.mkdirSync)(githubHome);
const githubWorkflow = path_1.default.join(runnerTemporaryPath, '_github_workflow');
if (!(0, fs_1.existsSync)(githubWorkflow))
(0, fs_1.mkdirSync)(githubWorkflow);
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
return `docker run \
--workdir /github/workspace \
--rm \
--env UNITY_LICENSE \
--env UNITY_LICENSE_FILE \
--env UNITY_EMAIL \
--env UNITY_PASSWORD \
--env UNITY_SERIAL \
--env UNITY_VERSION="${editorVersion}" \
--env PROJECT_PATH="${projectPath}" \
--env CUSTOM_PARAMETERS="${customParameters}" \
--env TEST_PLATFORMS="${testPlatforms}" \
--env COVERAGE_OPTIONS="${coverageOptions}" \
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
--env ARTIFACTS_PATH="${artifactsPath}" \
--env GITHUB_REF \
--env GITHUB_SHA \
--env GITHUB_REPOSITORY \
--env GITHUB_ACTOR \
--env GITHUB_WORKFLOW \
--env GITHUB_HEAD_REF \
--env GITHUB_BASE_REF \
--env GITHUB_EVENT_NAME \
--env GITHUB_WORKSPACE="/github/workspace" \
--env GITHUB_ACTION \
--env GITHUB_EVENT_PATH \
--env RUNNER_OS \
--env RUNNER_TOOL_CACHE \
--env RUNNER_TEMP \
--env RUNNER_WORKSPACE \
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
--volume "${githubHome}":"c:/root" \
--volume "${githubWorkflow}":"c:/github/workflow" \
--volume "${workspace}":"c:/github/workspace" \
--volume "${actionFolder}/steps":"c:/steps" \
--volume "${actionFolder}":"c:/dist" \
${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
${sshAgent
? `--volume c:/Users/Administrator/.ssh/known_hosts:c:/root/.ssh/known_hosts`
: ''} \
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
powershell c:/dist/entrypoint.ps1`;
},
}; };
exports["default"] = Docker; exports["default"] = Docker;

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View File

@ -30,6 +30,7 @@ if ( ($null -ne ${env:UNITY_LICENSE}) -or ($null -ne ${env:UNITY_LICENSE_FILE})
} }
$convert = (Get-Content -Raw $FILE_PATH) -replace "`r`n","`n" $convert = (Get-Content -Raw $FILE_PATH) -replace "`r`n","`n"
[io.file]::WriteAllText($FILE_PATH, $convert) [io.file]::WriteAllText($FILE_PATH, $convert)
Get-ChildItem -Path $FILE_PATH
# Activate license # Activate license
$ACTIVATION_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $ACTIVATE_LICENSE_PATH\activate.log -quit -manualLicenseFile $FILE_PATH" $ACTIVATION_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $ACTIVATE_LICENSE_PATH\activate.log -quit -manualLicenseFile $FILE_PATH"

View File

@ -4,6 +4,21 @@ import path from 'path';
const Docker = { const Docker = {
async run(image, parameters, silent = false) { async run(image, parameters, silent = false) {
let runCommand = '';
switch (process.platform) {
case 'linux':
runCommand = this.getLinuxCommand(image, parameters);
break;
case 'win32':
runCommand = this.getWindowsCommand(image, parameters);
break;
default:
throw new Error(`Operation system, ${process.platform}, is not supported yet.`);
}
await exec(runCommand, undefined, { silent });
},
getLinuxCommand(image, parameters): string {
const { const {
actionFolder, actionFolder,
editorVersion, editorVersion,
@ -28,99 +43,125 @@ const Docker = {
testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode] testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]
).join(';'); ).join(';');
const dockerPaths = new Map([ return `docker run \
[ --workdir /github/workspace \
'linux', --rm \
new Map([ --env UNITY_LICENSE \
['shellCommand', '/bin/bash /dist/entrypoint.sh'], --env UNITY_LICENSE_FILE \
['sshAgent', '/ssh-agent'], --env UNITY_EMAIL \
['githubHome', '/root'], --env UNITY_PASSWORD \
['githubWorkflow', '/github/workflow'], --env UNITY_SERIAL \
['githubWorkspace', '/github/workspace'], --env UNITY_VERSION="${editorVersion}" \
['stepsPathParent', `${actionFolder}/steps`], --env PROJECT_PATH="${projectPath}" \
['stepsPathContainer', '/steps'], --env CUSTOM_PARAMETERS="${customParameters}" \
['entrypointPathParent', `${actionFolder}/`], --env TEST_PLATFORMS="${testPlatforms}" \
['entrypointPathContainer', '/dist'], --env COVERAGE_OPTIONS="${coverageOptions}" \
['knownHostsParent', ' /home/runner/.ssh/known_hosts'], --env COVERAGE_RESULTS_PATH="CodeCoverage" \
['knownHostsContainer', '/root/.ssh/known_hosts'], --env ARTIFACTS_PATH="${artifactsPath}" \
]), --env GITHUB_REF \
], --env GITHUB_SHA \
[ --env GITHUB_REPOSITORY \
'win32', --env GITHUB_ACTOR \
new Map([ --env GITHUB_WORKFLOW \
['shellCommand', 'powershell C:\\dist\\entrypoint.ps1'], --env GITHUB_HEAD_REF \
['sshAgent', 'C:\\ssh-agent'], --env GITHUB_BASE_REF \
['githubHome', 'C:\\root'], --env GITHUB_EVENT_NAME \
['githubWorkflow', 'C:\\github\\workflow'], --env GITHUB_WORKSPACE="/github/workspace" \
['githubWorkspace', 'C:\\github\\workspace'], --env GITHUB_ACTION \
['stepsPathParent', `${actionFolder}\\steps`], --env GITHUB_EVENT_PATH \
['stepsPathContainer', 'C:\\steps'], --env RUNNER_OS \
['entrypointPathParent', `${actionFolder}\\`], --env RUNNER_TOOL_CACHE \
['entrypointPathContainer', 'C:\\dist'], --env RUNNER_TEMP \
['knownHostsParent', 'C:\\Users\\Administrator\\.ssh\\known_hosts'], --env RUNNER_WORKSPACE \
['knownHostsContainer', 'C:\\root\\.ssh\\known_hosts'], --env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
]), ${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
], --volume "${githubHome}:/root:z" \
]); --volume "${githubWorkflow}:/github/workflow:z" \
const currentDockerPath = dockerPaths.get(process.platform); --volume "${workspace}:/github/workspace:z" \
const bindMountZ = process.platform === 'linux' ? ':z' : ''; --volume "${actionFolder}/steps:/steps:z" \
const bindMountRO = process.platform === 'linux' ? ':ro' : ''; --volume "${actionFolder}/entrypoint.sh:/entrypoint.sh:z" \
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
${
sshAgent ? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro` : ''
} \
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
/bin/bash -c /entrypoint.sh`;
},
const command = `docker run \ getWindowsCommand(image, parameters): string {
--workdir /github/workspace \ const {
--rm \ actionFolder,
--env UNITY_LICENSE \ editorVersion,
--env UNITY_LICENSE_FILE \ workspace,
--env UNITY_EMAIL \ projectPath,
--env UNITY_PASSWORD \ customParameters,
--env UNITY_SERIAL \ testMode,
--env UNITY_VERSION="${editorVersion}" \ coverageOptions,
--env PROJECT_PATH="${projectPath}" \ artifactsPath,
--env CUSTOM_PARAMETERS="${customParameters}" \ useHostNetwork,
--env TEST_PLATFORMS="${testPlatforms}" \ sshAgent,
--env COVERAGE_OPTIONS="${coverageOptions}" \ gitPrivateToken,
--env COVERAGE_RESULTS_PATH="CodeCoverage" \ githubToken,
--env ARTIFACTS_PATH="${artifactsPath}" \ runnerTemporaryPath,
--env GITHUB_REF \ } = parameters;
--env GITHUB_SHA \
--env GITHUB_REPOSITORY \
--env GITHUB_ACTOR \
--env GITHUB_WORKFLOW \
--env GITHUB_HEAD_REF \
--env GITHUB_BASE_REF \
--env GITHUB_EVENT_NAME \
--env GITHUB_WORKSPACE="${currentDockerPath?.get('githubWorkspace')}" \
--env GITHUB_ACTION \
--env GITHUB_EVENT_PATH \
--env RUNNER_OS \
--env RUNNER_TOOL_CACHE \
--env RUNNER_TEMP \
--env RUNNER_WORKSPACE \
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
${sshAgent ? `--env SSH_AUTH_SOCK=${currentDockerPath?.get('sshAgent')}` : ''} \
--volume "${githubHome}:${currentDockerPath?.get('githubHome')}${bindMountZ}" \
--volume "${githubWorkflow}:${currentDockerPath?.get('githubWorkflow')}${bindMountZ}" \
--volume "${workspace}:${currentDockerPath?.get('githubWorkspace')}${bindMountZ}" \
--volume "${currentDockerPath?.get('stepsPathParent')}:${currentDockerPath?.get(
'stepsPathContainer',
)}${bindMountZ}" \
--volume "${currentDockerPath?.get('entrypointPathParent')}:${currentDockerPath?.get(
'entrypointPathContainer',
)}${bindMountZ}" \
${sshAgent ? `--volume ${sshAgent}:${currentDockerPath?.get('sshAgent')}` : ''} \
${
sshAgent
? `--volume ${currentDockerPath?.get('knownHostParent')}${currentDockerPath?.get(
'knownHostContainer',
)}${bindMountRO}`
: ''
} \
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
${currentDockerPath?.get('shellCommand')}`;
await exec(command, undefined, { silent }); const githubHome = path.join(runnerTemporaryPath, '_github_home');
if (!existsSync(githubHome)) mkdirSync(githubHome);
const githubWorkflow = path.join(runnerTemporaryPath, '_github_workflow');
if (!existsSync(githubWorkflow)) mkdirSync(githubWorkflow);
const testPlatforms = (
testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]
).join(';');
return `docker run \
--workdir /github/workspace \
--rm \
--env UNITY_LICENSE \
--env UNITY_LICENSE_FILE \
--env UNITY_EMAIL \
--env UNITY_PASSWORD \
--env UNITY_SERIAL \
--env UNITY_VERSION="${editorVersion}" \
--env PROJECT_PATH="${projectPath}" \
--env CUSTOM_PARAMETERS="${customParameters}" \
--env TEST_PLATFORMS="${testPlatforms}" \
--env COVERAGE_OPTIONS="${coverageOptions}" \
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
--env ARTIFACTS_PATH="${artifactsPath}" \
--env GITHUB_REF \
--env GITHUB_SHA \
--env GITHUB_REPOSITORY \
--env GITHUB_ACTOR \
--env GITHUB_WORKFLOW \
--env GITHUB_HEAD_REF \
--env GITHUB_BASE_REF \
--env GITHUB_EVENT_NAME \
--env GITHUB_WORKSPACE="/github/workspace" \
--env GITHUB_ACTION \
--env GITHUB_EVENT_PATH \
--env RUNNER_OS \
--env RUNNER_TOOL_CACHE \
--env RUNNER_TEMP \
--env RUNNER_WORKSPACE \
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
--volume "${githubHome}":"c:/root" \
--volume "${githubWorkflow}":"c:/github/workflow" \
--volume "${workspace}":"c:/github/workspace" \
--volume "${actionFolder}/steps":"c:/steps" \
--volume "${actionFolder}":"c:/dist" \
${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
${
sshAgent
? `--volume c:/Users/Administrator/.ssh/known_hosts:c:/root/.ssh/known_hosts`
: ''
} \
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
powershell c:/dist/entrypoint.ps1`;
}, },
}; };