pull/235/head
mdugdale 2021-04-04 02:02:52 +01:00
parent 650f0780f8
commit 2e8b897019
3 changed files with 115 additions and 95 deletions

76
dist/index.js vendored
View File

@ -221,6 +221,9 @@ const fs = __importStar(__webpack_require__(35747));
const core = __importStar(__webpack_require__(42186)); const core = __importStar(__webpack_require__(42186));
const zlib = __importStar(__webpack_require__(78761)); const zlib = __importStar(__webpack_require__(78761));
const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const repositoryDirectoryName = 'repo';
const efsDirectoryName = 'data';
const cacheDirectoryName = 'cache';
class AWS { class AWS {
static runBuildJob(buildParameters, baseImage) { static runBuildJob(buildParameters, baseImage) {
var _a; var _a;
@ -235,53 +238,60 @@ class AWS {
yield this.run(buildUid, buildParameters.awsStackName, 'alpine/git', ['/bin/sh'], [ yield this.run(buildUid, buildParameters.awsStackName, 'alpine/git', ['/bin/sh'], [
'-c', '-c',
`apk update; `apk update;
apk add unzip; apk add unzip;
apk add git-lfs; apk add git-lfs;
apk add jq; apk add jq;
git clone https://${process.env.GITHUB_TOKEN}@github.com/${process.env.GITHUB_REPOSITORY}.git ${buildUid}/repo -q # Get source repo for project to be built and game-ci repo for utilties
git clone https://${process.env.GITHUB_TOKEN}@github.com/${process.env.GITHUB_REPOSITORY}.git ${buildUid}/${repositoryDirectoryName} -q
git clone https://${process.env.GITHUB_TOKEN}@github.com/game-ci/unity-builder.git ${buildUid}/builder -q git clone https://${process.env.GITHUB_TOKEN}@github.com/game-ci/unity-builder.git ${buildUid}/builder -q
cd /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/
git checkout $GITHUB_SHA
cd /${efsDirectoryName}/
if [ ! -d "cache" ]; then # Look for usable cache
mkdir "cache" if [ ! -d "$cacheDirectoryName" ]; then
mkdir "$cacheDirectoryName"
fi fi
cd cache cd $cacheDirectoryName
if [ ! -d "${branchName}" ]; then if [ ! -d "${branchName}" ]; then
mkdir "${branchName}" mkdir "${branchName}"
fi fi
cd "${branchName}" cd "${branchName}"
echo ' ' echo ' '
echo 'Cached Libraries for ${branchName} from previous builds:' echo 'Cached Libraries for ${branchName} from previous builds:'
ls ls
echo ' ' echo ' '
# TODO
# if library directory doesn't exist create it
# mkdir /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library
# else empty it
# rm -r /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library
# Restore cache
latest=$(ls -t | head -1) latest=$(ls -t | head -1)
if [ ! -z $latest ]; then if [ ! -z $latest ]; then
echo "Library cache exists from build $latest from ${branchName}" echo "Library cache exists from build $latest from ${branchName}"
mkdir /data/${buildUid}/repo/${buildParameters.projectPath}/Library unzip -q "$latest" -d /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library/.
unzip -q "$latest" -d /data/${buildUid}/repo/${buildParameters.projectPath}/Library/.
echo ' '
echo 'Repo:'
ls /data/${buildUid}/repo/
echo ' '
echo 'Project:'
ls /data/${buildUid}/repo/${buildParameters.projectPath}
echo ' '
echo 'Library:'
ls /data/${buildUid}/repo/${buildParameters.projectPath}/Library/
echo ' '
else else
echo "Cache does not exist" echo "Cache does not exist"
fi fi
cd ../../
cd ${buildUid}/repo;
git checkout $GITHUB_SHA; # Print out important directories
echo ' '
echo 'Repo:'
ls /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/
echo ' '
echo 'Project:'
ls /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}
echo ' '
echo 'Library:'
ls /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library/
echo ' '
`, `,
], '/data', '/data/', [ ], `/${efsDirectoryName}`, `/${efsDirectoryName}/`, [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',
value: process.env.GITHUB_SHA, value: process.env.GITHUB_SHA,
@ -296,17 +306,17 @@ class AWS {
yield this.run(buildUid, buildParameters.awsStackName, baseImage.toString(), ['/bin/sh'], [ yield this.run(buildUid, buildParameters.awsStackName, baseImage.toString(), ['/bin/sh'], [
'-c', '-c',
` `
cp -r /data/${buildUid}/builder/dist/default-build-script/ /UnityBuilderAction; cp -r /${efsDirectoryName}/${buildUid}/builder/dist/default-build-script/ /UnityBuilderAction;
cp -r /data/${buildUid}/builder/dist/entrypoint.sh /entrypoint.sh; cp -r /${efsDirectoryName}/${buildUid}/builder/dist/entrypoint.sh /entrypoint.sh;
cp -r /data/${buildUid}/builder/dist/steps/ /steps; cp -r /${efsDirectoryName}/${buildUid}/builder/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;
`, `,
], '/data', `/data/${buildUid}/repo/`, [ ], `/${efsDirectoryName}`, `/${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/`, [
{ {
name: 'GITHUB_WORKSPACE', name: 'GITHUB_WORKSPACE',
value: `/data/${buildUid}/repo/`, value: `/${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/`,
}, },
{ {
name: 'PROJECT_PATH', name: 'PROJECT_PATH',
@ -391,12 +401,12 @@ class AWS {
apk add zip apk add zip
cd Library cd Library
zip -q -r lib-${buildUid}.zip .* zip -q -r lib-${buildUid}.zip .*
mv lib-${buildUid}.zip /data/cache/${branchName}/lib-${buildUid}.zip mv lib-${buildUid}.zip /${efsDirectoryName}/${cacheDirectoryName}/${branchName}/lib-${buildUid}.zip
cd ../../ cd ../../
zip -q -r build-${buildUid}.zip ${buildParameters.buildPath}/* zip -q -r build-${buildUid}.zip ${buildParameters.buildPath}/*
mv build-${buildUid}.zip /data/${buildUid}/build-${buildUid}.zip mv build-${buildUid}.zip /${efsDirectoryName}/${buildUid}/build-${buildUid}.zip
`, `,
], '/data', `/data/${buildUid}/repo/${buildParameters.projectPath}`, [ ], `/${efsDirectoryName}`, `/${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}`, [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',
value: process.env.GITHUB_SHA, value: process.env.GITHUB_SHA,
@ -413,10 +423,10 @@ class AWS {
` `
aws s3 cp ${buildUid}/build-${buildUid}.zip s3://game-ci-storage/ aws s3 cp ${buildUid}/build-${buildUid}.zip s3://game-ci-storage/
# no need to upload Library cache for now # no need to upload Library cache for now
# aws s3 cp /data/cache/${branchName}/lib-${buildUid}.zip s3://game-ci-storage/ # aws s3 cp /${efsDirectoryName}/${cacheDirectoryName}/${branchName}/lib-${buildUid}.zip s3://game-ci-storage/
rm -r ${buildUid} rm -r ${buildUid}
`, `,
], '/data', `/data/`, [ ], `/${efsDirectoryName}`, `/${efsDirectoryName}/`, [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',
value: process.env.GITHUB_SHA, value: process.env.GITHUB_SHA,

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,9 @@ import * as fs from 'fs';
import * as core from '@actions/core'; import * as core from '@actions/core';
import * as zlib from 'zlib'; import * as zlib from 'zlib';
const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const repositoryDirectoryName = 'repo';
const efsDirectoryName = 'data';
const cacheDirectoryName = 'cache';
class AWS { class AWS {
static async runBuildJob(buildParameters, baseImage) { static async runBuildJob(buildParameters, baseImage) {
@ -23,55 +26,62 @@ class AWS {
[ [
'-c', '-c',
`apk update; `apk update;
apk add unzip; apk add unzip;
apk add git-lfs; apk add git-lfs;
apk add jq; apk add jq;
git clone https://${process.env.GITHUB_TOKEN}@github.com/${process.env.GITHUB_REPOSITORY}.git ${buildUid}/repo -q # Get source repo for project to be built and game-ci repo for utilties
git clone https://${process.env.GITHUB_TOKEN}@github.com/${process.env.GITHUB_REPOSITORY}.git ${buildUid}/${repositoryDirectoryName} -q
git clone https://${process.env.GITHUB_TOKEN}@github.com/game-ci/unity-builder.git ${buildUid}/builder -q git clone https://${process.env.GITHUB_TOKEN}@github.com/game-ci/unity-builder.git ${buildUid}/builder -q
cd /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/
git checkout $GITHUB_SHA
cd /${efsDirectoryName}/
if [ ! -d "cache" ]; then # Look for usable cache
mkdir "cache" if [ ! -d "$cacheDirectoryName" ]; then
mkdir "$cacheDirectoryName"
fi fi
cd cache cd $cacheDirectoryName
if [ ! -d "${branchName}" ]; then if [ ! -d "${branchName}" ]; then
mkdir "${branchName}" mkdir "${branchName}"
fi fi
cd "${branchName}" cd "${branchName}"
echo ' ' echo ' '
echo 'Cached Libraries for ${branchName} from previous builds:' echo 'Cached Libraries for ${branchName} from previous builds:'
ls ls
echo ' ' echo ' '
# TODO
# if library directory doesn't exist create it
# mkdir /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library
# else empty it
# rm -r /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library
# Restore cache
latest=$(ls -t | head -1) latest=$(ls -t | head -1)
if [ ! -z $latest ]; then if [ ! -z $latest ]; then
echo "Library cache exists from build $latest from ${branchName}" echo "Library cache exists from build $latest from ${branchName}"
mkdir /data/${buildUid}/repo/${buildParameters.projectPath}/Library unzip -q "$latest" -d /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library/.
unzip -q "$latest" -d /data/${buildUid}/repo/${buildParameters.projectPath}/Library/.
echo ' '
echo 'Repo:'
ls /data/${buildUid}/repo/
echo ' '
echo 'Project:'
ls /data/${buildUid}/repo/${buildParameters.projectPath}
echo ' '
echo 'Library:'
ls /data/${buildUid}/repo/${buildParameters.projectPath}/Library/
echo ' '
else else
echo "Cache does not exist" echo "Cache does not exist"
fi fi
cd ../../
cd ${buildUid}/repo;
git checkout $GITHUB_SHA; # Print out important directories
echo ' '
echo 'Repo:'
ls /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/
echo ' '
echo 'Project:'
ls /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}
echo ' '
echo 'Library:'
ls /${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}/Library/
echo ' '
`, `,
], ],
'/data', `/${efsDirectoryName}`,
'/data/', `/${efsDirectoryName}/`,
[ [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',
@ -95,20 +105,20 @@ class AWS {
[ [
'-c', '-c',
` `
cp -r /data/${buildUid}/builder/dist/default-build-script/ /UnityBuilderAction; cp -r /${efsDirectoryName}/${buildUid}/builder/dist/default-build-script/ /UnityBuilderAction;
cp -r /data/${buildUid}/builder/dist/entrypoint.sh /entrypoint.sh; cp -r /${efsDirectoryName}/${buildUid}/builder/dist/entrypoint.sh /entrypoint.sh;
cp -r /data/${buildUid}/builder/dist/steps/ /steps; cp -r /${efsDirectoryName}/${buildUid}/builder/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;
`, `,
], ],
'/data', `/${efsDirectoryName}`,
`/data/${buildUid}/repo/`, `/${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/`,
[ [
{ {
name: 'GITHUB_WORKSPACE', name: 'GITHUB_WORKSPACE',
value: `/data/${buildUid}/repo/`, value: `/${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/`,
}, },
{ {
name: 'PROJECT_PATH', name: 'PROJECT_PATH',
@ -200,14 +210,14 @@ class AWS {
apk add zip apk add zip
cd Library cd Library
zip -q -r lib-${buildUid}.zip .* zip -q -r lib-${buildUid}.zip .*
mv lib-${buildUid}.zip /data/cache/${branchName}/lib-${buildUid}.zip mv lib-${buildUid}.zip /${efsDirectoryName}/${cacheDirectoryName}/${branchName}/lib-${buildUid}.zip
cd ../../ cd ../../
zip -q -r build-${buildUid}.zip ${buildParameters.buildPath}/* zip -q -r build-${buildUid}.zip ${buildParameters.buildPath}/*
mv build-${buildUid}.zip /data/${buildUid}/build-${buildUid}.zip mv build-${buildUid}.zip /${efsDirectoryName}/${buildUid}/build-${buildUid}.zip
`, `,
], ],
'/data', `/${efsDirectoryName}`,
`/data/${buildUid}/repo/${buildParameters.projectPath}`, `/${efsDirectoryName}/${buildUid}/${repositoryDirectoryName}/${buildParameters.projectPath}`,
[ [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',
@ -233,12 +243,12 @@ class AWS {
` `
aws s3 cp ${buildUid}/build-${buildUid}.zip s3://game-ci-storage/ aws s3 cp ${buildUid}/build-${buildUid}.zip s3://game-ci-storage/
# no need to upload Library cache for now # no need to upload Library cache for now
# aws s3 cp /data/cache/${branchName}/lib-${buildUid}.zip s3://game-ci-storage/ # aws s3 cp /${efsDirectoryName}/${cacheDirectoryName}/${branchName}/lib-${buildUid}.zip s3://game-ci-storage/
rm -r ${buildUid} rm -r ${buildUid}
`, `,
], ],
'/data', `/${efsDirectoryName}`,
`/data/`, `/${efsDirectoryName}/`,
[ [
{ {
name: 'GITHUB_SHA', name: 'GITHUB_SHA',