mindcandy / teamcity-unity3d-build-runner-plugin Goto Github PK
View Code? Open in Web Editor NEWA Teamcity plugin for building Unity3d projects. NOTE: this has an MIT license so feel free to copy / adapt as you need to.
A Teamcity plugin for building Unity3d projects. NOTE: this has an MIT license so feel free to copy / adapt as you need to.
Trying to build this using both ant and IntelliJ gives me the same error (see below). For some reason it can't find XMLPropertyListConfiguration.
commons-configuration-1.10.jar is in lib and shows up in IntelliJ (I can even decompile it and find XMLPropertyListConfiguration inside).
I'm trying to build on Windows if that matters.
I have set the paths in the build.properties file as per instructions, is there anything else I need to do?
[javac] C:\Projects\Teamcity-unity3d-build-runner-plugin-master\agent\src\unityRunner\agent\UnityRunnerBuildServiceFactory.java:25: error: package org.apache.commons.configuration.plist does not exist
[javac] import org.apache.commons.configuration.plist.XMLPropertyListConfiguration;
[javac] ^
[javac] C:\Projects\Teamcity-unity3d-build-runner-plugin-master\agent\src\unityRunner\agent\UnityRunnerBuildServiceFactory.java:181: error: cannot find symbol
[javac] XMLPropertyListConfiguration config = new XMLPropertyListConfiguration(configFilePath.toFile());
[javac] ^
[javac] symbol: class XMLPropertyListConfiguration
[javac] C:\Projects\Teamcity-unity3d-build-runner-plugin-master\agent\src\unityRunner\agent\UnityRunnerBuildServiceFactory.java:181: error: cannot find symbol
[javac] XMLPropertyListConfiguration config = new XMLPropertyListConfiguration(configFilePath.toFile());
[javac] ^
[javac] symbol: class XMLPropertyListConfiguration
Hello--
First off, great plugin! Well done.
I have been noticing some issues with setting the Build Path in Windows:
(I have the clearBefore and cleanAfter flags both checked.)
1.) Setting the path with *.exe at the end: (e.g. c:\repo\builds\game.exe) - the first time this runs, it works correctly. Creates the game.exe, folder tree is also correct. The second time it runs, however, it errors:
[Step 1/1] Removing output directory: c:\repo\builds\game.exe
[Step 1/1] java.lang.IllegalArgumentException: c:\repo\builds\game.exe is not a directory
2.) Setting the path without the *.exe at the end (e.g. c:\repos\builds), builds the data directories but upon moving the default exe created errors with:
[Step 1/1] Error building Player: IOException: Failed to Move File / Directory from 'Temp/StagingArea/player_win.exe' to 'c:/repo/builds/'.
Hello - I've attempted to build the latest Unity Runner via IDEA under Windows, but for some reason the runner type doesn't show up when creating new build configurations. I didn't have any errors in the build, and the plugin shows up in the TeamCity configured plugins list....
Anyway, I was hoping you could create a new prebuilt runner ZIP file for me? The one currently linked on the project home page is from 2013.
Many thanks!
Mike.
As we have multiple teams using Unity3d and sharing the build machines, we should allow multiple versions installed at the same time.
Unity has an installer BUT you can rename/move the folder after install.
So we could require all Unity versions to be installed in /Applications/UnityVersions/...
We can then auto detect the actual version from the info.plist file
To specify which version, we can use Agent Requirements and/or a new version parameter on the Unity Runner. This would select a MAJOR and MINOR version number.
The Build Runner can add any number of version parameters as Agent Parameters in the format unity.version.MAJOR.MINOR e.g. unity.version.4.3=4.3.2f4
unity.version.5.1=5.1.0beta4
(MC story TOOL-606)
The teamcity unity build runner has a hard-coded unity.version parameter.
We should instead read this from the installed unity software.
(note - internal story at MC is TOOL-605)
Maybe I'm not understanding why this is, but it seems to me that it's unnecessary to wrap the input from the "Build extra" configuration field in quotes.
e.g. Build extra: -myParam 1 -anotherParam 2
results in the following command with parameters:
Starting: "C:\Program Files (x86)\Unity\Editor\unity.exe" -batchmode -quit -projectPath <...> -executeMethod <...> -cleanedLogFile <...> "-myParam 1 -anotherParam 2"
Wouldn't it be more logical to have the parameters added without those quote marks? In that way we can just search the System.Environment.GetCommandLineArgs directly without an intermediate step in between to split the quoted parameter. This also prevents us from calling any parameters ourselves that haven't been exposed through the configuration, like -buildTarget (even though that can be done through a script via -executeMethod).
Hello,
We installed a build agent on a Win10 box and connected it to a TC9.1 server. It reports requirements being unmet, with the message "Exception getting finding unity versions". Looking at the source, we think it is misidentifying the system as a Mac box and using /Applications as the path to look for unity. As a test we copied the Unity folder from Program Files to c:\Applications and the runner successfully found it and was happy, which seems to indicate that it is in fact doing a search and is able to find Unity, but is looking in the wrong place.
Hello,
I am using your plugin to run automated Unity Builds and it works great. Good job there ! The only thing that I am missing is the fact that in the build log I don't see the information below :
Textures 113.2 mb 19.9%
Meshes 66.8 mb 11.7%
Animations 5.8 mb 1.0%
Sounds 27.3 mb 4.8%
Shaders 5.3 mb 0.9%
Other Assets 7.4 mb 1.3%
Levels 329.1 mb 57.8%
Scripts 4.2 mb 0.7%
Included DLLs 6.4 mb 1.1%
File headers 3.7 mb 0.6%
Complete size 569.0 mb 100.0%
And all the assets sorted by uncompressed size
Do you have any clue why that is not present in my logs ? Do I have to set up the runner in a specific way ?
http://i.imgur.com/WYCBBHR.png
That's how my runner is configured :)
Good job with the plugin , really appreciate the work you have done.
PS : I did check the Log file after the build has finished and that information is there.
My greeting.
Trying to bring unity3d-runner to work on Teamcity9.
After successfully install of plugin and adding Unity build step, i've started to fight with a problem - there is no compatible agents to build project.
On the Agent Requirements page there is two messages.
TC_agent
Incompatible runner: Unity
Unmet requirements: unity.latest exists
I thought in two ways -
That's why i can't understand, what does plugin wants from me =).
There is still error messages in teamcity_agent log :
java.lang.UnsupportedClassVersionError: unityRunner/agent/AgentListener : Unsupported major.minor version 52.0
and no compatible agents.
Thank you in advance.
'Unity' does not show up as a Build Step. I didn't have any errors in the build, and the plugin shows up in the TeamCity configured plugins list.
This is related to issue 15:
#15
Built with ant 1.9.4 on Windows 8.1 64-bit
Can this plugin be used for automating building of Android *.apk files?
The plugin fails to find my install of unity on a windows build agent. By the looks of things it has something to do with me running 32-bit java on 64-bit windows with 64-bit unity.
Will investigate further.
Hi,
Tried to install this plugin but then I click on dist to make unityRunner.zip this message poped up: JDK (1.6) needed to run this ANT target is not configured. Please update your settings in the Project | Libraries menu.
Please, help me with it.
I am using TeamCity version 9.1.1 (build 37059)
So I've gone through a lot of hoop jumping updating a TeamCity installation I inherited from an old co-worker, and not understanding that TEAM_CITY_DATA_PATH was not where I thought it was...but after a few hours I did eventually install this plugin correctly and removed the old one...
I even had to uninstall a buildAgent that was stuck in an endless loop of failed updates. Reinstalling it fixed that.
Now I have my final hurdle, and sadly will go to sleep with unresolved conflict, because I am absolutely stumped.
When I try to run a build, I am met with the following error and reason:
Incompatible runner:
Unity
Unmet requirements:
unity.latest exists
I even shutdown the Agent, deleted its plugin folder, and restarted it (thus forcing an update to the Agent). I was paranoid it was somehow still getting the old Unity plugin. I understand it pulls the data from the TEAM_CITY_DATA_PATH and installs some plugins into its own local directory.
However, this still happens. I have no idea if it is anything I can fix. I have also tried specifying the Unity version I have installed, but that also does not work.
If it helps, I have Unity 5.1.3p1 installed. I'm not sure if it is required that I have a non-patch release installed with the way unity.latest currently works. Explicitly typing in 5.1.3p1 also did nothing.
EDIT: I just noticed that, for some reason, Unity does not appear as one of the supported Build Runners in my Agent's Build Runners tab. I am unsure how this is possible, because it is being added to the plugins folder, I can see it there.
EDIT 2: I was just looking through my teamcity-agent.log
file, and came across this error.
[2015-09-04 01:02:18,552] ERROR - jetbrains.buildServer.AGENT - Exception getting finding unity versions :\Applications
However, it is an error you would expect, running on a Windows installation. The rest of the log claims that unityRunner is indeed running, so I am unsure if this has anything to do with the problem. I imagine not, or else it wouldn't work for anybody on Windows.
Is anyone updating this any further? There are a few features I would like to suggest, if so.
Hello--
The windowsUnityPath is currently hardcoded to the 32bit "Program Files (x86)" path, however on the new 5.0+ Unity, there is a possibility this will be installed in the 64bit "Program Files" folder instead.
It would be nice if this could be overridden and/or detected instead.
Cheers~
Download link is requesting username and password.
From TeamCity team we want to say thanks for all contributors of this plugin. All of you made significant contribution in TeamCity ecosystem.
Since the active development of it is looks suspended and some of our users need support of features from latest Unity releases we've started development of the JetBrains driven Unity plugin:
https://plugins.jetbrains.com/plugin/11453-unity-support
Feel free to try it and contribute in the project.
Attempting to use a TeamCity configuration parameter for the Unity version in a build step causes agent requirements to fail with a message below (assuming %unityVersion% is the defined parameter), rather than correctly resolving the parameter for the check.
Unmet requirements: unity.%unityVersion% exists
I can't compile using Ant build although "Build>Rebuild Project" from Intellij Idea shows no error
here's the compile message
Created dir: V:\Teamcity-unity3d-build-runner-plugin\out\production\unityrunner-agent
javac
V:\Teamcity-unity3d-build-runner-plugin\unityrunner.xml:260: Compile failed; see the compiler error output for details.
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1180)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:935)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.Main.start(Main.java:198)
at org.apache.tools.ant.Main.main(Main.java:286)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)
V:\Teamcity-unity3d-build-runner-plugin\unityrunner.xml (260:46)'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
Compiling 21 source files to V:\Teamcity-unity3d-build-runner-plugin\out\production\unityrunner-agent
V:\Teamcity-unity3d-build-runner-plugin\agent\src\unityRunner\agent\UnityRunnerBuildServiceFactory.java:25: error: package org.apache.commons.configuration.plist does not exist
V:\Teamcity-unity3d-build-runner-plugin\agent\src\unityRunner\agent\UnityRunnerBuildServiceFactory.java (181:21)error: cannot find symbol class XMLPropertyListConfiguration
V:\Teamcity-unity3d-build-runner-plugin\agent\src\unityRunner\agent\UnityRunnerBuildServiceFactory.java (181:63)error: cannot find symbol class XMLPropertyListConfiguration
3 errors
V:\Teamcity-unity3d-build-runner-plugin\unityrunner.xml:260: Compile failed; see the compiler error output for details.
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1180)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:935)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.Main.start(Main.java:198)
at org.apache.tools.ant.Main.main(Main.java:286)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)
V:\Teamcity-unity3d-build-runner-plugin\unityrunner.xml:260: Compile failed; see the compiler error output for details.
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1180)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:935)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.Main.start(Main.java:198)
at org.apache.tools.ant.Main.main(Main.java:286)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.