【问题标题】:Jenkins ECSCloud詹金斯 ECSCloud
【发布时间】:2019-06-03 02:38:12
【问题描述】:

我一直在按照以下答案将 ECS Clouds 添加到 Jenkins 以供奴隶使用

Configure amazon-ecs slave plugin using Groovy on Jenkins

插件已被修改,我发现了以下 JavaDocs

https://javadoc.jenkins.io/plugin/amazon-ecs/com/cloudbees/jenkins/plugins/amazonecs/ECSCloud.html

https://javadoc.jenkins.io/plugin/amazon-ecs/com/cloudbees/jenkins/plugins/amazonecs/ECSTaskTemplate.html

我已经能够修改 ECSTaskTemplate 以添加较新的变量,但我在 ECSCloud 上不断收到错误

import java.util.Arrays
import java.util.logging.Logger
Logger logger = Logger.getLogger("ecs-cluster")

logger.info("Loading Jenkins")
import jenkins.model.*
instance = Jenkins.getInstance()

import com.cloudbees.jenkins.plugins.amazonecs.ECSTaskTemplate.MountPointEntry
def mounts = Arrays.asList(
  new MountPointEntry(
    name="docker",
    sourcePath="/var/run/docker.sock",
    containerPath="/var/run/docker.sock",
    readOnly=false),
  new MountPointEntry(
    name="jenkins",
    sourcePath="/home/jenkins",
    containerPath="/home/jenkins",
    readOnly=false),
)

logger.info("Creating template")
import com.cloudbees.jenkins.plugins.amazonecs.ECSTaskTemplate
def ecsTemplate = new ECSTaskTemplate(
  templateName="jnlp-slave-with-docker",
  label="ecs-with-docker",
  taskDefinitionOverride='',
  image="jnlp-slave-with-docker:latest",
  repositoryCredentials=null,
  launchType="EC2",
  networkMode="default",  
  remoteFSRoot=null,
  memory=2048,
  memoryReservation=2048,
  cpu=512,
  subnets=null,
  securityGroups=null,
  assignPublicIp=false,
  privileged=false,
  containerUser=null,
  logDriverOptions=null,
  environments=null,
  extraHosts=null,
  mountPoints=mounts,
  portMappings=null
)

logger.info("Retrieving ecs cloud config by descriptor")
import com.cloudbees.jenkins.plugins.amazonecs.ECSCloud
ecsCloud = new ECSCloud(
  name="name",
  templates=Arrays.asList(ecsTemplate),
  credentialsId=null,
  cluster="arn:aws:ecs:us-east-1:123456789:cluster/ecs-jenkins-slave",
  regionName="us-east-1",
  jenkinsUrl="https://my-jenkins.com",
  slaveTimoutInSeconds=60,
  retentionTimeout=5
)

logger.info("Gettings clouds")
def clouds = instance.clouds
clouds.add(ecsCloud)
logger.info("Saving jenkins")
instance.save()

错误如下

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.cloudbees.jenkins.plugins.amazonecs.ECSCloud(java.lang.String, java.util.Arrays$ArrayList, null, java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.lang.Integer)

【问题讨论】:

    标签: jenkins groovy amazon-ecs


    【解决方案1】:

    这可以通过使用 ECSCloud 设置器来解决,如下所示

    ecsCloud = new ECSCloud(
      name="name",
      credentialsId=null,
      cluster="arn:aws:ecs:us-east-1:123456789:cluster/ecs-jenkins-slave"
    )
    
    ecsCloud.setTemplates(dockerTemplates)
    ecsCloud.setRegionName("us-east-1")
    ecsCloud.setJenkinsUrl("https://my-jenkins.com")
    ecsCloud.setSlaveTimeoutInSeconds(60)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多