使用 Groovy 配置 Jenkins EC2-Plugin

jsm*_*key 4 groovy amazon-ec2 jenkins

我正在尝试通过 Groovy 配置 Jenkins EC2-Plugin。插件代码:https : //github.com/jenkinsci/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)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

这些是错误信息

Error: Could not find matching constructor for: hudson.plugins.ec2.SlaveTemplate
Run Code Online (Sandbox Code Playgroud)

或者

Error: Could not find matching constructor for: hudson.plugins.ec2.AmazonEC2Cloud
Run Code Online (Sandbox Code Playgroud)

小智 5

您的调用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 脚本的顶部并替换't2.micro'InstanceType.fromValue('t2.micro').

有关完整示例,请参阅https://gist.github.com/vrivellino/97954495938e38421ba4504049fd44ea