2016-09-20 65 views
0

我正在嘗試通過Groovy配置Jenkins EC2-Plugin。 插件代碼:https://github.com/jenkinsci/ec2-plugin使用Groovy配置Jenkins EC2-Plugin

我試圖建立雲使用一個名稱上手

import hudson.model.* 
import jenkins.model.* 
import hudson.plugins.ec2.* 
import com.amazonaws.services.ec2.model.* 

SlaveTemplate awsTemplate = new SlaveTemplate(
    'ami-1234567', 
    '', 
    '', 
    'sg-1234567', 
    't2.micro', 
    true, 
    'foo', 
    '', 
    'stuff', 
    'run code', 
    '/var/tmp', 
    'more code', 
    '4', 
    '', 
    '', 
    '', 
    false, 
    'subnet-1234567', 
    '', 
    '60', 
    false, 
    '', 
    'iam-profile', 
    false, 
    false, 
    '', 
    false, 
    '', 
    true, 
    false 
) 

def slaveTemplates = [awsTemplate] 

def ec2Cloud = new AmazonEC2Cloud(
    'foo', 
    true, 
    '', 
    'us-west-2', 
    '', 
    '10', 
    slaveTemplates 
) 

def cloudList = Jenkins.instance.clouds 
cloudList.add(ec2Cloud) 

任何想法?

這些都是錯誤信息

Error: Could not find matching constructor for: hudson.plugins.ec2.SlaveTemplate 

Error: Could not find matching constructor for: hudson.plugins.ec2.AmazonEC2Cloud 
+0

見我有最好的答案 – jsmickey

回答

3

您的來電SlaveTemplate不符合任何構造函數:https://github.com/jenkinsci/ec2-plugin/blob/master/src/main/java/hudson/plugins/ec2/SlaveTemplate.java

例如,第三個參數(spotConfig)正在查找SpotConfiguration對象。您目前在那裏定義了一個空字符串。 (您可以用null替換。)

另外,實例類型參數應該是InstanceType,而不是字符串。要糾正這種情況,您需要將import com.amazonaws.services.ec2.model.InstanceType添加到groovy腳本的頂部,並用InstanceType.fromValue('t2.micro')替換't2.micro'

對於一個完整的示例,請參閱https://gist.github.com/vrivellino/97954495938e38421ba4504049fd44ea

+0

謝謝你,不知道爲什麼花了這麼長時間才發現這一點。 在我開始玩這個之前的一個問題,將運行這將覆蓋那裏的配置? – timmyonline

+1

我不相信 - 我相信它會增加一個新的雲配置。 –

+0

我不想創建一個新的雲,只是在我現有的雲中工作。 你知道是否有可能在運行時用groovy腳本添加一個新模板?我試着做「cloud.templates.add(new_template)」,但在UnmodifiableCollection上得到一個UnsupportedOperationException。 我一直在挖掘插件的來源,它沒有看到並暴露出添加/刪除/更新模板的功能。 – timmyonline

0

對於初學者來說,唯一的構造可以爲此類具有以下特徵:

public AmazonEC2Cloud(
    String cloudName, 
    boolean useInstanceProfileForCredentials, 
    String credentialsId, 
    String region, 
    String privateKey, 
    String instanceCapStr, 
    List<? extends SlaveTemplate> templates 
) 
+0

下面主旨列表雲類問題。任何想法如何配置? – jsmickey

0

這是我修改了現有的雲配置,並增加了新的SlaveTemplate:

Jenkins.instance.clouds.each { 
    if (it.displayName == "SOME_NAME") { 
     SlaveTemplate slaveTemplate = new SlaveTemplate(...) 
     Field field = hudson.plugins.ec2.EC2Cloud.class.getDeclaredField("templates") 
     field.setAccessible(true); 
     List templates = (List) field.get(it) 
     templates.add(slaveTemplate) 
    } 
}