2012-11-16 2 views
10

에서 Jenkins의 매개 변수화 된 게시 제어 방법 Jenkins "Publish over Ssh" 플러그인에서 레이블 (고급 옵션) (매개 변수화 된 게시 기능)을 어떻게 사용합니까? 레이블 필드는 어떻게 사용합니까? 레이블 필드에 무엇을 넣어야합니까? Machine Name을 가질 변수 이름 (build param에서 읽을 수있는 변수 이름)을 넣어야합니까? 나는 같은 것을 시도했다 내가 한 일은 다음과 같다 :SSH를 통한 게시 플러그인의 레이블 필드

컴퓨터 이름은 QA_1이고 젠킨스는 $ MC_NAME이 (가) XXX을 가리키는 한 변수를 가졌다. LABEL 입력란에 $ MC_NAME을 (를) 입력했습니다. 놀랍게도 Jenkins는 $ MC_NAME 변수의 값에 관계없이 QA_1 컴퓨터에 게시했습니다.

은 어떤 하나 젠킨스에 플러그인 "SSH을 통해 게시"에 제출 LABEL을 사용하여/실행되는 스크립트를 게시 할 수있는 기계 제어 나에게 정확한 단계를 알려주십시오 수

답변

7

당신은 "매개 변수가 출판"을 활성화하고 지정해야 빌드 설정에서 "빌드 후 조치 추가"버튼 앞에있는 "고급 ..."버튼을 클릭하여 매개 변수 이름을 빌드하십시오 (예 : 빌드 후 작업 섹션 사용).

예. "빌드 매개 변수 이름"= SSH_SERVER. 그러면 ssh 서버 레이블과 일치하는 regexp와 함께 빌드 매개 변수가 있어야합니다.

SSH_SERVER 빌드 매개 변수를 XXX로 설정해야합니다. 그런 다음 SSH 게시는 QA_1 서버에서만 발생해야합니다.

+0

아, 그냥 아래 전송 설정 버튼을 추가 존재하는 고급 버튼, 덕분에이 또한 이상 게시에서 FTP (그리고 아마도 다른 플러그인을 통해 게시 적용 도움 – RamNat

+0

에 대한 많은 친구를 놓친 ... 가족 "). 내 FTP를 통해 게시하여 내 레이블을 무시하는 이유를 알아 내는데 시간이 좀 걸렸습니다. 문서 : https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over#PublishOver-Parametername – AlexMA

+0

누구든지 설명 할 수 있습니까? "Label"필드의 요점은 무엇입니까? –

10
Answer on your question and how I configured my process: 

**1. Configuring Jenkins** 
1.1 Install Publish over Ssh plugin 
1.2 Configure Jenkins => System Configuration 
1.2.1 Publish over SSH section 
1.2.1.1 Key => -----BEGIN RSA PRIVATE KEY----- ... here is your key ... -----END RSA PRIVATE KEY----- 
1.2.1.2 SSH Servers => 
    * Name => Server_1 (It is only name of configuration) 
    * Hostname => example_server_1.com (url of your server) 
    * Username => ec2-user (for amazon) 
    (Click "Add Server" button) 
    * Name => Server_2 (It is only name of configuration) 
    * Hostname => example_server_2.com (url of your server) 
    * Username => ec2-user (for amazon) 

**2. Job Configuration** 
Open Job => Configure => 
1. Add String Parameter "Name=Server" 
2.Check "Send files or execute commands over SSH" => SSH Server section 
2.1 Name=server_1; 
Exec_command=cd temp_directory(for example); 
Click "Advanced" => Label=server_1; 
2.2 Click "Add Server"; 
Name=server_2; 
Exec_command=cd temp_directory(for example); 
Click "Advanced" => Label=server_2; 
2.3 In front of button "Add Server" click "Advanced"; Check "Parameterized publishing" => Parameter_name=Server 

**3. Job running** 

Run job and set for example server_2. You will see in log: 

    SSH: Skipping [server_1] - Label server_1 does not match expression server_2 
    SSH: Publishing to [server_2] - Label server_2 matches expression server_2 
    SSH: Connecting from host [ip-10-0-0-37] 
    SSH: Connecting with configuration [server_2] ... 

It is seems that if you set server_2 job will try to compare parameter "Server" (you defined it before job starts) and labels in jobs. If label and parameter equals than exec commands in configuration. 

Hope it was helpfull. Cause I spent on it 5 hours. 
+0

감사합니다. 친애하는 친구. 당신이 너무 아름답게 설명해주었습니다. 매력처럼 작동했습니다. –

+0

@JamesSelvakumar 당신은 환영합니다) – IgorN

관련 문제