Total: Today: Yesterday:
'노하우/Jenkins'에 해당되는 글 1건
2019.05.01 jenkins-cli 로 다른 jenkins 서버에 JOB 복사하기
노하우/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 이 생성되었다면 서버 환경에 따른 차이점 부분만 조정해주면 됩니다.