pull/289/head
mdugdale 2021-08-21 20:01:53 +01:00
parent 52612c8a89
commit 7b29ccbe06
4 changed files with 103 additions and 85 deletions

View File

@ -77,10 +77,10 @@ cp "$LFS_ASSETS_HASH.zip" "$lfsCacheFolder"
echo "copied $LFS_ASSETS_HASH to $lfsCacheFolder" echo "copied $LFS_ASSETS_HASH to $lfsCacheFolder"
# purge cache # purge cache
if [ "$purgeCloudRunnerCache" == "true" ]; then if [ -z "$purgeCloudRunnerCache"]; then
echo ' ' echo ' '
echo "purging the entire cache" echo "purging $purgeCloudRunnerCache"
rm -r "$cacheFolderFull" rm -r "$purgeCloudRunnerCache"
echo ' ' echo ' '
fi fi

132
dist/index.js vendored
View File

@ -960,46 +960,52 @@ class CloudRunner {
this.projectPathFull = `${this.repoPathFull}/${this.buildParams.projectPath}`; this.projectPathFull = `${this.repoPathFull}/${this.buildParams.projectPath}`;
this.libraryFolderFull = `${this.projectPathFull}/Library`; this.libraryFolderFull = `${this.projectPathFull}/Library`;
this.cacheFolderFull = `/${buildVolumeFolder}/${cacheFolder}/${this.branchName}`; this.cacheFolderFull = `/${buildVolumeFolder}/${cacheFolder}/${this.branchName}`;
this.lfsDirectory = `${this.repoPathFull}/.git/lfs`;
this.testLFSFile = `${this.projectPathFull}/Assets/LFS_Test_File.jpg`;
this.purgeRemoteCaching = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
this.CloudRunnerBranch = process.env.CloudRunnerBranch ? `--branch "${process.env.CloudRunnerBranch}"` : '';
this.unityBuilderRepoUrl = `https://${this.buildParams.githubToken}@github.com/game-ci/unity-builder.git`;
this.targetBuildRepoUrl = `https://${this.buildParams.githubToken}@github.com/${process.env.GITHUB_REPOSITORY}.git`;
}
static getHandleCachingCommand() {
return `${this.builderPathFull}/dist/cloud-runner/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${this.lfsDirectory}" "${this.purgeRemoteCaching}"`;
}
static getCloneNoLFSCommand() {
return `${this.builderPathFull}/dist/cloud-runner/cloneNoLFS.sh "${this.repoPathFull}" "${this.targetBuildRepoUrl}" "${this.testLFSFile}"`;
}
static getCloneBuilder() {
return `git clone -q ${this.CloudRunnerBranch} ${this.unityBuilderRepoUrl} ${this.builderPathFull}`;
} }
static SetupStep() { static SetupStep() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.info('Starting step 1/4 clone and restore cache)'); core.info('Starting step 1/4 clone and restore cache)');
const lfsDirectory = `${this.repoPathFull}/.git/lfs`;
const testLFSFile = `${this.projectPathFull}/Assets/LFS_Test_File.jpg`;
const unityBuilderRepoUrl = `https://${this.buildParams.githubToken}@github.com/game-ci/unity-builder.git`;
const targetBuildRepoUrl = `https://${this.buildParams.githubToken}@github.com/${process.env.GITHUB_REPOSITORY}.git`;
const purgeRemoteCache = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
const initializeSourceRepoForCaching = `${this.builderPathFull}/dist/cloud-runner/cloneNoLFS.sh "${this.repoPathFull}" "${targetBuildRepoUrl}" "${testLFSFile}"`;
const handleCaching = `${this.builderPathFull}/dist/cloud-runner/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${lfsDirectory}" "${purgeRemoteCache}"`;
const CloudRunnerBranch = process.env.CloudRunnerBranch ? `--branch "${process.env.CloudRunnerBranch}"` : '';
const cloneCloudRunner = `git clone -q ${CloudRunnerBranch} ${unityBuilderRepoUrl} ${this.builderPathFull}`;
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, 'alpine/git', [ yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, 'alpine/git', [
` printenv ` printenv
apk update -q apk update -q
apk add unzip zip git-lfs jq tree -q apk add unzip zip git-lfs jq tree -q
mkdir -p ${this.buildPathFull} mkdir -p ${this.buildPathFull}
mkdir -p ${this.builderPathFull} mkdir -p ${this.builderPathFull}
mkdir -p ${this.repoPathFull} mkdir -p ${this.repoPathFull}
${cloneCloudRunner} ${this.getCloneBuilder()}
echo ' ' echo ' '
echo 'Initializing source repository for cloning with caching of LFS files' echo 'Initializing source repository for cloning with caching of LFS files'
${initializeSourceRepoForCaching} ${this.getCloneNoLFSCommand()}
echo 'Source repository initialized' echo 'Source repository initialized'
echo ' ' echo ' '
${process.env.DEBUG ? '' : '#'}echo $LFS_ASSETS_HASH ${process.env.DEBUG ? '' : '#'}echo $LFS_ASSETS_HASH
${process.env.DEBUG ? '' : '#'}echo 'Large File before LFS caching and pull' ${process.env.DEBUG ? '' : '#'}echo 'Large File before LFS caching and pull'
${process.env.DEBUG ? '' : '#'}ls -alh "${lfsDirectory}" ${process.env.DEBUG ? '' : '#'}ls -alh "${this.lfsDirectory}"
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
echo 'Starting checks of cache for the Unity project Library and git LFS files' echo 'Starting checks of cache for the Unity project Library and git LFS files'
${handleCaching} ${this.getHandleCachingCommand()}
${process.env.DEBUG ? '' : '#'}echo 'Caching complete' ${process.env.DEBUG ? '' : '#'}echo 'Caching complete'
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
${process.env.DEBUG ? '' : '#'}echo 'Large File after LFS caching and pull' ${process.env.DEBUG ? '' : '#'}echo 'Large File after LFS caching and pull'
${process.env.DEBUG ? '' : '#'}ls -alh "${lfsDirectory}" ${process.env.DEBUG ? '' : '#'}ls -alh "${this.lfsDirectory}"
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
${process.env.DEBUG ? '' : '#'}tree -L 4 "${this.buildPathFull}" ${process.env.DEBUG ? '' : '#'}tree -L 4 "${this.buildPathFull}"
${process.env.DEBUG ? '' : '#'}ls -lh "/${buildVolumeFolder}" ${process.env.DEBUG ? '' : '#'}ls -lh "/${buildVolumeFolder}"
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
`, `,
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}/`, CloudRunner.defaultGitShaEnvironmentVariable, this.defaultSecrets); ], `/${buildVolumeFolder}`, `/${buildVolumeFolder}/`, CloudRunner.defaultGitShaEnvironmentVariable, this.defaultSecrets);
}); });
@ -1008,17 +1014,17 @@ class CloudRunner {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.info('Starting part 2/4 (build unity project)'); core.info('Starting part 2/4 (build unity project)');
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, baseImage.toString(), [ yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, baseImage.toString(), [
` `
printenv printenv
export GITHUB_WORKSPACE="${this.repoPathFull}" export GITHUB_WORKSPACE="${this.repoPathFull}"
cp -r "${this.builderPathFull}/dist/default-build-script/" "/UnityBuilderAction" cp -r "${this.builderPathFull}/dist/default-build-script/" "/UnityBuilderAction"
cp -r "${this.builderPathFull}/dist/entrypoint.sh" "/entrypoint.sh" cp -r "${this.builderPathFull}/dist/entrypoint.sh" "/entrypoint.sh"
cp -r "${this.builderPathFull}/dist/steps/" "/steps" cp -r "${this.builderPathFull}/dist/steps/" "/steps"
chmod -R +x "/entrypoint.sh" chmod -R +x "/entrypoint.sh"
chmod -R +x "/steps" chmod -R +x "/steps"
/entrypoint.sh /entrypoint.sh
${process.env.DEBUG ? '' : '#'}tree -L 4 "${this.buildPathFull}" ${process.env.DEBUG ? '' : '#'}tree -L 4 "${this.buildPathFull}"
${process.env.DEBUG ? '' : '#'}ls -lh "/${buildVolumeFolder}" ${process.env.DEBUG ? '' : '#'}ls -lh "/${buildVolumeFolder}"
`, `,
], `/${buildVolumeFolder}`, `/${this.projectPathFull}`, CloudRunner.readBuildEnvironmentVariables(), this.defaultSecrets); ], `/${buildVolumeFolder}`, `/${this.projectPathFull}`, CloudRunner.readBuildEnvironmentVariables(), this.defaultSecrets);
}); });
@ -1028,23 +1034,23 @@ class CloudRunner {
core.info('Starting step 3/4 build compression'); core.info('Starting step 3/4 build compression');
// Cleanup // Cleanup
yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, 'alpine', [ yield this.CloudRunnerProviderPlatform.runBuildTask(this.buildGuid, 'alpine', [
` `
printenv printenv
apk update -q apk update -q
apk add zip tree -q apk add zip tree -q
${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull" ${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull"
${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull" ${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull"
cd "$libraryFolderFull/.." cd "$libraryFolderFull/.."
zip -r "lib-$BUILDID.zip" "./Library" zip -r "lib-$BUILDID.zip" "./Library"
mv "lib-$BUILDID.zip" "/$cacheFolderFull/lib" mv "lib-$BUILDID.zip" "/$cacheFolderFull/lib"
cd "$repoPathFull" cd "$repoPathFull"
ls -lh "$repoPathFull" ls -lh "$repoPathFull"
zip -r "build-$BUILDID.zip" "./${CloudRunner.buildParams.buildPath}" zip -r "build-$BUILDID.zip" "./${CloudRunner.buildParams.buildPath}"
mv "build-$BUILDID.zip" "/$cacheFolderFull/build-$BUILDID.zip" mv "build-$BUILDID.zip" "/$cacheFolderFull/build-$BUILDID.zip"
${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull" ${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull"
${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull/.." ${process.env.DEBUG ? '' : '#'}tree -L 4 "/$cacheFolderFull/.."
${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull" ${process.env.DEBUG ? '' : '#'}tree -L 4 "$repoPathFull"
${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull" ${process.env.DEBUG ? '' : '#'}ls -lh "$repoPathFull"
`, `,
], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [ ], `/${buildVolumeFolder}`, `/${buildVolumeFolder}`, [
{ {

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,13 @@ class CloudRunner {
private static projectPathFull: string; private static projectPathFull: string;
private static libraryFolderFull: string; private static libraryFolderFull: string;
private static cacheFolderFull: string; private static cacheFolderFull: string;
static SteamDeploy: boolean = process.env.STEAM_DEPLOY !== undefined || false; private static lfsDirectory: string;
private static testLFSFile: string;
private static purgeRemoteCaching: boolean;
private static CloudRunnerBranch: string;
private static unityBuilderRepoUrl: string;
private static targetBuildRepoUrl: string;
private static SteamDeploy: boolean = process.env.STEAM_DEPLOY !== undefined || false;
private static readonly defaultGitShaEnvironmentVariable = [ private static readonly defaultGitShaEnvironmentVariable = [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',
@ -105,22 +111,28 @@ class CloudRunner {
this.projectPathFull = `${this.repoPathFull}/${this.buildParams.projectPath}`; this.projectPathFull = `${this.repoPathFull}/${this.buildParams.projectPath}`;
this.libraryFolderFull = `${this.projectPathFull}/Library`; this.libraryFolderFull = `${this.projectPathFull}/Library`;
this.cacheFolderFull = `/${buildVolumeFolder}/${cacheFolder}/${this.branchName}`; this.cacheFolderFull = `/${buildVolumeFolder}/${cacheFolder}/${this.branchName}`;
this.lfsDirectory = `${this.repoPathFull}/.git/lfs`;
this.testLFSFile = `${this.projectPathFull}/Assets/LFS_Test_File.jpg`;
this.purgeRemoteCaching = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
this.CloudRunnerBranch = process.env.CloudRunnerBranch ? `--branch "${process.env.CloudRunnerBranch}"` : '';
this.unityBuilderRepoUrl = `https://${this.buildParams.githubToken}@github.com/game-ci/unity-builder.git`;
this.targetBuildRepoUrl = `https://${this.buildParams.githubToken}@github.com/${process.env.GITHUB_REPOSITORY}.git`;
}
private static getHandleCachingCommand() {
return `${this.builderPathFull}/dist/cloud-runner/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${this.lfsDirectory}" "${this.purgeRemoteCaching}"`;
}
private static getCloneNoLFSCommand() {
return `${this.builderPathFull}/dist/cloud-runner/cloneNoLFS.sh "${this.repoPathFull}" "${this.targetBuildRepoUrl}" "${this.testLFSFile}"`;
}
private static getCloneBuilder() {
return `git clone -q ${this.CloudRunnerBranch} ${this.unityBuilderRepoUrl} ${this.builderPathFull}`;
} }
private static async SetupStep() { private static async SetupStep() {
core.info('Starting step 1/4 clone and restore cache)'); core.info('Starting step 1/4 clone and restore cache)');
const lfsDirectory = `${this.repoPathFull}/.git/lfs`;
const testLFSFile = `${this.projectPathFull}/Assets/LFS_Test_File.jpg`;
const unityBuilderRepoUrl = `https://${this.buildParams.githubToken}@github.com/game-ci/unity-builder.git`;
const targetBuildRepoUrl = `https://${this.buildParams.githubToken}@github.com/${process.env.GITHUB_REPOSITORY}.git`;
const purgeRemoteCache = process.env.PURGE_REMOTE_BUILDER_CACHE !== undefined;
const initializeSourceRepoForCaching = `${this.builderPathFull}/dist/cloud-runner/cloneNoLFS.sh "${this.repoPathFull}" "${targetBuildRepoUrl}" "${testLFSFile}"`;
const handleCaching = `${this.builderPathFull}/dist/cloud-runner/handleCaching.sh "${this.cacheFolderFull}" "${this.libraryFolderFull}" "${lfsDirectory}" "${purgeRemoteCache}"`;
const CloudRunnerBranch = process.env.CloudRunnerBranch ? `--branch "${process.env.CloudRunnerBranch}"` : '';
const cloneCloudRunner = `git clone -q ${CloudRunnerBranch} ${unityBuilderRepoUrl} ${this.builderPathFull}`;
await this.CloudRunnerProviderPlatform.runBuildTask( await this.CloudRunnerProviderPlatform.runBuildTask(
this.buildGuid, this.buildGuid,
'alpine/git', 'alpine/git',
@ -131,22 +143,22 @@ class CloudRunner {
mkdir -p ${this.buildPathFull} mkdir -p ${this.buildPathFull}
mkdir -p ${this.builderPathFull} mkdir -p ${this.builderPathFull}
mkdir -p ${this.repoPathFull} mkdir -p ${this.repoPathFull}
${cloneCloudRunner} ${this.getCloneBuilder()}
echo ' ' echo ' '
echo 'Initializing source repository for cloning with caching of LFS files' echo 'Initializing source repository for cloning with caching of LFS files'
${initializeSourceRepoForCaching} ${this.getCloneNoLFSCommand()}
echo 'Source repository initialized' echo 'Source repository initialized'
echo ' ' echo ' '
${process.env.DEBUG ? '' : '#'}echo $LFS_ASSETS_HASH ${process.env.DEBUG ? '' : '#'}echo $LFS_ASSETS_HASH
${process.env.DEBUG ? '' : '#'}echo 'Large File before LFS caching and pull' ${process.env.DEBUG ? '' : '#'}echo 'Large File before LFS caching and pull'
${process.env.DEBUG ? '' : '#'}ls -alh "${lfsDirectory}" ${process.env.DEBUG ? '' : '#'}ls -alh "${this.lfsDirectory}"
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
echo 'Starting checks of cache for the Unity project Library and git LFS files' echo 'Starting checks of cache for the Unity project Library and git LFS files'
${handleCaching} ${this.getHandleCachingCommand()}
${process.env.DEBUG ? '' : '#'}echo 'Caching complete' ${process.env.DEBUG ? '' : '#'}echo 'Caching complete'
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
${process.env.DEBUG ? '' : '#'}echo 'Large File after LFS caching and pull' ${process.env.DEBUG ? '' : '#'}echo 'Large File after LFS caching and pull'
${process.env.DEBUG ? '' : '#'}ls -alh "${lfsDirectory}" ${process.env.DEBUG ? '' : '#'}ls -alh "${this.lfsDirectory}"
${process.env.DEBUG ? '' : '#'}echo ' ' ${process.env.DEBUG ? '' : '#'}echo ' '
${process.env.DEBUG ? '' : '#'}tree -L 4 "${this.buildPathFull}" ${process.env.DEBUG ? '' : '#'}tree -L 4 "${this.buildPathFull}"
${process.env.DEBUG ? '' : '#'}ls -lh "/${buildVolumeFolder}" ${process.env.DEBUG ? '' : '#'}ls -lh "/${buildVolumeFolder}"