mirror of
https://github.com/game-ci/unity-builder.git
synced 2025-07-04 12:25:19 -04:00

* Implemented logic for windows based docker builds. Moved dockerfiles and scripts to platform specific folders. * Add missing newline character * Add build-tests for windows and a unity project configured to output il2cpp * Add additional build targets (uwp and tvOS) Adjustments to build scripts to not require win10 sdk when not needed (tvOS) Platform-based prereq setup Setup image tags for the new platforms with errors if building on the wrong base os Rename test-project-il2cpp to test-project-windows to be used for all windows based project building (IL2CPP backend selected instead of mono) Fix tests to be platform based * Update dist/platforms/windows/steps/return_license.ps1 Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/docker.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/docker.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/docker.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Fix outdated repository and homepage links in dockerfiles * Fix comment style and rename validateWindowsPrereqs to validateWindowsPlatformRequirements * Remove redundant comment * Remove windows unity test project, add ProjectSettings for the il2cpp backend, and add logic to replace the projectsettings file with the il2cpp one on windows test builds. * Fix action.test.ts to accept windows as a base platform * Fix camelcase for wsaPlayer * Switch from add to copy in windows dockerfile * Change slash direction * Switch ADD to COPY to conform with best practices, change ls to dir on windows dockerfile * Improve error message for unset UNITY_EMAIL and UNITY_PASSWORD * Further improve missing email and password error. Remove temppaths being mounted to docker image * Add debug statement. TODO: Remove these * Add more debug * Explicitly pass in unity email to docker run * Remove debug and fix environment variables for activation/deactivation scripts * Prevent Unity serial from leaking to console * Debug folder listings * More debug print dirs * fix debug print path * fix reg export command * Remove debug directory listings and try setSecret to mask serial * Update src/model/action.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/docker.ts Co-authored-by: Webber Takken <webber.nl@gmail.com> * Update src/model/image-tag.ts Co-authored-by: David Finol <davidmfinol@gmail.com> * Update .github/workflows/build-tests.yml Co-authored-by: David Finol <davidmfinol@gmail.com> * Move platform validation and setup out of docker and into its own layer, remove branching on docker run command * Fix test failure due to missing license * Fix camelCase and duplicate variables * Fix lint issues and make paths more understandable * Fix typo in build-tests.yml * Fix move command in build-tests.yml * Different method to force move file * Fix missing quote and backslash * Pass unity email and password to builder action for windows build tests * Push serial to windows test builds * Make windows build tests only run on push to main Co-authored-by: Webber Takken <webber.nl@gmail.com> Co-authored-by: David Finol <davidmfinol@gmail.com>
83 lines
2.9 KiB
C#
83 lines
2.9 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using UnityBuilderAction.Input;
|
|
using UnityBuilderAction.Reporting;
|
|
using UnityBuilderAction.Versioning;
|
|
using UnityEditor;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEngine;
|
|
|
|
namespace UnityBuilderAction
|
|
{
|
|
static class Builder
|
|
{
|
|
public static void BuildProject()
|
|
{
|
|
// Gather values from args
|
|
var options = ArgumentsParser.GetValidatedOptions();
|
|
|
|
// Gather values from project
|
|
var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray();
|
|
|
|
// Get all buildOptions from options
|
|
BuildOptions buildOptions = BuildOptions.None;
|
|
foreach (string buildOptionString in Enum.GetNames(typeof(BuildOptions))) {
|
|
if (options.ContainsKey(buildOptionString)) {
|
|
BuildOptions buildOptionEnum = (BuildOptions) Enum.Parse(typeof(BuildOptions), buildOptionString);
|
|
buildOptions |= buildOptionEnum;
|
|
}
|
|
}
|
|
|
|
// Define BuildPlayer Options
|
|
var buildPlayerOptions = new BuildPlayerOptions {
|
|
scenes = scenes,
|
|
locationPathName = options["customBuildPath"],
|
|
target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]),
|
|
options = buildOptions
|
|
};
|
|
|
|
// Set version for this build
|
|
VersionApplicator.SetVersion(options["buildVersion"]);
|
|
|
|
// Apply Android settings
|
|
if (buildPlayerOptions.target == BuildTarget.Android)
|
|
{
|
|
VersionApplicator.SetAndroidVersionCode(options["androidVersionCode"]);
|
|
AndroidSettings.Apply(options);
|
|
}
|
|
|
|
// Execute default AddressableAsset content build, if the package is installed.
|
|
// Version defines would be the best solution here, but Unity 2018 doesn't support that,
|
|
// so we fall back to using reflection instead.
|
|
var addressableAssetSettingsType = Type.GetType(
|
|
"UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,Unity.Addressables.Editor");
|
|
if (addressableAssetSettingsType != null)
|
|
{
|
|
// ReSharper disable once PossibleNullReferenceException, used from try-catch
|
|
try
|
|
{
|
|
addressableAssetSettingsType.GetMethod("CleanPlayerContent", BindingFlags.Static | BindingFlags.Public)
|
|
.Invoke(null, new object[] {null});
|
|
addressableAssetSettingsType.GetMethod("BuildPlayerContent", new Type[0]).Invoke(null, new object[0]);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.LogError($"Failed to run default addressables build:\n{e}");
|
|
}
|
|
}
|
|
|
|
// Perform build
|
|
BuildReport buildReport = BuildPipeline.BuildPlayer(buildPlayerOptions);
|
|
|
|
// Summary
|
|
BuildSummary summary = buildReport.summary;
|
|
StdOutReporter.ReportSummary(summary);
|
|
|
|
// Result
|
|
BuildResult result = summary.result;
|
|
StdOutReporter.ExitWithResult(result);
|
|
}
|
|
}
|
|
}
|