젠킨스 파이프 라인 파일
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
currentBuild.description = " $ {BRANCH} _ $ {ENV} " 파이프 라인 { 에이전트 { 노드 { 레이블 ' 마스터 ' customWorkspace " 작업 공간 / $ {JOB_NAME} _ $ {ENV} " } } 후 { 성공 { 쉬 '' ' 컬 -H " 콘텐츠 형식 : 응용 프로그램 / JSON " -X POST는 -d ' { "지점": " ' $ {지점을} ' ", "프로젝트 이름을": " '$ {PROJECT_NAME} ' ","test_env ":" 'ENV {} $ ' ","유물 ":" ' ``$ {ID} ' '} ' HTTP : // hbtc.houbank.net:8000/api/release/artifactInfo/ ' '' } } 옵션 { // 지주의 최대 개수의 건설 buildDiscarder (logRotator (numToKeepStr : ' 10 ' )) } 매개 변수 { 선택 (이름 : ' ENV ' , 선택 : ' MIT \ NSIT \ nuat nprod \ ' , 설명 : ' ENV ' ) 문자열 (이름 :' 현재 상태' ,의 DefaultValue : ' 변환 후 ' , 설명 : ' 유통 센터를 이동 환경 변수 ' ) 문자열 (이름 : ' 지점 ' , DEFAULTVALUE : ' $ {gitlabSourceBranch} ' : 설명 ' 기본 자식 분기를 트리거 발표 선택 지점, ' ) 문자열 (이름 : ' 힘내 ' , DEFAULTVALUE : ' https://code.houbank.net/project/kuaiyipai_server.git ' , 설명 : ' 망할 놈의 주소 ') } 환경 { LOB= " Telesale " // 비즈니스 라인의 접미사 = " JAR " TARGET_FILE = " kuaiyipai-APP-API / 대상 / kuaiyipai-APP-API. $ 후위 {} " PACKAGE_PATH_old = " / var에 / jenkins_home / 패키지 / $는 LOB / $ { }는 PROJECT_NAME / ENV $ {} " // 변환 패키지 디렉토리 전에 프로젝트 PACKAGE_PATH_new = " / var에 / jenkins_home / 패키지 / $는 LOB / $ {}는 PROJECT_NAME / 생산성을 " // 변환 패키지 디렉토리 프로젝트 후 = ID " 힘내 구문 분석 - 레브 $ params.BRANCH} { " PROJECT_NAME = "$ {JOB_BASE_NAME}" // 프로젝트 이름 GIT_ADDRESS = " $ {} params.GIT " // 망할 놈의 주소 SAVE_FILE_NUM = . 3 //은 역사적 품질의 제품, 실제 채 두 날에 보유 } 단계가 { 스테이지 ( ' 코드를 탐지 ' ) { 단계 { 힘내 ( URL : " $ {} GIT_ADDRESS " , credentialsId : ' 23477e7c-edd5-48a1-a0e4-acfb57c55687 ' , 지점 : " $ {params.BRANCH} " ) } } 단계 ( ' 참조 컴파일러 패키지 ' {) 때 { 되지 않음 환경 {이름 : ' 상태 (STATUS) ' : 값 ' 변환 후 ' } } 에이전트 { 도커 { 이미지 ' 메이븐 : 3.5.3 ' 인수 ' -v / 루트 / .m2 : /root/.m2 ' } } 단계 { SH ' '' CD $ {} WORKSPACE 만약 [! - D $ {} PACKAGE_PATH_old] 다음 MKDIR ) {- P는 $ {PACKAGE_PATH_old} Fi를 하면 [! -f $ {PACKAGE_PATH_old} / $ {PROJECT_NAME} _` $ {ID}`$ {후위}]. 다음 MVN 깨끗한 패키지 -U -Dmaven.test.skip = 사실 -Dmaven.compile.fork = 사실 - P의 $ {ENV} 다른 에코 " 파일이 " 파이 '' ' } } 단계 ( ' 不带参编译打包' {환경 명칭 : " STATUS " , 값 : ' 改造后'} 에이전트 { 고정 표시기 { 이미지 ' 받는다는 : 3.5.3 ' 인수 ' -v /root/.m2:/root/.m2 ' } } 단계 { 쉬 '' ' CD를 $ {WORKSPACE} 만약 [! - D $ {} PACKAGE_PATH_new] 다음 MKDIR - P는 $ {} PACKAGE_PATH_new 인터넷 경우 [! -f $ {PACKAGE_PATH_new} / $ {PROJECT_NAME} _` $ {ID}`$ {후위}]. 다음 MVN 깨끗한 패키지-Dmaven.test.skip = -U은 참으로 -Dmaven.compile.fork = true로 다른 에코 " 파일이 존재 " 인터넷 '' ' } } 단계 ( ' 변환 유통 창고 전 ' ) { { : 없음 환경 {이름 ' 상태를 ' 가치 : " 변형 후 " } } 단계 { SH '' IF 상기 PROJECT_NAME 당시 $ {} {_` $ '$ {ID}.} 후위][! -f $ {PACKAGE_PATH_old} / LS -t $ {PACKAGE_PATH_old} | 꼬리 -n + $ {SAVE_FILE_NUM} | xargs는 RM은 - F CP -rf $ {WORKSPACE} / $ {TARGET_FILE} $ {PACKAGE_PATH_old} / . $ {PROJECT_NAME} _` $ {ID}`$ {후위} 다른 에코 " 파일 종료 " 파이를 '' ' } } 단계 ( ' 改造后分发仓库' ) { 경우 {환경 이름 : ' 상태 ' , 값 : ' 改造后' } 단계 { 쉬 '' ' 만약 [! -f $ {PACKAGE_PATH_new} / $ {PROJECT_NAME} _` $ {ID}`$ {후위}]. 다음 LS -t $ {PACKAGE_PATH_new} | 꼬리 -n + $ {SAVE_FILE_NUM} | xargs는 RM은 - F CP -rf $ {WORKSPACE} / $ {TARGET_FILE} $ {PACKAGE_PATH_new} / . $ {PROJECT_NAME} _` $ {ID}`$ {후위} 다른 에코 " 파일 종료 " 파이를 '' ' } } 단계 ( ' 改造前环境发布' ) { 때 { allOf { 되지 {환경 이름 : ' ENV ' , 값 :' 자극 ' } 하지 {환경 이름 : ' 상태 ' , 값 : ' 改造后' } } } 단계 { 쉬 '' ' 는 / usr / 빈 / ansible - 각본 -i / 응용 프로그램 / ansible / 호스트 / 응용 프로그램 / ansible / 배포 .yml -e " ENV = $ {ENV} 로브 = $ {LOB} 그룹 이름 = $ {PROJECT_NAME} ID = '$ {ID}` " -e " @ / 응용 프로그램 / ansible / group_vars / $ {PROJECT_NAME} ' '' ' } } 스테이지 ( ' 발표 환경의 변화' ) { 경우 { allOf { 환경 이름 : ' 상태 ' , 값 : ' 改造后' 하지 {환경 이름 : ' ENV ' , 값 : ' 자극 ' } } } 단계 { 쉬 ' '' ansible - 각본 -i / 응용 프로그램 / ansible / 호스트 -e /app/ansible/deploy.yml " ENV = $ {ENV} 로브 = $ {LOB} 그룹 이름 = $ {PROJECT_NAME} : ID = '$ {ID}`remote_path = HTTP //192.168.13.9:81/jenkins/${LOB}/${PROJECT_NAME}/prod "-e"@ / 응용 프로그램 / ansible / group_vars / $ {PROJECT_NAME} ' ' '' } } } }