Another Unity3D Project Contineous Integration: Hudson CI on Mac OSX


Last week, I have automated the build system on windows by Cruise Control .net, unity3d and a couple of ftp tasks. However, there was a couple of problems in running ccnet as a windows service mode. While it was running great in command prompt, it gives errors in service mode. It wouldn’t be an issue if there is a dedeciated build windows server and nobody will mess with the command window. But unfortunately it wasn’t my case.

Now I turned my eyes to mac machine which I use it less frequently.

I spent a few hours to find a good solution for it and came up with this combination.

Hudson CI + Subversion + Unity mac + Hudson SCP plugin + Hudson post build script.

Here are the steps:

  1. Download hudson.war file from http://hudson-ci.org
  2. Place the war file into the directory of your choice. In my case, I made a special directory called “/_infra/” and place it in here. All CI related files will be stored under “/_infra/hudsonci/”.
  3. Though it will run great by running this command “java -jar hudson.war”, I want to run this more of a demon-style. There is another option of installing tomcat and place the war file under webapp but it is too much in my case. So the solution I used is this. Make this file “hundson.ci.plist” with the following information first. You can download it from here. Another trick I used here is that by explictly expressing the installation directy with “-DHUDSON=/_infra/hudsonci”, you can install the hudson in the designated directory instead of  “~./hudson”.
  4. Place the file in ~/Library/LaunchAgents/.
  5. Load this plist file as a service by running this command: “launchctl load -w ~/Library/LaunchAgents/hudson.ci.plist”
  6. Check hudson installation in http://localhost:8080

References:

[35.1] 템플릿에 담겨진 숨은 뜻은 무엇인가요?
[35.2] “class template”의 문법/구문은 무엇인가요?
[35.3] “function template”의 문법/구문은 무엇인가요?
[35.4] 어떻게 명시적으로 어떤 버전의 함수 템플릿이 호출되어야 할지를 선택할 수 있나요?
[35.5] “매게변수화된 형(Parameterized Type)”이란 무엇인가요?
[35.6] “범용성(Genericity)”란 무엇인가요?
[35.7] 내 템플릿 함수는 템플릿 형 T가 int혹은 std::string일때 특별한 동작을 하는데, T가 이렇게 형마다 다를 경우에 어떻게 이에 해당하는 코드를 작성할 수 있나요?
template so it uses the special code when T is one of those specific types?
[35.8] 응? foo나 bar를 사용하지 않는 템플릿 특수화의 예제를 보여주세요.
[35.9] 내 템플릿하무에 있는 대부분의 코드는 다 비슷해요; 소스 코드를 중복시키지 않으면서도 템플릿 특수화를 할 수 있는 특별한 방법이 있나요?
[35.10] 모든 이런 템플릿과 템플릿 특수화를 사용하면 프로그램을 느리게 할 것 같아요, 맞나요?