2016-08-05 2 views
0

이번에는 Jenkins에게 질문을합니다. 몇 가지 응용 프로그램 서버가 있으며 각 응용 프로그램 서버에는 여러 개의 tomcats가 있습니다. 내가 원하는 것은 명령 선택자입니다. 예를 들면 : 나는 APP01, APP02, APP03을 가지고있다. 각 앱 서버에는 tomcat01, tomcat02, tomcat03 등 몇 개의 tomcat이 있습니다. 기존 응용 프로그램의 백업, 로그 백업, 정리, 올바른 디렉토리에 .war 파일을 저장하고 Tomcat을 시작하는 특수 스크립트를 실행할 때 배포합니다. 이 명령은 (.war 파일의 날짜를 확인), -stop, -start, -kill (뭔가가 잘못되면) 나는 또한 -warage이Jenkins - SSH 명령 실행 프로그램 선택기

app-new-execute deploy 

입니다. 사용자는 나에게 배포를 요청하거나 자체 로그인하여 배포를 수행해야합니다. 그들에게는 (sudoers 파일을 통해) 할 수있는 권한이 있지만 그보다 더한 것은 없습니다. 그러나 때로는 상황이 더러워집니다. Jenkins에서 여러 빌드 작업이 있습니다. 이제 ... 선택기를 사용할 수 있습니까? 예를 들어 사용자가 서버를 선택할 수있는 드롭 다운 목록 2 개 (예 : APP03)와 tomcat (TOMCAT06)을 선택할 수 있습니까? 질문 1 :이 목록은 동적 (txt 파일)가 될 수 있습니다 젠킨스 (선택 기준) 나에게

ssh APP03 sudo su - TOMCAT06 -c 'app-new-execute "deploy"' 

QUESTION2을 명령을 만들 수 있다는 것이 가능하다. 그 이유는 - 내가 제거/이동/삭제를 정기적으로 tomcats. 같은 이름의 도매 있습니다 (바람둥이 01,02,07,08). 내가 뭘 할 것이라고 각 서버에 $ (hostname) .txt라는 TXT 파일을 만드는 간단한 스크립트 (cron, 매일)에서 바람둥이 숫자를 얻을 수 있습니다. 다음과 같은 것 : echo $(hostname) > $(hostname).txtll /applications/new/tomcat/ | egrep ^d | grep tomcat | awk '{print $3}과 같은 간단한 스크립트를 사용하는 tomcat 번호를 출력합니다. 저에게 tomcat01, tomcat03, tomcat07을 줄 것입니다 .... 젠킨스가 서버 당 tomcat 목록을 그 .txt 파일로 채우는 것이 가능합니까? 그런 것이 아니라면 더 좋은 방법이 될 것입니다. 나는 젠킨스 (Jenkins)의 주인이 아니다. 나는 다중 빌드 작업 (SVN + ANT)을 설정했다. 어떤 제안이라도 환영합니다. 감사합니다

진행 : 연장 선택 매개 변수를 가져올 수있었습니다. 매력으로 작동합니다. 나는 서버뿐만 아니라 바람둥이를 얻는다. 그것은 (설명대로) 쉽습니다. 내가 가진 것은 SSH 집행자입니다. 서버를 선택하고 바람둥이 번호를 입력하고 원격 SSH를 수행 할 수 있습니다. SSH 키 인증을 받았으며 서버에 성공적으로 로그인 할 수 있습니다. Jenkins는 서버에 쉽게 연결할 수 있습니다. 그러나 나는 원격 SSH를 실행할 때 SSH 문제가있다 - 젠킨스는 SSH 세션을 "완료"할 수 없다. 그것은 뭔가 기다리고있는 회전 로고와 함께 붙어 있습니다. 내 매개 변수는 $ {server} (목록에서 선택) 및 $ {tomcat} (유형 톰캣 번호)입니다.

ssh -t -t [email protected]${server} <<EOF 
sudo su - ${tomcat} -c './deployer_script.sh "deploy"' 
echo "You are deploying app on ${server} to ${tomcat}" 
EOF 

출구 여기에서 내가 뭘 잘못하고 있니? 명령 줄에서 (명령 줄에서) 명령을 수행 할 수 있습니다. 서버에서 SSH를 통해 응용 프로그램 서버 상자에 기록되지만 명령을 수행 할 수 있습니다.

sudo su - ${tomcat} -c './deployer_script.sh "deploy"' 

내가 뭘 놓치고 있니?

내가 < < 'EOF'대신 < < EOF를 할 수 없어 - 젠킨스는 $ {바람둥이} 변수를 이해하지 않습니다. $ {tomcat} 직접 서버에 로그인 할 수 없습니다. 모든 바람둥이 (보안 문제)에 대해 해당 스크립트를 실행할 수있는 권한이있는 배포자 계정이 있습니다. 도움을 주셔서 감사합니다.

진행 업데이트 2. 쉘을 통해 SSH 세션을 종료 할 수 없습니다. "exit"명령이 작동하지 않습니다. 거기에 오류가있을 것입니다. EOF가 끝나지 않은 후에 내가 무엇을 놓치고 있습니까?

+0

이 해결

ssh ${TOMCAT} "sh /path/to/${APP}" :'ssh를 -t -t app_deployer @ $ {서버} << EOF sudo su - $ {tomcat} -c './deployer_script.sh "deploy"' exit 0 EOF' –

답변

1

예 변수를 사용하여 "선택 매개 변수"를 사용하고 APP과 같은 이름을 부여한 다음 TOMCAT (tom01, tom02 ...)에 대해 선택 사항 (app01, app02, app03)을 추가 할 수 있습니다.)

이제 젠킨스는 예를 들어 쉘에서 $ {앱}와 $ {TOMCAT}을 사용할 수 있습니다 :

+0

아직 그 플러그인에 대해 들었습니다. :). 보세요. 보이는 유망 :). 나는 그것이가는 길이다라고 생각한다. –

+0

완벽하게 작동했습니다. 나는 변경과 추가 수정 (플러그인)을해야한다. –