Skip to content

Commit 2dda972

Browse files
committed
merge from game-ci:main
2 parents c31e6ae + 9d6bdcb commit 2dda972

25 files changed

+12679
-5212
lines changed

.github/workflows/activation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
id: requestActivationFile
1414
uses: game-ci/unity-request-activation-file@v2.0-alpha-1
1515
- name: Upload activation file
16-
uses: actions/upload-artifact@v3
16+
uses: actions/upload-artifact@v4
1717
with:
1818
name: ${{ steps.requestActivationFile.outputs.filePath }}
1919
path: ${{ steps.requestActivationFile.outputs.filePath }}

.github/workflows/build-tests-mac.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ jobs:
5959
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
6060
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
6161
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
62+
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
6263
with:
6364
buildName: 'GameCI Test Build'
6465
projectPath: ${{ matrix.projectPath }}

.github/workflows/build-tests-ubuntu.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ env:
3636

3737
jobs:
3838
buildForAllPlatformsUbuntu:
39-
name: ${{ matrix.targetPlatform }} on ${{ matrix.unityVersion }}
39+
name:
40+
"${{ matrix.targetPlatform }} on ${{ matrix.unityVersion}}${{startsWith(matrix.buildProfile, 'Assets') && ' (via Build Profile)' || '' }}"
4041
runs-on: ubuntu-latest
4142
strategy:
4243
fail-fast: false
@@ -91,6 +92,12 @@ jobs:
9192
- targetPlatform: StandaloneWindows64
9293
additionalParameters: -standaloneBuildSubtarget Server
9394
buildWithIl2cpp: true
95+
include:
96+
- unityVersion: 6000.0.36f1
97+
targetPlatform: WebGL
98+
- unityVersion: 6000.0.36f1
99+
targetPlatform: WebGL
100+
buildProfile: 'Assets/Settings/Build Profiles/Sample WebGL Build Profile.asset'
94101

95102
steps:
96103
- name: Clear Space for Android Build
@@ -136,6 +143,7 @@ jobs:
136143
with:
137144
buildName: 'GameCI Test Build'
138145
projectPath: ${{ matrix.projectPath }}
146+
buildProfile: ${{ matrix.buildProfile }}
139147
unityVersion: ${{ matrix.unityVersion }}
140148
targetPlatform: ${{ matrix.targetPlatform }}
141149
customParameters: -profile SomeProfile -someBoolean -someValue exampleValue ${{ matrix.additionalParameters }}
@@ -158,6 +166,7 @@ jobs:
158166
with:
159167
buildName: 'GameCI Test Build'
160168
projectPath: ${{ matrix.projectPath }}
169+
buildProfile: ${{ matrix.buildProfile }}
161170
unityVersion: ${{ matrix.unityVersion }}
162171
targetPlatform: ${{ matrix.targetPlatform }}
163172
customParameters: -profile SomeProfile -someBoolean -someValue exampleValue ${{ matrix.additionalParameters }}
@@ -179,6 +188,7 @@ jobs:
179188
with:
180189
buildName: 'GameCI Test Build'
181190
projectPath: ${{ matrix.projectPath }}
191+
buildProfile: ${{ matrix.buildProfile }}
182192
unityVersion: ${{ matrix.unityVersion }}
183193
targetPlatform: ${{ matrix.targetPlatform }}
184194
customParameters: -profile SomeProfile -someBoolean -someValue exampleValue ${{ matrix.additionalParameters }}
@@ -191,7 +201,6 @@ jobs:
191201
- uses: actions/upload-artifact@v4
192202
with:
193203
name:
194-
'Build ${{ matrix.targetPlatform }} on Ubuntu (${{ matrix.unityVersion }}_il2cpp_${{ matrix.buildWithIl2cpp
195-
}}_params_${{ matrix.additionalParameters }})'
204+
"Build ${{ matrix.targetPlatform }}${{ startsWith(matrix.buildProfile, 'Assets') && ' (via Build Profile)' || '' }} on Ubuntu (${{ matrix.unityVersion }}_il2cpp_${{ matrix.buildWithIl2cpp }}_params_${{ matrix.additionalParameters }})"
196205
path: build
197206
retention-days: 14

.github/workflows/build-tests-windows.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ jobs:
6565
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
6666
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
6767
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
68+
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
6869
with:
6970
buildName: 'GameCI Test Build'
7071
projectPath: ${{ matrix.projectPath }}
@@ -89,6 +90,7 @@ jobs:
8990
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
9091
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
9192
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
93+
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
9294
with:
9395
buildName: 'GameCI Test Build'
9496
projectPath: ${{ matrix.projectPath }}
@@ -112,6 +114,7 @@ jobs:
112114
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
113115
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
114116
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
117+
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
115118
with:
116119
buildName: 'GameCI Test Build'
117120
projectPath: ${{ matrix.projectPath }}

.github/workflows/cloud-runner-ci-pipeline.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ jobs:
190190
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
191191
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
192192
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
193+
193194
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
194195
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
195196
GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }}
@@ -201,7 +202,7 @@ jobs:
201202
providerStrategy: ${{ matrix.providerStrategy }}
202203
- run: |
203204
cp ./cloud-runner-cache/cache/${{ steps.unity-build.outputs.CACHE_KEY }}/build/${{ steps.unity-build.outputs.BUILD_ARTIFACT }} ${{ steps.unity-build.outputs.BUILD_ARTIFACT }}
204-
- uses: actions/upload-artifact@v3
205+
- uses: actions/upload-artifact@v4
205206
with:
206207
name: ${{ matrix.providerStrategy }} Build (${{ matrix.targetPlatform }})
207208
path: ${{ steps.unity-build.outputs.BUILD_ARTIFACT }}

action.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ inputs:
1818
projectPath:
1919
required: false
2020
default: ''
21-
description: 'Relative path to the project to be built.'
21+
description: 'Path to the project to be built, relative to the repository root.'
22+
buildProfile:
23+
required: false
24+
default: ''
25+
description: 'Path to the build profile to activate, relative to the project root.'
2226
buildName:
2327
required: false
2428
default: ''

dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs

Lines changed: 70 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
using UnityBuilderAction.Versioning;
77
using UnityEditor;
88
using UnityEditor.Build.Reporting;
9+
#if UNITY_6000_0_OR_NEWER
10+
using UnityEditor.Build.Profile;
11+
#endif
912
using UnityEngine;
1013

1114
namespace UnityBuilderAction
@@ -17,47 +20,9 @@ public static void BuildProject()
1720
// Gather values from args
1821
var options = ArgumentsParser.GetValidatedOptions();
1922

20-
// Gather values from project
21-
var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray();
22-
23-
// Get all buildOptions from options
24-
BuildOptions buildOptions = BuildOptions.None;
25-
foreach (string buildOptionString in Enum.GetNames(typeof(BuildOptions))) {
26-
if (options.ContainsKey(buildOptionString)) {
27-
BuildOptions buildOptionEnum = (BuildOptions) Enum.Parse(typeof(BuildOptions), buildOptionString);
28-
buildOptions |= buildOptionEnum;
29-
}
30-
}
31-
32-
#if UNITY_2021_2_OR_NEWER
33-
// Determine subtarget
34-
StandaloneBuildSubtarget buildSubtarget;
35-
if (!options.TryGetValue("standaloneBuildSubtarget", out var subtargetValue) || !Enum.TryParse(subtargetValue, out buildSubtarget)) {
36-
buildSubtarget = default;
37-
}
38-
#endif
39-
40-
// Define BuildPlayer Options
41-
var buildPlayerOptions = new BuildPlayerOptions {
42-
scenes = scenes,
43-
locationPathName = options["customBuildPath"],
44-
target = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]),
45-
options = buildOptions,
46-
#if UNITY_2021_2_OR_NEWER
47-
subtarget = (int) buildSubtarget
48-
#endif
49-
};
50-
5123
// Set version for this build
5224
VersionApplicator.SetVersion(options["buildVersion"]);
53-
54-
// Apply Android settings
55-
if (buildPlayerOptions.target == BuildTarget.Android)
56-
{
57-
VersionApplicator.SetAndroidVersionCode(options["androidVersionCode"]);
58-
AndroidSettings.Apply(options);
59-
}
60-
25+
6126
// Execute default AddressableAsset content build, if the package is installed.
6227
// Version defines would be the best solution here, but Unity 2018 doesn't support that,
6328
// so we fall back to using reflection instead.
@@ -78,6 +43,72 @@ public static void BuildProject()
7843
}
7944
}
8045

46+
// Get all buildOptions from options
47+
BuildOptions buildOptions = BuildOptions.None;
48+
foreach (string buildOptionString in Enum.GetNames(typeof(BuildOptions))) {
49+
if (options.ContainsKey(buildOptionString)) {
50+
BuildOptions buildOptionEnum = (BuildOptions) Enum.Parse(typeof(BuildOptions), buildOptionString);
51+
buildOptions |= buildOptionEnum;
52+
}
53+
}
54+
55+
// Depending on whether the build is using a build profile, `buildPlayerOptions` will an instance
56+
// of either `UnityEditor.BuildPlayerOptions` or `UnityEditor.BuildPlayerWithProfileOptions`
57+
dynamic buildPlayerOptions;
58+
59+
if (options["customBuildProfile"] != "") {
60+
61+
#if UNITY_6000_0_OR_NEWER
62+
// Load build profile from Assets folder
63+
BuildProfile buildProfile = AssetDatabase.LoadAssetAtPath<BuildProfile>(options["customBuildProfile"]);
64+
65+
// Set it as active
66+
BuildProfile.SetActiveBuildProfile(buildProfile);
67+
68+
// Define BuildPlayerWithProfileOptions
69+
buildPlayerOptions = new BuildPlayerWithProfileOptions {
70+
buildProfile = buildProfile,
71+
locationPathName = options["customBuildPath"],
72+
options = buildOptions,
73+
};
74+
#else
75+
throw new Exception("Build profiles are not supported by this version of Unity (" + Application.unityVersion +")");
76+
#endif
77+
78+
} else {
79+
80+
// Gather values from project
81+
var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray();
82+
83+
#if UNITY_2021_2_OR_NEWER
84+
// Determine subtarget
85+
StandaloneBuildSubtarget buildSubtarget;
86+
if (!options.TryGetValue("standaloneBuildSubtarget", out var subtargetValue) || !Enum.TryParse(subtargetValue, out buildSubtarget)) {
87+
buildSubtarget = default;
88+
}
89+
#endif
90+
91+
BuildTarget buildTarget = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]);
92+
93+
// Define BuildPlayerOptions
94+
buildPlayerOptions = new BuildPlayerOptions {
95+
scenes = scenes,
96+
locationPathName = options["customBuildPath"],
97+
target = buildTarget,
98+
options = buildOptions,
99+
#if UNITY_2021_2_OR_NEWER
100+
subtarget = (int) buildSubtarget
101+
#endif
102+
};
103+
104+
// Apply Android settings
105+
if (buildTarget == BuildTarget.Android) {
106+
VersionApplicator.SetAndroidVersionCode(options["androidVersionCode"]);
107+
AndroidSettings.Apply(options);
108+
}
109+
110+
}
111+
81112
// Perform build
82113
BuildReport buildReport = BuildPipeline.BuildPlayer(buildPlayerOptions);
83114

0 commit comments

Comments
 (0)