Total: Today: Yesterday:
개발/Unity | 2020. 8. 7. 14:29 | Posted by 자수씨

Unity 빌드를 Jenkins 로 이용하고 있는데, Editor 를 최신버전으로 업데이트 한 이후부터 아래와 같은 오류가 발생한다.

 

Could not open file /Users/*****/Documents/unity/2020.1.1f1/PlaybackEngines/AndroidPlayer/modules.asset for read 
(Filename: ./Runtime/File/OpenFileCache.cpp Line: 61)
 
Assertion failed on expression: 'res' 
(Filename: ./Runtime/Serialize/SerializationCaching/FileCacherRead.cpp Line: 133)
 
Unknown error occurred while loading '/Users/*****/Documents/unity/2020.1.1f1/PlaybackEngines/AndroidPlayer/modules.asset'. 
(Filename:  Line: 0)
 
[Unity Package Manager (Upm)]
Parent process [30691] was terminated

 

Jenkins 는 추후 iOS 빌드를 위해 MacOS 환경에 구축되었는데, MacOS 에서 Unity Editor 로 빌드를 하면 오류가 발생하지 않는다.

 

한가지 특이한 사항은 이전 버전이 2019.3.0f6 인데 경로가 Documents 가 아닌 Developments 라고 별도의 경로에 있었다. 기억을 더듬어 보니 기존에도 이러한 이슈가 발생한 것 같은데 정리를 안해 놓은 듯...

 

기존 버전과 같이 Unity Editor 를 /Users/[사용자]/Documents 가 아닌 다른 경로(/Users/[사용자]/Developments) 로 이동시키고 빌드를 했더니 오류가 발생하지 않았다.

 

Jenkins 프로세스가 MacOS 의 권한으로 인해 Documents 에 접근이 안되는 것으로 마무리 짓는다.

(이전에는 관련된 정보를 찾았던 것 같은데 기억이 나지 않는다...)

노하우/Jenkins | 2019. 5. 1. 17:45 | Posted by 자수씨

설정이 복잡한 jenkins job 을 다른 jenkins 서버에 이관할 경우 jenkins-cli 를 통해 쉽게 진행할 수 있습니다.

Jenkins 관리 > Jenkins CLI 에 들어가면 가능한 명령어들을 볼 수 있습니다.

우측 상단에 jenkins-cli.jar 를 내려받아 다음과 같이 실행합니다.

java -jar jenkins-cli.jar -s <jenkins 서버 IP:Port> <명령어>

만약 로그인이 필요한 서버일 경우 다음과 같이 계정 정보를 입력합니다.

java -jar jenkins-cli.jar -s <jenkins 서버 IP:Port> -auth <아이디>:<패스워드> <명령어>

기존 jenkins 서버에서 job 정보를 xml 로 내려받기 위해 get-job 명령어를 이용합니다.

java -jar jenkins-cli.jar -s http://localhost:8080/ -auth user:password get-job myjob > myjob.xml

get-job 명령어는 xml 로 job 정보를 stdout 으로 내보내기 때문에 > 을 이용하여 파일에 저장합니다.

<?xml version='1.1' encoding='UTF-8'?>
<maven2-moduleset plugin="maven-plugin@3.1.2">
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty plugin="gitlab-plugin@1.5.6">
      <gitLabConnection></gitLabConnection>
    </com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty>
    <jenkins.model.BuildDiscarderProperty>
      <strategy class="hudson.tasks.LogRotator">
        <daysToKeep>20</daysToKeep>
        <numToKeep>20</numToKeep>
        <artifactDaysToKeep>-1</artifactDaysToKeep>
        <artifactNumToKeep>-1</artifactNumToKeep>
      </strategy>
    </jenkins.model.BuildDiscarderProperty>
  </properties>
  ...
<maven2-moduleset>

이관할 jenkins 서버에 job 을 생성하기 위해 create-job 명령어를 이용합니다.

java -jar jenkins-cli.jar -s http://localhost:9080/ -auth user:password create-job myjob < myjob.xml
ERROR: Unexpected exception occurred while performing create-job command.
javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 1; Content is not allowed in prolog.

위와 같은 오류가 발생한다면 xml 에서 <?xml version='1.1' encoding='UTF-8'?> 부분을 제거한 후 다시 실행합니다.

성공적으로 job 이 생성되었다면 서버 환경에 따른 차이점 부분만 조정해주면 됩니다.