Comments (5)
REPOSITORY TAG IMAGE ID CREATED SIZE
unityci/editor dev ed64129acfe7 49 seconds ago 6.21GB
unityci/editor 2020.1.11f1-webgl-0 e10428a15532 5 days ago 6.2GB
It's small.
from docker.
GZip (in Unity 2020.1 or later)
Filename: gzip
Arguments: -9 --keep -S ".compressed" "/builds/gableroux/unity3d-gitlab-ci-example/Temp/StagingArea/Data/Output/Build/ExampleProjectName.data.gz"
- The above command (i.e.
gzip -9 --keep -S ".compressed" ".../ExampleProjectName.data.gz"
) will fail for the following reasons.gzip: /data/logs/log01.log.gz already has .gz suffix -- unchanged
- Workaround: add
-f
as default option for gzipexport GZIP=-f
Brotli (in all versions)
- No module named
pkg_resources
pkg_resources
module is included inpython-setuptools
package.- Workaround:
apt-get install python-setuptools
__bootstrap__ImportError: /root/.cache/Python-Eggs/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg-tmp/brotli.so: invalid ELF header
- Refer
Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg
instead ofBrotli-0.4.0-py2.7-linux-x86_64.egg
. - This reference is hard-coded in
UnityEditor.WebGL.Extensions.dll
, so we will need to copy or link the file. - Workaround:
cp /opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-linux-x86_64.egg /opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg
- Refer
I'm testing the validity of these fixes.
ARG ediotrImage=unityci/editor:2020.1.11f1-webgl-0.9.0
FROM $ediotrImage
ENV GZIP=-f
RUN apt-get -q update \
&& apt-get -q install -y --no-install-recommends --allow-downgrades \
python-setuptools \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& cp \
/opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-linux-x86_64.egg \
/opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg
from docker.
Using Brotli
compression for webgl is also failing with following error:
Failed running python "/opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/python/bro.py" -o "/builds/gableroux/unity3d-gitlab-ci-example/Temp/StagingArea/Data/Output/Build/ExampleProjectName.data.br.compressed" -i "/builds/gableroux/unity3d-gitlab-ci-example/Temp/StagingArea/Data/Output/Build/ExampleProjectName.data.br" --comment "UnityWeb Compressed Content (brotli)"
stdout:
stderr:Traceback (most recent call last): File "/opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/python/bro.py", line 8, in <module> import brotli File "build/bdist.macosx-10.10-x86_64/egg/brotli.py", line 7, in <module> File "build/bdist.macosx-10.10-x86_64/egg/brotli.py", line 3, in __bootstrap__ImportError: No module named pkg_resources
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:Log(LogType, Object)
UnityEngine.Debug:LogError(Object)
UnityEditor.WebGL.ProgramUtils:StartProgramChecked(ProcessStartInfo) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs:46)
UnityEditor.WebGL.WebGlBuildPostprocessor:CompressAndMarkBrotli(String) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:835)
UnityEditor.WebGL.WebGlBuildPostprocessor:CompressBuild(BuildPostProcessArgs) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:848)
UnityEditor.WebGL.WebGlBuildPostprocessor:PostProcess(BuildPostProcessArgs) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:920)
UnityEditor.Modules.DefaultBuildPostprocessor:PostProcess(BuildPostProcessArgs, BuildProperties&) (at /home/bokken/buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:27)
UnityEditor.PostprocessBuildPlayer:Postprocess(BuildTargetGroup, BuildTarget, String, String, String, Int32, Int32, BuildOptions, RuntimeClassRegistry, BuildReport) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:324)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[], Boolean)
UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[]) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:399)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[]) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:298)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:272)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:267)
BuildCommand:PerformBuild() (at Assets/Scripts/Editor/BuildCommand.cs:181)
Updated issue description accordingly.
from docker.
Test results
I ran the following commands for log:
find . -name "7_Build project (GZip).txt" | sort | xargs -I {} grep -l '\(Build failed!\|CompressAndMarkGzip\)' {} > gzip_fails.txt
echo "GZip: `cat gzip_fails.txt | wc -l` versions failed"
find . -name "9_Build project (Brotli).txt" | sort | xargs -I {} grep -l '\(Build failed!\|CompressAndMarkBrotli\)' {} > brotli_fails.txt
echo "Brotli: `cat brotli_fails.txt | wc -l` versions failed"
Before the modification (0.9.0, 142 Unity versions)
Results: (NOTE) In Unity 2018.4.15 or earlier, even if the brotli fails, the build will be marked as successful.
gzip_fails.txt
brotli_fails.txt
GZip: 20 versions failed
Brotli: 142 versions failed
- GZip failed in 2020.1.x, 2020.2.0 and 2020.2.1.
- Brotli failed in all versions.
After the modification (142 Unity versions)
GZip: 0 versions failed
Brotli: 0 versions failed
Conclusions
I think the modification is valid. I am going to create a PR.
from docker.
Great work!
I think the modification is valid. I am going to create a PR.
Yea sounds good. Could you please include the size difference for the image?
from docker.
Related Issues (20)
- Missing WebGL/Android building docker containers for Windows HOT 2
- Build Failed on unityci/editor:2021.3.22f1-windows-mono-1.1 HOT 1
- Support for Windows Server 2022 HOT 1
- Build fails for editor-ubuntu-2023.1.0f1-webgl-1.1.2 with URP
- Update ubuntu version from 18.04 to 22.04 HOT 3
- Manifest unknown for certain images on unityci/editor but not for others. HOT 2
- Stop supporting EOL versions of Unity Editor
- manifest for unityci/editor:2022.3.8f1-linux-il2cpp-1 not found HOT 1
- manifest for unityci/editor:windows-2021.3.16f1-webgl-2 not found HOT 1
- "Build succeeded" but still getting "There was an error..." HOT 1
- Pass env vars set in workflow file to docker environment HOT 6
- Fail to build containers because of failing git lfs checkout HOT 2
- docker: invalid reference format: repository name must be lowercase. HOT 4
- Unable to Generate Logs and Hanging Execution with unityci/editor Docker Image on Mac with Apple Silicon HOT 1
- xvfb-run is not invoked as root user when using runAsHostUser
- GameCI WebGL builds have no audio. HOT 1
- Licensing issue with non root user
- Intermittent crashes when running unity builds on docker.
- Dedicated Server support for Linux is not installed after updating from 2022.3.16f1 to 6000.0.0f1 HOT 9
- Error when pulling ci editor image for version 2022.3.29.f1 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from docker.