[Jenkins] Freestyle project 로 젠킨스 생성하여 배포

Posted by 김성철

Jenkins - Freestyle project 로 배포하기

참고 URL : https://hwannny.tistory.com/89  

젠킨스 빌드

이전에 생성한 프로젝트에서 그대로 하였음  
https://github.com/kkimsungchul/study/blob/master/Jenkins/%5BJenkins%5D%20Freestyld%20Project%20%EB%A1%9C%20%EC%A0%A0%ED%82%A8%EC%8A%A4%20%EC%83%9D%EC%84%B1.txt  

사전 작업

Tomcat 에서의 사전 작업이 필요함  
  
1. tomcat-users.xml 파일 수정  
	젠킨스 ID / PW를 기재  
	경로 : C:\apache-tomcat-8.5.73\conf\tomcat-users.xml  
		아래의 내용을 추가하면 됨  
		username 은 jenkins 접속 id  
		password 는 jenkins 비밀번호  
		==================================================================================================================================================  
		<role rolename="manager-script"/>  
		<user username="아이디~~" password="비밀번호!!~~~" roles="manager-script"/>  
		==================================================================================================================================================  
  
2. context.xml 파일 수정  
	Jenkins 서버의 IP를 추가해준다,  
	| (파이프) 로 구분하여서 뒤에 추가하면 되고, 나는 한서버에 다있기 떄문에 localhost로 기재했음 (127.0.0.1 로 해도되고)  
  
	경로 : C:\apache-tomcat-8.5.73\webapps\manager\META-INF\context.xml  
  
	기존  
	==================================================================================================================================================  
	  <Valve className="org.apache.catalina.valves.RemoteAddrValve"  
			 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />  
	==================================================================================================================================================  
  
	수정 후  
	==================================================================================================================================================  
	  <Valve className="org.apache.catalina.valves.RemoteAddrValve"  
			 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|localhost" />  
	==================================================================================================================================================  

빌드 후 조치 탭 설정

1. 빌드 후 조치 추가를 클릭하여 Deploy war/ear to a container 선택  
	해당 항목이 안보일 경우 플러그인 관리에서 Deploy to container Plugin을 설치  
  
2. WAR/EAR files  
	배포할 war 파일의 경로의 파일을 기재 ,파일이 여러개일 경우에는 아래와 같이 입력  
		**/*.war  
	파일이 하나일 경우 아래와 같이 입력  
		**/ROOT.war  
  
	※ 나는 하나여서 **/ROOT.war 로 입력했음  
  
	war파일은 아래의 경로에 위치함  
		C:\ProgramData\Jenkins\.jenkins\workspace\JenkinsTest\test\build\libs\ROOT.war  
  
3. Context path  
	배포시 사용할 컨텍스트를 지정하며 나는 / 만 입력했음,별다른 패스가없어서  
	/  
  
4. Containers  
	Add Container 에서 사용하는 Tomcat의 버전을 선택  
	Tomcat 8.x Remote  
  
5. 4번 설정하면 아래에 Credentials항목이 표시되며, 항목은 none로 되어있는데 여기서 우측의 ADD 버튼 클릭 후 Jenkins선택  
  
6. Jenkins Credentials Provider: Jenkins 창이 뜨면 아래와 같이 정보 입력 우 ADD클릭  
	Kind : Username with password 선택  
	Scope : Global (Jenkins, nodes, items, all child items, etc) 선택  
	Username : 젠킨스 서버 접속 ID  
	Password : 젠킨스 서버 접속 PW  
  
7. 5번항목에서 none 으로 되어 있는 것을 6번에서 생성한 내용으로 변경  
  
8. Tomcat URL 은 실제 톰캣의 URL 입력  
	http://localhost:8080  
  
9. 저장 후 Build Now  
	※ 톰캣이 실행중이여아함  

이전에 사용한 내용임
###################################################################################################################################################
###################################################################################################################################################
###################################################################################################################################################

Global Tool Configuration 설정하기

Maven 을 젠킨스에서 설치하였으면 상관이 없으나, 내가 직접 설치하여 구성하였을 경우 젠킨스에서 사용할 수 있도록 설정을 해줘야 함  
  
1. 젠킨스 관리에 들어간다  
2. Global Tool Configuration 를 클릭한다  
3. Mavner 항목이 보이면 Add Maven 을 클릭한다.  
4. name 에는 내가 사용할 메이븐의 이름을 지지정한다 (ex. mvn3.8.3)  
5. MAVEN_HOME 에는 메이븐의 홈디렉토리를 설정해준다 (ex. /maven)  
	bin까지 하는거 아님, 걍 maven의 홈만해주면됨  
  
6. install automatically 는 체크하지 않는다.  
※ 젠킨스에서 설치를 한다고 하면 설정하면된다. 하지만 지금은 이미 설치되어 있어서 체크하지 않았음 체크하게되면 또 메이븐설치함;;  

Job 생성

젠킨스 폴더에 들어가서 new Item을 클릭 한 후 Freestyle project 로 생성 (test002)  

작성

새로생성한 (test002) 에 아래의 내용들을 삽입  
  
- 소스코드 관리 항목  
	git url : 사용할 깃의 URL  
		ex) https://github.com/kkimsungchul/stock.git  
	Credentials :  
		사용할 깃 계정  
		이부분은 젠킨스 설정에서 등록해줘야 표시가 됨  
	Branches to build : */dev  
		브런치 명을 입력  
  
	Repository browser : 자동  
  
- Build 항목  
	invoke top-level Maven targers 선택  
  
	maven Version : mvn3.8.3  
		해당 항목은 젠킨스에 Global Tool Configuration 설정에서 추가해야 보임  
  
	Goals : clean install  
		이부분에는 어떠한 작업을 할지 목표를 적는다  
  
	우측하단의 고급.. 버튼을 클릭  
  
	POM : pom.xml  
		사용할 pom.xml 파일의 위치를지정한다. 절대경로를 입력하지 않으면 프로젝트의 루트경로부터 시작함  
		비워두면 해당프로젝트의 pom.xml 을 사용함  
		굳이 입력안해도됨  
  
	Properties :  
		설정값들 넣는곳인데 딱히 넣을게 없음  
  
	JVM OPtions :  
		JVM 옵션인데 이것도 넣을거 없음  
  
	Settings file : Settings file in filesystem  
		settings.xml 파일을 사용할지를 묻는거, 기본적인 메이븐의 settings.xml 파일을 사용할거라면 default 를 아니라면 setting file in filesystem을 선택  
		아래와 같이 3개의 옵션이 있음  
			Use default maven settings  
			Provided settings.xml  
			Settings file in filesystem  
  
		File Path : settings.xml  
			직접 작성한 settings.xml 파일을 사용하려면 넣어준다.  
			경로는 프로젝트의 경로에서 시작하므로 settings.xml 만 널어주면 해당 프로젝트의 settings.xml 파일을 참고함  
  
	Global Settings file : Use default maven global settings  
		별다른 설정없이 사용할것이므로 아래와같이하였음  
		아래와 같이 3개의 옵션이 있음,  
		Use default maven global settings  
		Global settings file on filesystem  
		provided global settings.xml  

실행

위와 같이 작성하고나서 실행을 하면 프로젝트를 받아서 빌드까지 완료된다.  

배포

배포는 "Deploy to container" 플러그인을 설치해야 하는데 설치가 안되잇어서 진행하지 않음  

오류발생

Global Tool Configuration 설정을 안해줘서 발생했었음  
- 메이븐 오류  
https://roadrunner.tistory.com/627  
https://midas123.tistory.com/230  
====================================================================================================  
FATAL: command execution failed  
  
java.io.IOException: error=2, No such file or directory  
  
	   at java.lang.UNIXProcess.forkAndExec(Native Method)  
  
	   at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)  
  
	   at java.lang.ProcessImpl.start(ProcessImpl.java:134)  
  
	   at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)  
  
Caused: java.io.IOException: Cannot run program "mvn" (in directory  
====================================================================================================