2021-05-23 04:08:40 +00:00
|
|
|
import AWSBuildPlatform from './aws-build-platform';
|
|
|
|
|
import * as core from '@actions/core';
|
|
|
|
|
import { BuildParameters } from '..';
|
2021-05-23 21:24:26 +00:00
|
|
|
import RemoteBuilderNamespace from './remote-builder-namespace';
|
2021-06-06 19:59:34 +00:00
|
|
|
import RemoteBuilderSecret from './remote-builder-secret';
|
2021-06-18 20:36:45 +00:00
|
|
|
import { RemoteBuilderProviderInterface } from './remote-builder-provider-interface';
|
|
|
|
|
import Kubernetes from './kubernetes-build-platform';
|
2021-06-19 04:27:24 +00:00
|
|
|
const repositoryFolder = 'repo';
|
|
|
|
|
const buildVolumeFolder = 'data';
|
|
|
|
|
const cacheFolder = 'cache';
|
2021-05-23 04:08:40 +00:00
|
|
|
|
|
|
|
|
class RemoteBuilder {
|
|
|
|
|
static SteamDeploy: boolean = false;
|
2021-06-18 20:36:45 +00:00
|
|
|
static RemoteBuilderProviderPlatform: RemoteBuilderProviderInterface;
|
2021-05-23 04:08:40 +00:00
|
|
|
static async build(buildParameters: BuildParameters, baseImage) {
|
2021-06-19 22:15:44 +00:00
|
|
|
const runNumber = process.env.GITHUB_RUN_NUMBER;
|
|
|
|
|
if (!runNumber || runNumber === '') {
|
|
|
|
|
throw new Error('no run number found, exiting');
|
|
|
|
|
}
|
|
|
|
|
const buildUid = RemoteBuilderNamespace.generateBuildName(runNumber, buildParameters.platform);
|
|
|
|
|
const defaultBranchName =
|
|
|
|
|
process.env.GITHUB_REF?.split('/')
|
|
|
|
|
.filter((x) => {
|
|
|
|
|
x = x[0].toUpperCase() + x.slice(1);
|
|
|
|
|
return x;
|
|
|
|
|
})
|
|
|
|
|
.join('') || '';
|
|
|
|
|
const branchName =
|
|
|
|
|
process.env.REMOTE_BUILDER_CACHE !== undefined ? process.env.REMOTE_BUILDER_CACHE : defaultBranchName;
|
|
|
|
|
this.SteamDeploy = process.env.STEAM_DEPLOY !== undefined || false;
|
|
|
|
|
const token: string = buildParameters.githubToken;
|
|
|
|
|
const defaultSecretsArray = [
|
|
|
|
|
{
|
|
|
|
|
ParameterKey: 'GithubToken',
|
|
|
|
|
EnvironmentVariable: 'GITHUB_TOKEN',
|
|
|
|
|
ParameterValue: token,
|
|
|
|
|
},
|
|
|
|
|
];
|
2021-05-23 04:08:40 +00:00
|
|
|
try {
|
2021-06-18 20:36:45 +00:00
|
|
|
switch (buildParameters.remoteBuildCluster) {
|
|
|
|
|
case 'aws':
|
2021-06-19 20:06:11 +00:00
|
|
|
core.info('Building with AWS');
|
2021-06-19 20:35:22 +00:00
|
|
|
this.RemoteBuilderProviderPlatform = new AWSBuildPlatform(buildParameters);
|
2021-06-18 20:36:45 +00:00
|
|
|
break;
|
|
|
|
|
default:
|
2021-06-19 20:06:11 +00:00
|
|
|
case 'k8s':
|
|
|
|
|
core.info('Building with Kubernetes');
|
2021-06-19 20:35:22 +00:00
|
|
|
this.RemoteBuilderProviderPlatform = new Kubernetes(buildParameters);
|
2021-06-18 20:36:45 +00:00
|
|
|
break;
|
|
|
|
|
}
|
2021-06-19 23:06:44 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.setupSharedBuildResources(
|
2021-06-19 22:15:44 +00:00
|
|
|
buildUid,
|
|
|
|
|
buildParameters,
|
|
|
|
|
branchName,
|
|
|
|
|
defaultSecretsArray,
|
|
|
|
|
);
|
2021-06-26 03:18:14 +00:00
|
|
|
await RemoteBuilder.SetupStep(`setup${buildUid}`, buildParameters, branchName, defaultSecretsArray);
|
|
|
|
|
await RemoteBuilder.BuildStep(`build${buildUid}`, buildParameters, baseImage, defaultSecretsArray);
|
|
|
|
|
await RemoteBuilder.CompressionStep(`compress${buildUid}`, buildParameters, branchName, defaultSecretsArray);
|
|
|
|
|
await RemoteBuilder.UploadArtifacts(`upload${buildUid}`, buildParameters, branchName, defaultSecretsArray);
|
2021-05-23 04:08:40 +00:00
|
|
|
if (this.SteamDeploy) {
|
|
|
|
|
await RemoteBuilder.DeployToSteam(buildUid, buildParameters, defaultSecretsArray);
|
|
|
|
|
}
|
2021-06-19 23:06:44 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
2021-06-19 22:15:44 +00:00
|
|
|
buildUid,
|
|
|
|
|
buildParameters,
|
|
|
|
|
branchName,
|
|
|
|
|
defaultSecretsArray,
|
|
|
|
|
);
|
2021-05-23 04:08:40 +00:00
|
|
|
} catch (error) {
|
2021-06-19 23:06:44 +00:00
|
|
|
core.error(JSON.stringify(error, undefined, 4));
|
|
|
|
|
core.setFailed('Remote Builder failed');
|
|
|
|
|
await this.RemoteBuilderProviderPlatform.cleanupSharedBuildResources(
|
2021-06-19 22:15:44 +00:00
|
|
|
buildUid,
|
|
|
|
|
buildParameters,
|
|
|
|
|
branchName,
|
|
|
|
|
defaultSecretsArray,
|
|
|
|
|
);
|
2021-06-26 03:26:38 +00:00
|
|
|
throw error;
|
2021-05-23 04:08:40 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async SetupStep(
|
|
|
|
|
buildUid: string,
|
|
|
|
|
buildParameters: BuildParameters,
|
|
|
|
|
branchName: string | undefined,
|
2021-06-06 19:59:34 +00:00
|
|
|
defaultSecretsArray: RemoteBuilderSecret[],
|
2021-05-23 04:08:40 +00:00
|
|
|
) {
|
|
|
|
|
core.info('Starting step 1/4 clone and restore cache)');
|
2021-07-02 21:50:53 +00:00
|
|
|
const cacheFolderFull = `/${buildVolumeFolder}/${cacheFolder}`;
|
2021-07-02 22:29:13 +00:00
|
|
|
const buildPathFull = `/${buildVolumeFolder}/${buildUid}`;
|
|
|
|
|
const builderPathFull = `${buildPathFull}/builder`;
|
|
|
|
|
const steamPathFull = `${buildPathFull}/steam`;
|
|
|
|
|
const repoPathFull = `${buildPathFull}/${repositoryFolder}`;
|
2021-07-01 21:59:18 +00:00
|
|
|
const projectPathFull = `${repoPathFull}/${buildParameters.projectPath}`;
|
|
|
|
|
const libraryFolderFull = `${projectPathFull}/Library`;
|
2021-06-19 04:49:32 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
2021-05-23 04:08:40 +00:00
|
|
|
buildUid,
|
|
|
|
|
'alpine/git',
|
|
|
|
|
[
|
|
|
|
|
`apk update;
|
|
|
|
|
apk add unzip;
|
|
|
|
|
apk add git-lfs;
|
|
|
|
|
apk add jq;
|
2021-07-02 22:29:13 +00:00
|
|
|
mkdir ${buildPathFull}
|
2021-07-02 22:15:51 +00:00
|
|
|
mkdir ${builderPathFull}
|
|
|
|
|
mkdir ${repoPathFull}
|
|
|
|
|
mkdir ${steamPathFull}
|
2021-07-02 22:39:32 +00:00
|
|
|
echo "Cloning utility repositories required for building:"
|
2021-07-02 22:43:15 +00:00
|
|
|
git clone -q https://${buildParameters.githubToken}@github.com/game-ci/unity-builder.git ${builderPathFull}
|
|
|
|
|
git clone -q https://${buildParameters.githubToken}@github.com/game-ci/steam-deploy.git ${steamPathFull}
|
2021-07-02 22:15:51 +00:00
|
|
|
cd ${repoPathFull}
|
|
|
|
|
# DISABLE LFS
|
2021-07-01 21:59:18 +00:00
|
|
|
git config --global filter.lfs.smudge "git-lfs smudge --skip -- %f"
|
|
|
|
|
git config --global filter.lfs.process "git-lfs filter-process --skip"
|
2021-07-02 22:51:56 +00:00
|
|
|
echo ''
|
2021-07-02 22:39:32 +00:00
|
|
|
echo "Cloning the repository being built:"
|
2021-07-02 22:15:51 +00:00
|
|
|
git init
|
|
|
|
|
git remote add origin https://${buildParameters.githubToken}@github.com/${process.env.GITHUB_REPOSITORY}.git
|
|
|
|
|
git fetch origin
|
2021-07-02 22:02:13 +00:00
|
|
|
git reset --hard $GITHUB_SHA
|
2021-07-02 22:51:56 +00:00
|
|
|
echo ''
|
2021-07-02 22:39:32 +00:00
|
|
|
echo "Combining LFS hash files into one hash, this is used as the cache key:"
|
2021-07-02 22:45:12 +00:00
|
|
|
git lfs ls-files -l | cut -d' ' -f1 | sort > ${repoPathFull}/lfsSum.txt
|
2021-07-02 22:39:32 +00:00
|
|
|
ls -a
|
2021-07-02 22:45:12 +00:00
|
|
|
cat ${repoPathFull}/lfsSum.txt
|
|
|
|
|
echo '^ checksum'
|
2021-07-02 22:51:56 +00:00
|
|
|
echo ''
|
2021-07-01 22:12:21 +00:00
|
|
|
# time to handle library cache
|
2021-07-01 21:59:18 +00:00
|
|
|
if [ ! -d ${cacheFolderFull} ]; then
|
|
|
|
|
mkdir ${cacheFolderFull}
|
|
|
|
|
echo "creating new cache folder"
|
2021-05-23 04:08:40 +00:00
|
|
|
fi
|
2021-07-01 21:59:18 +00:00
|
|
|
if [ ! -d ${cacheFolderFull}/${branchName} ]; then
|
|
|
|
|
mkdir ${cacheFolderFull}/${branchName}
|
|
|
|
|
echo "creating new cache branch folder for: ${branchName}"
|
2021-05-23 04:08:40 +00:00
|
|
|
fi
|
2021-07-01 21:59:18 +00:00
|
|
|
echo "Library cache for branch: ${branchName}"
|
|
|
|
|
ls ${cacheFolderFull}/${branchName}
|
2021-05-23 04:08:40 +00:00
|
|
|
echo ''
|
2021-07-01 21:59:18 +00:00
|
|
|
if [ -d ${libraryFolderFull} ]; then
|
|
|
|
|
rm -r ${libraryFolderFull}
|
2021-07-01 22:12:21 +00:00
|
|
|
echo "Git must ignore the Library folder"
|
2021-05-23 04:08:40 +00:00
|
|
|
fi
|
2021-07-01 22:12:21 +00:00
|
|
|
echo "Checking cache"
|
2021-05-23 04:08:40 +00:00
|
|
|
# Restore cache
|
|
|
|
|
latest=$(ls -t | head -1)
|
|
|
|
|
if [ ! -z "$latest" ]; then
|
|
|
|
|
echo "Library cache exists from build $latest from ${branchName}"
|
|
|
|
|
echo 'Creating empty Library folder for cache'
|
|
|
|
|
mkdir $libDir
|
|
|
|
|
unzip -q $latest -d $libDir
|
|
|
|
|
# purge cache
|
|
|
|
|
${process.env.PURGE_REMOTE_BUILDER_CACHE === undefined ? '#' : ''} rm -r $libDir
|
|
|
|
|
else
|
|
|
|
|
echo 'Cache does not exist'
|
|
|
|
|
fi
|
|
|
|
|
# Print out important directories
|
|
|
|
|
echo ''
|
|
|
|
|
echo 'Repo:'
|
2021-06-19 04:27:24 +00:00
|
|
|
ls /${buildVolumeFolder}/${buildUid}/${repositoryFolder}/
|
2021-05-23 04:08:40 +00:00
|
|
|
echo ''
|
|
|
|
|
echo 'Project:'
|
2021-06-19 04:27:24 +00:00
|
|
|
ls /${buildVolumeFolder}/${buildUid}/${repositoryFolder}/${buildParameters.projectPath}
|
2021-05-23 04:08:40 +00:00
|
|
|
echo ''
|
|
|
|
|
echo 'Library:'
|
2021-06-19 04:27:24 +00:00
|
|
|
ls /${buildVolumeFolder}/${buildUid}/${repositoryFolder}/${buildParameters.projectPath}/Library/
|
2021-05-23 04:08:40 +00:00
|
|
|
echo ''
|
|
|
|
|
`,
|
|
|
|
|
],
|
2021-06-19 04:27:24 +00:00
|
|
|
`/${buildVolumeFolder}`,
|
|
|
|
|
`/${buildVolumeFolder}/`,
|
2021-05-23 04:08:40 +00:00
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
name: 'GITHUB_SHA',
|
|
|
|
|
value: process.env.GITHUB_SHA || '',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
defaultSecretsArray,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async BuildStep(
|
|
|
|
|
buildUid: string,
|
|
|
|
|
buildParameters: BuildParameters,
|
|
|
|
|
baseImage: any,
|
2021-06-06 19:59:34 +00:00
|
|
|
defaultSecretsArray: RemoteBuilderSecret[],
|
2021-05-23 04:08:40 +00:00
|
|
|
) {
|
|
|
|
|
const buildSecrets = new Array();
|
|
|
|
|
|
|
|
|
|
buildSecrets.push(...defaultSecretsArray);
|
|
|
|
|
|
|
|
|
|
if (process.env.UNITY_LICENSE)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'UnityLicense',
|
|
|
|
|
EnvironmentVariable: 'UNITY_LICENSE',
|
|
|
|
|
ParameterValue: process.env.UNITY_LICENSE,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (process.env.UNITY_EMAIL)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'UnityEmail',
|
|
|
|
|
EnvironmentVariable: 'UNITY_EMAIL',
|
|
|
|
|
ParameterValue: process.env.UNITY_EMAIL,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (process.env.UNITY_PASSWORD)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'UnityPassword',
|
|
|
|
|
EnvironmentVariable: 'UNITY_PASSWORD',
|
|
|
|
|
ParameterValue: process.env.UNITY_PASSWORD,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (process.env.UNITY_SERIAL)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'UnitySerial',
|
|
|
|
|
EnvironmentVariable: 'UNITY_SERIAL',
|
|
|
|
|
ParameterValue: process.env.UNITY_SERIAL,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (buildParameters.androidKeystoreBase64)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'AndroidKeystoreBase64',
|
|
|
|
|
EnvironmentVariable: 'ANDROID_KEYSTORE_BASE64',
|
|
|
|
|
ParameterValue: buildParameters.androidKeystoreBase64,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (buildParameters.androidKeystorePass)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'AndroidKeystorePass',
|
|
|
|
|
EnvironmentVariable: 'ANDROID_KEYSTORE_PASS',
|
|
|
|
|
ParameterValue: buildParameters.androidKeystorePass,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (buildParameters.androidKeyaliasPass)
|
|
|
|
|
buildSecrets.push({
|
|
|
|
|
ParameterKey: 'AndroidKeyAliasPass',
|
|
|
|
|
EnvironmentVariable: 'AWS_ACCESS_KEY_ALIAS_PASS',
|
|
|
|
|
ParameterValue: buildParameters.androidKeyaliasPass,
|
|
|
|
|
});
|
|
|
|
|
core.info('Starting part 2/4 (build unity project)');
|
2021-06-19 04:49:32 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
2021-05-23 04:08:40 +00:00
|
|
|
buildUid,
|
|
|
|
|
baseImage.toString(),
|
|
|
|
|
[
|
|
|
|
|
`
|
2021-06-19 04:27:24 +00:00
|
|
|
cp -r /${buildVolumeFolder}/${buildUid}/builder/dist/default-build-script/ /UnityBuilderAction;
|
|
|
|
|
cp -r /${buildVolumeFolder}/${buildUid}/builder/dist/entrypoint.sh /entrypoint.sh;
|
|
|
|
|
cp -r /${buildVolumeFolder}/${buildUid}/builder/dist/steps/ /steps;
|
2021-05-23 04:08:40 +00:00
|
|
|
chmod -R +x /entrypoint.sh;
|
|
|
|
|
chmod -R +x /steps;
|
|
|
|
|
/entrypoint.sh;
|
|
|
|
|
`,
|
|
|
|
|
],
|
2021-06-19 04:27:24 +00:00
|
|
|
`/${buildVolumeFolder}`,
|
|
|
|
|
`/${buildVolumeFolder}/${buildUid}/${repositoryFolder}/`,
|
2021-05-23 04:08:40 +00:00
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
name: 'ContainerMemory',
|
|
|
|
|
value: buildParameters.remoteBuildMemory,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'ContainerCpu',
|
|
|
|
|
value: buildParameters.remoteBuildCpu,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'GITHUB_WORKSPACE',
|
2021-06-19 04:27:24 +00:00
|
|
|
value: `/${buildVolumeFolder}/${buildUid}/${repositoryFolder}/`,
|
2021-05-23 04:08:40 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'PROJECT_PATH',
|
|
|
|
|
value: buildParameters.projectPath,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'BUILD_PATH',
|
|
|
|
|
value: buildParameters.buildPath,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'BUILD_FILE',
|
|
|
|
|
value: buildParameters.buildFile,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'BUILD_NAME',
|
|
|
|
|
value: buildParameters.buildName,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'BUILD_METHOD',
|
|
|
|
|
value: buildParameters.buildMethod,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'CUSTOM_PARAMETERS',
|
|
|
|
|
value: buildParameters.customParameters,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'BUILD_TARGET',
|
|
|
|
|
value: buildParameters.platform,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'ANDROID_VERSION_CODE',
|
|
|
|
|
value: buildParameters.androidVersionCode.toString(),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'ANDROID_KEYSTORE_NAME',
|
|
|
|
|
value: buildParameters.androidKeystoreName,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'ANDROID_KEYALIAS_NAME',
|
|
|
|
|
value: buildParameters.androidKeyaliasName,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
buildSecrets,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async CompressionStep(
|
|
|
|
|
buildUid: string,
|
|
|
|
|
buildParameters: BuildParameters,
|
|
|
|
|
branchName: string | undefined,
|
2021-06-06 19:59:34 +00:00
|
|
|
defaultSecretsArray: RemoteBuilderSecret[],
|
2021-05-23 04:08:40 +00:00
|
|
|
) {
|
|
|
|
|
core.info('Starting step 3/4 build compression');
|
|
|
|
|
// Cleanup
|
2021-06-19 04:49:32 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
2021-05-23 04:08:40 +00:00
|
|
|
buildUid,
|
|
|
|
|
'alpine',
|
|
|
|
|
[
|
|
|
|
|
`
|
|
|
|
|
apk update
|
|
|
|
|
apk add zip
|
|
|
|
|
cd Library
|
|
|
|
|
zip -r lib-${buildUid}.zip .*
|
2021-06-19 04:27:24 +00:00
|
|
|
mv lib-${buildUid}.zip /${buildVolumeFolder}/${cacheFolder}/${branchName}/lib-${buildUid}.zip
|
2021-05-23 04:08:40 +00:00
|
|
|
cd ../../
|
2021-05-23 13:03:29 +00:00
|
|
|
ls
|
|
|
|
|
echo ' '
|
|
|
|
|
ls ${buildParameters.buildPath}
|
2021-05-23 04:08:40 +00:00
|
|
|
zip -r build-${buildUid}.zip ${buildParameters.buildPath}/*
|
2021-06-19 04:27:24 +00:00
|
|
|
mv build-${buildUid}.zip /${buildVolumeFolder}/${buildUid}/build-${buildUid}.zip
|
2021-05-23 04:08:40 +00:00
|
|
|
`,
|
|
|
|
|
],
|
2021-06-19 04:27:24 +00:00
|
|
|
`/${buildVolumeFolder}`,
|
|
|
|
|
`/${buildVolumeFolder}/${buildUid}/${repositoryFolder}/${buildParameters.projectPath}`,
|
2021-05-23 04:08:40 +00:00
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
name: 'GITHUB_SHA',
|
|
|
|
|
value: process.env.GITHUB_SHA || '',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
defaultSecretsArray,
|
|
|
|
|
);
|
|
|
|
|
core.info('compression step complete');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async UploadArtifacts(
|
|
|
|
|
buildUid: string,
|
|
|
|
|
buildParameters: BuildParameters,
|
|
|
|
|
branchName: string | undefined,
|
2021-06-06 19:59:34 +00:00
|
|
|
defaultSecretsArray: RemoteBuilderSecret[],
|
2021-05-23 04:08:40 +00:00
|
|
|
) {
|
|
|
|
|
core.info('Starting step 4/4 upload build to s3');
|
2021-06-19 04:49:32 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
2021-05-23 04:08:40 +00:00
|
|
|
buildUid,
|
|
|
|
|
'amazon/aws-cli',
|
|
|
|
|
[
|
|
|
|
|
`
|
|
|
|
|
aws s3 cp ${buildUid}/build-${buildUid}.zip s3://game-ci-storage/
|
|
|
|
|
# no need to upload Library cache for now
|
2021-06-19 04:27:24 +00:00
|
|
|
# aws s3 cp /${buildVolumeFolder}/${cacheFolder}/${branchName}/lib-${buildUid}.zip s3://game-ci-storage/
|
2021-05-23 04:08:40 +00:00
|
|
|
${this.SteamDeploy ? '#' : ''} rm -r ${buildUid}
|
|
|
|
|
`,
|
|
|
|
|
],
|
2021-06-19 04:27:24 +00:00
|
|
|
`/${buildVolumeFolder}`,
|
|
|
|
|
`/${buildVolumeFolder}/`,
|
2021-05-23 04:08:40 +00:00
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
name: 'GITHUB_SHA',
|
|
|
|
|
value: process.env.GITHUB_SHA || '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: 'AWS_DEFAULT_REGION',
|
|
|
|
|
value: process.env.AWS_DEFAULT_REGION || '',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
ParameterKey: 'AWSAccessKeyID',
|
|
|
|
|
EnvironmentVariable: 'AWS_ACCESS_KEY_ID',
|
|
|
|
|
ParameterValue: process.env.AWS_ACCESS_KEY_ID || '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
ParameterKey: 'AWSSecretAccessKey',
|
|
|
|
|
EnvironmentVariable: 'AWS_SECRET_ACCESS_KEY',
|
|
|
|
|
ParameterValue: process.env.AWS_SECRET_ACCESS_KEY || '',
|
|
|
|
|
},
|
|
|
|
|
...defaultSecretsArray,
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async DeployToSteam(
|
|
|
|
|
buildUid: string,
|
|
|
|
|
buildParameters: BuildParameters,
|
2021-06-06 19:59:34 +00:00
|
|
|
defaultSecretsArray: RemoteBuilderSecret[],
|
2021-05-23 04:08:40 +00:00
|
|
|
) {
|
|
|
|
|
core.info('Starting steam deployment');
|
2021-06-19 04:49:32 +00:00
|
|
|
await this.RemoteBuilderProviderPlatform.runBuildTask(
|
2021-05-23 04:08:40 +00:00
|
|
|
buildUid,
|
|
|
|
|
'cm2network/steamcmd:root',
|
|
|
|
|
[
|
|
|
|
|
`
|
|
|
|
|
ls
|
|
|
|
|
ls /
|
2021-06-19 04:27:24 +00:00
|
|
|
cp -r /${buildVolumeFolder}/${buildUid}/steam/action/entrypoint.sh /entrypoint.sh;
|
|
|
|
|
cp -r /${buildVolumeFolder}/${buildUid}/steam/action/steps/ /steps;
|
2021-05-23 04:08:40 +00:00
|
|
|
chmod -R +x /entrypoint.sh;
|
|
|
|
|
chmod -R +x /steps;
|
|
|
|
|
/entrypoint.sh;
|
2021-06-19 04:27:24 +00:00
|
|
|
rm -r /${buildVolumeFolder}/${buildUid}
|
2021-05-23 04:08:40 +00:00
|
|
|
`,
|
|
|
|
|
],
|
2021-06-19 04:27:24 +00:00
|
|
|
`/${buildVolumeFolder}`,
|
|
|
|
|
`/${buildVolumeFolder}/${buildUid}/steam/action/`,
|
2021-05-23 04:08:40 +00:00
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
name: 'GITHUB_SHA',
|
|
|
|
|
value: process.env.GITHUB_SHA || '',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
EnvironmentVariable: 'INPUT_APPID',
|
|
|
|
|
ParameterKey: 'appId',
|
|
|
|
|
ParameterValue: process.env.APP_ID || '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
EnvironmentVariable: 'INPUT_BUILDDESCRIPTION',
|
|
|
|
|
ParameterKey: 'buildDescription',
|
|
|
|
|
ParameterValue: process.env.BUILD_DESCRIPTION || '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
EnvironmentVariable: 'INPUT_ROOTPATH',
|
|
|
|
|
ParameterKey: 'rootPath',
|
2021-05-23 13:07:07 +00:00
|
|
|
ParameterValue: buildParameters.buildPath,
|
2021-05-23 04:08:40 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
EnvironmentVariable: 'INPUT_RELEASEBRANCH',
|
|
|
|
|
ParameterKey: 'releaseBranch',
|
|
|
|
|
ParameterValue: process.env.RELEASE_BRANCH || '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
EnvironmentVariable: 'INPUT_LOCALCONTENTSERVER',
|
|
|
|
|
ParameterKey: 'localContentServer',
|
|
|
|
|
ParameterValue: process.env.LOCAL_CONTENT_SERVER || '',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
EnvironmentVariable: 'INPUT_PREVIEWENABLED',
|
|
|
|
|
ParameterKey: 'previewEnabled',
|
|
|
|
|
ParameterValue: process.env.PREVIEW_ENABLED || '',
|
|
|
|
|
},
|
|
|
|
|
...defaultSecretsArray,
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
export default RemoteBuilder;
|