-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaction.yaml
128 lines (118 loc) · 5.13 KB
/
action.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
name: 'Unity Build Pipeline Utility'
description: 'Runs a Unity build action using the specified arguments'
branding:
icon: 'box'
color: 'blue'
inputs:
build-target:
description: 'The build target to build for.'
# Unity -buildTarget command line args https://docs.unity3d.com/Manual/CommandLineArguments.html
# StandaloneWindows64, WSAPlayer, StandaloneOSX, iOS, StandaloneLinux64, Android, Lumin, WebGL, VisionOS
default: ''
test:
description: 'Run editor tests'
required: false
default: 'true'
additional-validation-args:
description: 'Additional args to pass to validation command'
required: false
default: ''
additional-test-args:
description: 'Additional args to pass to test command'
required: false
default: ''
additional-build-args:
description: 'Additional args to pass to build command'
required: false
default: ''
output-directory:
description: 'The directory to output the build to'
required: false
default: ''
publish-artifacts:
description: 'Should the workflow publish artifacts?'
required: false
default: 'true'
artifact-name:
description: 'The name of the artifact to publish'
required: false
default: ''
runs:
using: "composite"
steps:
- name: Unity Build Pipeline Utility
run: |
# Unity Build Pipeline Utility
Write-Host "::debug::Build Target: ${{ inputs.build-target }}"
Write-Host "::debug::Run Editor Tests: ${{ inputs.test }}"
Write-Host "::debug::Additional Validation Args: ${{ inputs.additional-validation-args }}"
Write-Host "::debug::Additional Test Args: ${{ inputs.additional-test-args }}"
Write-Host "::debug::Additional Build Args: ${{ inputs.additional-build-args }}"
Write-Host "::debug::Publish Artifacts: ${{ inputs.publish-artifacts }}"
Write-Host "::debug::Artifact Name: ${{ inputs.artifact-name }}"
$outputDirectoryArgs = ''
$outputDirectory = '${{ env.UNITY_PROJECT_PATH }}/Builds'
if ("${{ inputs.output-directory }}" -ne "") {
$outputDirectoryArgs = ' -buildOutputDirectory ${{ inputs.output-directory }}'
$outputDirectory = '${{ inputs.output-directory }}'
}
Write-Host "::debug::OutputDirectory: $outputDirectory"
Write-Host "::debug::OutputDirectoryArgs: $outputDirectoryArgs"
"OUTPUT_DIRECTORY=$outputDirectory" >> $env:GITHUB_ENV
"OUTPUT_DIRECTORY_ARGS=$outputDirectoryArgs" >> $env:GITHUB_ENV
if ("${{ inputs.artifact-name }}" -eq "") {
$artifactName = '${{ github.run_number }}.${{ github.run_attempt }}-${{ runner.os }}-${{ inputs.build-target }}-Artifacts'
"ARTIFACT_NAME=$artifactName" >> $env:GITHUB_ENV
} else {
"ARTIFACT_NAME=${{ inputs.artifact-name }}" >> $env:GITHUB_ENV
}
shell: pwsh
- uses: RageAgainstThePixel/unity-action@v1
name: Project Validation
with:
log-name: 'project-validation'
args: '-quit -nographics -batchmode -executeMethod Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.ValidateProject ${{ inputs.additional-validation-args }}'
- uses: RageAgainstThePixel/unity-action@v1
if: ${{ inputs.test == 'true' }}
name: '${{ inputs.build-target }}-Tests'
with:
log-name: '${{ inputs.build-target }}-Tests'
build-target: '${{ inputs.build-target }}'
args: '-nographics -batchmode -runEditorTests ${{ inputs.additional-test-args }}'
- uses: RageAgainstThePixel/unity-action@v1
name: '${{ inputs.build-target }}-Build'
with:
log-name: '${{ inputs.build-target }}-Build'
build-target: '${{ inputs.build-target }}'
args: '-quit -nographics -batchmode -executeMethod Utilities.Editor.BuildPipeline.UnityPlayerBuildTools.StartCommandLineBuild ${{ inputs.additional-build-args }}${{ env.OUTPUT_DIRECTORY_ARGS }}'
- uses: actions/upload-artifact@v4
name: Upload Artifacts
if: ${{ always() && inputs.publish-artifacts == 'true' }}
with:
overwrite: true
retention-days: 1
compression-level: 0
name: '${{ env.ARTIFACT_NAME }}'
path: |
${{ env.UNITY_PROJECT_PATH }}/**/*.log
${{ env.OUTPUT_DIRECTORY }}/
- name: Clean Artifacts
if: ${{ always() && inputs.publish-artifacts == 'true' }}
run: |
# Clean Logs
Get-ChildItem -Path "${{ env.UNITY_PROJECT_PATH }}" -File -Filter "*.log" -Recurse | ForEach-Object { Write-Host "::debug:: $_" }
Get-ChildItem -Path "${{ env.UNITY_PROJECT_PATH }}" -File -Filter "*.log" -Recurse | Remove-Item -Force
# Clean Artifacts
$artifacts = "${{ env.OUTPUT_DIRECTORY }}"
Write-Host "::debug::Build artifacts path: $artifacts"
if (Test-Path -Path $artifacts) {
Get-ChildItem -Path $artifacts -Recurse | ForEach-Object { Write-Host "::debug:: $_" }
try {
Remove-Item $artifacts -Recurse -Force
} catch {
Write-Warning "Failed to delete artifacts folder file: $_"
}
} else {
Write-Host "::debug::Artifacts folder not found."
}
shell: pwsh