1월, 2016의 게시물 표시

[Jenkins] Slave 노드 연결하기.

이미지
Jenkins 서버에 Slave 노드를 연결하면, Slave 노드에서 원격으로 빌드가 가능하다. 1. 노드 만들기 1.1. 신규 노드 생성 Jenkins 관리 - 노드 관리 로 들어와서 신규 노드 를 생성한다. 생성할 노드 명을 입력하고, Dumb Slave 를 선택한다. 노드 생성에 필요한 속성 값들을 입력한다. Remote root directory: Slave 노드에서 사용할 root 디렉토리. Slave 노드에서도 Jenkins Home 폴더가 새로 만들어지는데, 그 위치를 정하는 경로이다. Labels: Jenkins에서 Job을 생성할때 이 Label을 통해서 어떤 노드에서 실행할지 선택할 수 있다. Launch method: Launch slave agents via Java Web Start 를 선택한다. 그 외 옵션은 필요한 조건에 맞추어서 설정하면 된다. 2. 노드 연결하기 (*노드 연결은 Slave 노드로 설정할 컴퓨터에서 수행해야 한다.) 2.1. slave agent 다운 받기 Slave 노드로 Jenkins 서버에 접속한 뒤, 생성한 노드로 찾아 들어가면 아래와 같은 화면을 볼 수 있다. 여기서 Launch 버튼을 클릭하면 slave-agent.jnlp 라는 파일을 다운받을 수 있다. 2.2. slave agent 실행 다운받은 slave agent를 Slave 노드로 설정할 컴퓨터에서 실행해준다. 그리고 아래와 같은 창이 뜬다면 연결에 성공한 것이다. 발생할 수 있는 오류 Master 노드 주소 오류 slave-agent.jnlp를 실행했을 때 아래와 같은 오류가 나온다면 Master 노드의 주소를 설정하지 않아서 발생하는 것이다. 이 문제는 Master 노드의 URL을 수정해주면 해결할 수 있다. Jenkins 관리 - 시스템 설정 - Jenkins Location 에 가보면 아래와 같이 Jenkins

[Jenkins]Batch Command로 네트워크 드라이브 접근

Jenkins에서 Execute Windows Batch Command를 이용해서 네트워크에 접근하려고 하면 에러가 발생한다. Network drive mappings (Windows) On Windows, network drive mappings are scoped to users. So if you run Jenkins in a different user account (such as a Windows service), they will not see the same drive mapping that you do. Use UNC notation (//server/path/to/file), or refer to How to get command prompt as the SYSTEM user  and start a command prompt, then define drive mappings. Ref:  Jenkins Wiki 사용자 계정 문제 때문에 이러한 에러가 발생하게 되는데, 이것을 해결하기 위해서는 네트워크 드라이브를 연결할 때, NT AUTHORITY\SYSTEM 계정으로 등록을 해야한다. 등록하는 방법은 아래와 같다. 1. psexec를 C드라이브(C:\)에 다운로드 받는다. 2. cmd(명령 프롬프트)를 관리자 권한으로 실행한다. 3. cd C:\  입력 4. psexec -i -s cmd.exe  입력 (* whoami 를 입력해서 nt authority\system가 나온다면 정상이다.) 5.  net use Z: \\servername_OR_IP\sharedfolder /u:username /persistent:yes 위 과정을 수행한 뒤에 다시 Jenkins에서 Z: 드라이브에 접근하면 오류 없이 접근할 수 있다.