최근에 지도자들은 상하이 지역 프로젝트에 Jenkins를 사용하여 자동 배치를 달성하여 프로젝트를 운영 및 유지 보수 학생들에게 양도하여 개발 작업 부하를 줄일 수 있도록 요청했습니다. 이 구덩이를 등반하는 과정을 기록하십시오.
1. 서문
Jenkins는 연속 반복 작업을 모니터링하기 위해 Java를 기반으로 개발 된 지속적인 통합 도구이며 기능에는 다음이 포함됩니다.
1. 연속 소프트웨어 버전 릴리스/테스트 프로젝트.
2. 외부 통화로 실행 된 작업을 모니터링하십시오.
백과 사전에서 위의 내용을 다운로드했습니다. 솔직히 말해서, 나는 그것을 이해하지 못했습니다. 이게 뭐야? 실제로, 현재의 이해와 응용 프로그램을 기반으로 가장 일반적인 것은 배포입니다. 다른 기능을 연구해야합니다 (_) 마스터는 현재 상하이의 알려지지 않은 국유 기업에서 일하고 있습니다. 현재 프로젝트 릴리스 프로세스는 다음과 같습니다.
1. 로컬 또는 패키지 서버는 Maven을 사용하여 전쟁 패키지를 만듭니다.
2. 프로젝트 서버에 원격 또는 SSH에 연결하십시오
3. Tomcat 중지, 이전 패키지 및 캐시를 삭제 한 다음 새로 인쇄 된 패키지를
4. Tomcat을 다시 시작하십시오. 완료하기위한 겉보기에는 간단한 단계이지만 실제로 많은 개발 시간이 걸립니다.
그런 다음 Jenkins를 사용하십시오.
1. 지금 빌드하고 완료하려면 클릭하십시오. 무엇? 버튼을 클릭하면 완료됩니다. 예, 버튼입니다. 실제로 버튼을 클릭 한 후 Jenkins는 위의 프로세스의 배경을 실행하는 데 도움이되었습니다. 이번에는 백그라운드에서 실행하는 방법을 소개 할 것입니다.
2. 설치 및 건축
이 소개는 Windows를 기반으로하며 개발 컴퓨터 또는 Windows 서버 서버에 설치할 수 있습니다.
1. Jenkins를 다운로드하십시오
Jenkins는 여러 설치 방법을 제공합니다
1.1jenkins.msi 설치는 일반적으로 소프트웨어, 점이 설치할 때와 같습니다. 다운로드 주소 : https://jenkins.io/download/
1.2Jenkins.war 패키지는 전쟁 패키지이기 때문에 모든 사람들이 그것을 시작하는 방법을 알고 Tomcat에 던져 넣는 것만은 말할 것도 없습니다. 다운로드 주소 : http://updates.jenkins-ci.org/download/war/
2. Jenkins를 시작하십시오
개인적으로 1.1의 설치 방법을 권장합니다. 1.2를 사용할 때 종종 메모리 오버 플로우 문제가 발생합니다. 물론 메모리 오버 플로우를 조정할 수 있지만 추가 작업량이 있습니다.
1.1 설치 방법을 사용하여 설치가 완료된 후 Windows 서비스에서 Jenkins 서비스가 표시됩니다. 아래 그림과 같이 서비스를 직접 시작하고 닫고 다시 시작하십시오.
1.2를 사용하여 전쟁 패키지를 다운로드하는 경우 실제로 시작하는 두 가지 방법이 있습니다.
첫 번째 유형은 Tomcat 컨테이너에 배치됩니다.
두 번째 유형은 CMD를 설치 디렉토리에 입력하는 것입니다. Java -jar Jenkins.war
3. Jenkins를 설치하십시오
설치 방법 1.1 및 1.2는 동일합니다
Jenkins Default Port 8080은 Method Baidu를 수정할 수 있습니다.
http : // localhost : 8080/을 입력하십시오. 빨간색 글꼴 경로에는 비밀번호가 있고 암호를 채우고 다음 단계로 표시합니다.
플러그인을 선택할 때는 많은 문제를 피하기 위해 공식 권장 플러그인을 선택하는 것이 좋습니다.
설치를 기다리고 ...
설치 후 아래 그림이 표시됩니다. 사용자 이름과 암호는 로그인하는 데 사용됩니다. 전체 이름은 표시하는 데 사용됩니다. 다음 단계로 계속하십시오.
Maven 프로젝트를 배포하고 싶기 때문에 Jenkins의 기본 플러그인에는 Maven이 없으므로 먼저 설치해야합니다.
아래 플러그인을 클릭하여 직접 설치하려면 Maven Integration Plugins
Hot Deployment 플러그인 배포를 컨테이너 플러그인에 설치하십시오
4. Jenkins를 구성하십시오
Maven 설정 파일, JDK 및 Maven 주소와 일치해야합니다. 설정 파일이 일치해야합니다. 기본값으로 사용하지 마십시오. 이것은 일치하지 않기 때문에 오랫동안 어려움을 겪고 있습니다.
마지막으로, 그냥 신청하고 저장하십시오. 응용 프로그램을 저장하는 것을 잊지 말고 헛된 것입니다.
다음으로 새 프로젝트를 만들고 먼저 프로젝트 이름을 입력하고 Maven Project, OK를 선택합니다.
소스 코드 관리 선택, 우리는 오픈 소스가 아닌 엔터프라이즈 프로젝트이므로 SVN을 사용하고 SVN을 구성하려면 Subversion을 선택하십시오.
URL은 SVN 주소이며 자격 증명은 계정 비밀번호입니다.
그런 다음 사전 단계로 이동하십시오. 포장 전에 작업이 필요한 작업입니다. 예를 들어, 현재 프로젝트는 log4j.xml 파일 등을 복사해야합니다. 환경에 따라 Windows 또는 Shell 스크립트를 작성할 수 있습니다.
작동이 없으면 일치 할 필요가 없습니다.
참조를 위해 내 스크립트를 게시하십시오. XXX를 사용하여 관련 부품을 교체합니다.
@echo offrem set variable :: app.xxx app.xxx 코드 로컬 및 디렉토리 세트 app.xxx = "d : /svn/svn.173.xxx/app.xxx/":: home.xml 변수 시작 :: home_omm_log4j_goals_path로 log4j.xmm set의 경로. home_omm_log4j_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/home.ommm/src/main/resources":: home_omm_log4j home.ommm set의 log4j.xml 테스트 환경의 경로 home_omm_log4j = "d : /svn/svn.173.xxx/app.xxx/config/home.ommm/sh_test/resources":: home.ommm 's log4j.xml variable end :: home.weixin's variable start :: home_weixin_log4j_go _go 4j.xml at the 경로의 경로. home.weixin의 log4j.xml home_weixin_log4j_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/home.weixin/src/main/resources":: home_weixin_log4j log4j.xml test of home.wixin set의 경로. home_weixin_log4j = "d : /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/resources":: home_weixin_config.js_goals_path config.js path home_weixin_config.js_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/home.weixin/src/main/webapp/module/js":: home_weixin_config.js home.omms 's home_weixin_config.js.ms set home_weixin_config.js = "d : /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/webapp/module/js":: home.weixin variable ind :: service variable start :: service_log4j_goals_path log4j.doct to the service set the the service set service_log4j_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/service/src/main/resources":: service_log4j 로그 4J.xml 테스트 환경이 설정됩니다. service_log4j = "d : /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources":: service_application_resources_all_goals_path application-resources-all.xml의 경로가 설정되었습니다 service_application_resources_all_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/service/src/main/resources/config/spring":: service_application_resources_all application-resoural.xml Test Test Path Set service_application_resources_all = "d : /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources/config/spring":: service variable end :: service.refresh variable start :: service_refresh_log4j_goals_goals path the Stores. service_refresh_log4j_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources":: service_refresh_log4j Service의 경로 세트 service_refresh_log4j = "d : /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources":: service_refresh_application_resources_all_goals_path application-resources-all.xml이 설정하는 경로가 설정됩니다 service_refresh_application_resources_all_goals_path = "d : /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/resources/config/spring":: service_refresh_application_resources_all application-allsources-resources-resources-resources-resources-allsources-allsources-allsources-allsources-allsources service_refresh_application_resources_all = "d : /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources/config/spring":: service.refresh 변수 end :: home.mommm의 log4j.xml 파일이 존재하는지 여부. %home_omm_log4j_goals_path %/log4j.xml (del %home_omm_log4j_goals_path %/log4j.xml) cd %home_omm_log4j_goals_path %copy home home_log4j %/log4j.xml log4j.xml :: log4j.xml의 home.xml 파일 %home_weixin_log4j_goals_path %/log4j.xml (del %home_weixin_log4j_goals_path %/log4j.xml) cd %home_weixin_log4j_goals_path %/log4j.xml) cd %home_weixin_log4j_goals_path %카피 %home_weixin_log4j %/log4j.xml log4j.xml :: home의 config.js 파일이 존재하는지 여부를 판단합니다. %home_weixin_config.js_goals_path %copy %home_weixin_config.js %/config.js config.js :: 판사 config.xml 서비스 파일이 존재하는 경우에 존재하는지 여부를 판단합니다. %service_log4j_goals_path %copy %service_log4j %/log4j.xml log4j.xml :: 판사는 service의 application-resources-all.xml 파일이 존재하는 경우에 존재하는지 여부 _Application_poll_goals_path_path %/application-resources-all.xml (del) %service_application_resources_all_goals_path%/application-resources-all.xml) cd%service_application_resources_all_goals_path%copy_application_resources_all%/application-resources-resources-resources-resources-resources-resources-resources-resources-resources-resources-resources-resources-sources-sources-alppless.xml Exists.rephresh. %service_refresh_log4j_goals_path%/log4j.xml (del%service_refresh_log4j_goals_path%/log4j.xml) cd%service_refresh_log4j_goals_path%copy_refresh_log4j%/log4j.xml log4j.xml :: service.refresh는 존재하는 경우 extence_refresh_application_resources_all_goals_path %/application-resources-all.xml (del %service_refresh_application_all_goals_path %/application-resources-all.xml) cd %service_refresh_application_resources_all_goals_path_path %/application-resources-all.xml) cd %service_refresh_application_resources_all_goals_path %Copy_Respresh_Application_Resources_all %/application-resources-all.xml application-resources-xmlemlecit
POM 위치 및 MVN 명령을 지정하여 빌드가 컴파일되었습니다. 그건 그렇고, Jenkins 설치 디렉토리의 기본값과 일치하지 않는 고급 레벨에서 작업 공간을 구성 할 수도 있습니다.
건물 후에는 패키지가 완료된 후 작업을 수행 할 수 있습니다. 다음 이미지를 선택하십시오
이 건설 작업 후에는 Tomcat의 핫 배포를 사용합니다. 내 이전 기사를 참조 할 수 있습니다 : Tomcat의 핫 배포
전쟁/귀 : 전쟁 패키지의 주소
컨텍스트 : 배포 된 패키지 이름입니다
사용자 이름/비밀번호는 Hot Deployment Tomcat의 계정/비밀번호를 나타냅니다
URL : http://172.16.101.71:8180/와 같은 Tomcat 인터페이스
5. 건물을 시작하십시오
너무 많이 이야기 한 후 마침내 앞으로 올 때가되었습니다. 버튼의 작동이 마침내 도착했습니다. Jenkins의 홈페이지로 돌아갈 때 프로젝트를 볼 수 있습니다.
구축 후 왼쪽 하단의 빌드 실행 상태를 클릭하여 프로젝트가 건설 중인지 확인하십시오. 입력하려면 프로젝트 이름을 클릭하십시오
건설 과정에서 인쇄 된 로그 또는 오류 메시지를 확인하려면 콘솔을 선택하십시오.
3. 기존 문제
Jenkins 역할 문제는 출시되었으므로 생산 환경이 포함됩니다. 모든 사용자는 프로덕션 환경을 배포 할 수있는 권한을 가질 수 없습니다. 누군가가 실수로 클릭하면 결과는 ... 믿을 수 없습니다.
솔루션 : 역할 기반 인증 전략 플러그인을 설치하고 나머지 단계를 참조하십시오 : http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html. 나는 상세하지 않다.
Tomcat 핫 배치 문제, 메모리 상승 및 오버플로의 문제, 여러 번 배치 후 실행 중지 또는 오류를보고합니다. 온라인으로 핫 배포 자체의 문제를 확인하고 솔루션을 찾고 있습니다 ...
솔루션 : Tomcat 핫 배포 자체에 문제가 있으며 생산 환경은 일반적으로 핫 배포 방법을 채택하지 않습니다. 현재 테스트 환경에서 Windows Server 2008 시스템을 사용하고 있기 때문에 핫 배포 방법을 채택합니다. 문제는 여전히 존재합니다. 그러나 BAT 명령 인 Windows 배치 명령을 사용하여 해결할 수있는 게시물을 읽었지만 깊이 연구하지 않았습니다. 프로덕션 환경의 Linux 시스템에서는 현재 SSH 플러그인을 통해 게시를 사용하고 있습니다. 특정 단계는 아래 단계를 구성에 추가하는 것입니다.
1. 시스템 관리-시스템 설정에서 SSH를 통해 게시하고 다음을 입력하십시오.
2. 포스트 단계를 구성하십시오
여기서 우리는 위의 프로젝트를 계속할 것입니다. 이 구성은 위의 플러그인이 설치된 후에 만 표시됩니다!
SetSource 파일 전송 : 로컬 전쟁 패키지와 업로드 경로를 표시하면 작업 영역으로 이동하여이를 볼 수 있습니다.
Prefix 제거 : 업로드 할 때 제거 할 폴더를 의미합니다. 즉, 전쟁 패키지 만 업로드됩니다.
원격 드릴 : 실행 중 경로를 의미하며 여기에 전쟁 패키지를 업로드하는 것과 같습니다.
exec commad : 실행되는 명령
그림과 같이, 전쟁 패키지는 홈/관리 폴더에 배치 된 다음 내가 쓴 쉘 명령을 실행합니다. 주로 Tomcat을 중지하고, 원래 전쟁 패키지를 백업하고, WebApp 아래에서 원래 전쟁 패키지를 삭제하고, 집/관리자 아래에서 새로운 전쟁 패키지를 복사하고, Tomcat을 시작한 다음이 완료됩니다. 이는 열 배포 메모리 오버플로로 인한 서버 충돌 문제를 피합니다.
스크립트 참조 :
#!/bin/sh #defined tomcat_home = "/usr/java/tomcat/apache-tomcat-7.0.67/"id =`ps -ef | grep java | grep tomcat | awk '{print $ 2}'`echo $ id echo "kill tomcat"kill -9 $ id echo "Remover War 파일"cd "$ tomcat_home"/webapps rm -rf javaweb-0.0.1-snapshot rm -rf javaweb-0.0.1-shop. /home/lin cp javaweb-0.0.1-snapshot.war "$ tomcat_home"/webapps cd "$ tomcat_home"/bin echo "start tomcat"./startup.sh배포 플러그인 문제인 배포 위에서 사용 된 컨테이너 플러그인 플러그인 배포는 핫 배치를 구현하는 데 사용되지만 하나의 프로젝트가 하나의 전쟁 패키지 만 배포 할 수있는 배포 플러그인 제한 사항입니다. 내 프로젝트는 프로젝트의 앞면과 뒷부분에서 분리 된 두 전쟁이 두 번 구축 할 수 없다는 것입니다.
해결책 : 핫 배치를 사용하지 마십시오. 테스트 환경이 일시적으로 사용되는 경우 현재 두 개의 새로운 프로젝트를 구축하고 있으며 한 번에 하나의 전쟁 패키지 만 컴파일합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.