unity-test-runner/src/model/docker.ts

74 lines
2.4 KiB
TypeScript
Raw Normal View History

import { existsSync, mkdirSync } from 'fs';
import { exec } from '@actions/exec';
import path from 'path';
2020-01-29 21:22:26 +00:00
const Docker = {
async run(image, parameters, silent = false) {
2020-01-30 23:57:08 +00:00
const {
actionFolder,
2020-01-30 23:57:08 +00:00
unityVersion,
workspace,
projectPath,
2022-01-01 20:38:47 +00:00
customParameters,
2020-01-30 23:57:08 +00:00
testMode,
artifactsPath,
2020-04-01 20:24:13 +00:00
useHostNetwork,
sshAgent,
gitPrivateToken,
2022-01-01 20:38:47 +00:00
githubToken,
runnerTempPath,
2020-01-30 23:57:08 +00:00
} = parameters;
2020-01-29 21:22:26 +00:00
const githubHome = path.join(runnerTempPath, '_github_home');
if (!existsSync(githubHome)) mkdirSync(githubHome);
const githubWorkflow = path.join(runnerTempPath, '_github_workflow');
if (!existsSync(githubWorkflow)) mkdirSync(githubWorkflow);
2020-01-29 21:22:26 +00:00
const command = `docker run \
--workdir /github/workspace \
--rm \
--env UNITY_LICENSE \
--env UNITY_LICENSE_FILE \
2020-01-29 21:22:26 +00:00
--env UNITY_EMAIL \
--env UNITY_PASSWORD \
--env UNITY_SERIAL \
2020-02-01 19:41:14 +00:00
--env UNITY_VERSION="${unityVersion}" \
--env PROJECT_PATH="${projectPath}" \
2022-01-01 20:38:47 +00:00
--env CUSTOM_PARAMETERS="${customParameters}" \
2020-02-01 19:41:14 +00:00
--env TEST_MODE="${testMode}" \
--env ARTIFACTS_PATH="${artifactsPath}" \
2020-01-29 21:22:26 +00:00
--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' : ''} \
2020-04-01 20:24:13 +00:00
${useHostNetwork ? '--net=host' : ''} \
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
${image} \
/bin/bash /entrypoint.sh`;
2020-01-29 21:22:26 +00:00
await exec(command, undefined, { silent });
},
};
2020-01-29 21:22:26 +00:00
export default Docker;