2012-11-16 29 views
10

Trong plugin Jenkins "Publish over Ssh" làm cách nào để sử dụng nhãn (tùy chọn nâng cao) aka tính năng xuất bản tham số. Làm cách nào để sử dụng trường nhãn. Tôi phải đặt gì vào trường Nhãn. Tôi có cần phải đặt một tên biến (một trong những tôi có thể đọc từ param xây dựng) mà sẽ có tên máy. Tôi đã thử cùng một số Đây là những gì tôi đã làm:Cách kiểm soát xuất bản Parametrized trong Jenkins bằng cách sử dụng Xuất bản trên trường nhãn của plugin plugin

Tôi có tên máy là QA_1 và tôi có một biến jenkins biến $ MC_NAME được trỏ tới XXX. Tôi đã nhập $ MC_NAME vào trường LABEL. nhưng với sự ngạc nhiên của tôi, Jenkins đã xuất bản lên máy QA_1 bất kể giá trị của biến $ MC_NAME.

thể một số một Xin vui lòng cho tôi biết các bước chính xác để kiểm soát máy tính để xuất bản/script chạy bằng cách sử dụng LABEL nộp trong "Xuất bản thông qua SSH" plugin trong Jenkins

Trả lời

7

Bạn nên cho phép "xuất bản tham số" và chỉ định xây dựng tên thông số bằng cách nhấp vào nút "Nâng cao ..." nằm trước nút "Thêm hành động sau xây dựng" trong cấu hình xây dựng của bạn (ví dụ: tôi sử dụng phần hành động sau xây dựng).

Ví dụ: "xây dựng tên thông số" = SSH_SERVER. Sau đó, cần có tham số xây dựng SSH_SERVER với regexp để khớp với nhãn máy chủ ssh.

Trong trường hợp của bạn, tham số xây dựng SSH_SERVER phải được đặt thành XXX, sau đó xuất bản SSH chỉ xảy ra cho máy chủ QA_1.

+0

Ah, Chỉ cần bỏ nút Advanced đó là hiện nay bên dưới Thêm nút Set Chuyển, Cảm ơn một anh chàng rất nhiều cho sự giúp đỡ – RamNat

+0

này cũng áp dụng cho xuất bản qua FTP (và có lẽ bất kỳ plugin khác trong công bố trên ... Tôi mất một thời gian để tìm ra lý do tại sao xuất bản qua FTP đã bỏ qua các nhãn của tôi Tài liệu: https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over#PublishOver-Parametername – AlexMA

+0

Bất cứ ai cũng có thể giải thích điểm của trường "Nhãn" là gì? –

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

Cảm ơn một người bạn thân mến. Bạn đã giải thích nó rất đẹp. Làm việc như một sự quyến rũ. –

+0

@JamesSelvakumar Bạn được chào đón) – IgorN

Các vấn đề liên quan