首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jenkins上使用Groovy配置amazon从插件

在Jenkins上使用Groovy配置amazon从插件
EN

Stack Overflow用户
提问于 2016-10-15 13:12:33
回答 2查看 2.6K关注 0票数 5

我试图使用init.groovy脚本为Jenkins配置amazon,但是无法在上面找到和文档。我刚开始使用基于groovy的配置自动化

试图使所有属性使用

代码语言:javascript
复制
import jenkins.model.*
import com.cloudbees.jenkins.plugins.amazonecs.*
ECSCloud.metaClass.properties.each {println it.name+":\t"+it.type }

产出:

代码语言:javascript
复制
regionName:           class java.lang.String
searchName:           class java.lang.String
slaveTimoutInSeconds: int
searchIndex:          interface hudson.search.SearchIndex
ACL:                  class hudson.security.ACL
descriptor:           class hudson.model.Descriptor
credentialsId:        class java.lang.String
search:               class hudson.search.Search
ecsService:           class com.cloudbees.jenkins.plugins.amazonecs.ECSService
class:                class java.lang.Class
searchUrl:            class java.lang.String
tunnel:               class java.lang.String
templates:            interface java.util.List
cluster:              class java.lang.String
jenkinsUrl:           class java.lang.String
amazonECSClient:      class com.amazonaws.services.ecs.AmazonECSClient
displayName:          class java.lang.String

但是,不确定如何处理像ecsService: class com.cloudbees.jenkins.plugins.amazonecs.ECSService这样的子类。

不确定,如何定义该属性

代码语言:javascript
复制
def ecs-cloud = new ECSCloud(
  regionName="String"
  ecsService="<NOT SURE HOT TO CONFIGURE THIS>"
......
)

手动配置后的.xml文件如下

代码语言:javascript
复制
<clouds>
    <com.cloudbees.jenkins.plugins.amazonecs.ECSCloud plugin="scalable-amazon-ecs@1.0">
      <name>ECS-CLUSTER-NAME</name>
      <templates>
        <com.cloudbees.jenkins.plugins.amazonecs.ECSTaskTemplate>
          <label>jnlp-slave</label>
          <image>jenkinsci/jnlp-slave</image>
          <remoteFSRoot>/home/jenkins</remoteFSRoot>
          <memory>800</memory>
          <cpu>800</cpu>
          <privileged>false</privileged>
          <taskDefinitionArn>TASK-DEF-ARN</taskDefinitionArn>
        </com.cloudbees.jenkins.plugins.amazonecs.ECSTaskTemplate>
      </templates>
      <credentialsId></credentialsId>
      <cluster>arn:aws:ecs:REGION:ACCOUNTID:cluster/ECS-CLUSTER-NAME</cluster>
      <regionName>REGION</regionName>
      <tunnel></tunnel>
      <jenkinsUrl>JENKINS-URL</jenkinsUrl>
      <slaveTimoutInSeconds>900</slaveTimoutInSeconds>
      <ecsService>
        <credentialsId></credentialsId>
        <regionName>REGION</regionName>
      </ecsService>
    </com.cloudbees.jenkins.plugins.amazonecs.ECSCloud>
  </clouds>

提前谢谢。

更新

Configure Jenkins EC2-Plugin with Groovy类似的问题,使用EC2插件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-28 16:34:24

所以我在这方面取得了一些进展。它不是幂等的,但它起作用了。代码是为我的用例量身定做的,但对于您来说,为您自己的代码进行调整应该不会太困难。

代码语言:javascript
复制
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",
  image="jnlp-slave-with-docker:latest",
  remoteFSRoot=null,
  memory=2048,
  cpu=512,
  privileged=false,
  logDriverOptions=null,
  environments=null,
  extraHosts=null,
  mountPoints=mounts
)

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
)

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

Stack Overflow用户

发布于 2017-09-21 16:02:14

上述答案中的ECSTaskTemplate不再起作用。memoryReservation失踪了。

下面是ECSTaskTemplate的一个工作示例

代码语言:javascript
复制
def ecsTemplate = new ECSTaskTemplate(
  templateName="jnlp-slave",
  label="ecs",
  image="jenkinsci/jnlp-slave",
  remoteFSRoot=null,
  memory=0,
  memoryReservation=2048,
  cpu=512,
  privileged=false,
  logDriverOptions=null,
  environments=null,
  extraHosts=null,
  mountPoints=null
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40059428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档