Skip to content

Latest commit

 

History

History
93 lines (89 loc) · 16.5 KB

ECSTEMPLATESTEP.md

File metadata and controls

93 lines (89 loc) · 16.5 KB

EcsTemplate Step pipeline

EcsTemplate 脚本示例

def JOB_NAME = "${env.JOB_NAME}"
def BUILD_NUMBER = "${env.BUILD_NUMBER}"
def ECS_NAME = "jenkins-${JOB_NAME}-${BUILD_NUMBER}"
EcsTemplate(
        cloudName: '${cloudName}',
        attachPublicIp: true,
        chargeType: 'Spot', //
        connectionStrategy: 'PUBLIC_IP',
        credentialsId: '${credentialsId}',
        instanceCapStr: '${instanceCapStr}',
        ecsType: [$class: 'UnixData'],
        idleTerminationMinutes: '${idleTerminationMinutes}',
        image: '${image}', //
        initScript: '',
        instanceCap: '${instanceCap}',
        instanceType: 'ecs.s6-c1m1.small',
        intranetMaster: false,
        labels: "${labels}",
        name: "${name}",
        launchTimeout: '${launchTimeout}',
        maxTotalUses: '${maxTotalUses}',
        minimumNumberOfInstances: '
        mountDataDisk: true,
        dataDiskCategory: 'cloud_essd_PL0',
        dataDiskSize: '${dataDiskSize}',
        mountQuantity: '${mountQuantity}',
        noDelayProvisioning: true, // 如果填写了 true, 则一旦构建队列中有任务积压, 则不会等待已有的worker节点结束工作, 而是会立刻新建worker节点来执行队里中的构建任务. 填写 true, 优点是队列中任务能迅速引发新建节点从而迅速完成构建, 缺点是任务结束后可能导致闲置的worker节点数量过多从而引发额外费用问题; 此时建议调整节点的 "Idle Termination Time In Minutes" 参数来缓解该问题
        numExecutors: '1',
        region: '${region}',
        remoteFs: '${remoteFs}',
        securityGroup: '${securityGroup}',
        sshKey: '${sshKey}',
        systemDiskCategory: 'cloud_essd_PL0',
        systemDiskSize: 40,
        tags: [[name: '${name}', value: '${value}']],
        templateName: '${templateName}',
        userData: '',
        vpc: '${vpc}',
        vsw: '${vsw}',
        zone: '${zone}') //

        {
            timestamps {
                node(ECS_NAME) {
                    def start_build_time = new Date().format('yyyy-MM-dd HH:mm:ss')
                    echo "${start_build_time}"
                }
            }
        }

字段说明

名称 类型 必填 描述 示例值
cloudName String 模版名称 示例值:
jenkins
attachPublicIp Boolean 是否使用公网ip, 取值范围:
* true
* false
示例值:
true
chargeType String 选择实例付费类型,取值范围:
* OnDemand : 按量实例
* Spot : 抢占式示例
示例值:
Spot
connectionStrategy String 连接策略, 取值范围:PRIVATE_IP: 私网连接
PUBLIC_IP: 公网连接
示例值:
PUBLIC_IP
credentialsId String 阿里 ECS 凭证,用于连接 ECS 的阿里云 iam access key 示例值:
jenkins-credentials
instanceCapStr String 限制从该模板启动的正在运行的实例总数,不填表示不限制. 示例值:
2
idleTerminationMinutes String 空闲终止时间 单位: 分钟 示例值:
30
image String 镜像ID, 启动实例时选择的镜像资源.
更多镜像请参见 公共镜像
示例值:
ubuntu_22_04_x64_20G_alibase_20220628.vhd
instanceCap String 当前Template下可以创建的Node数量上限,不填表示不限制 示例值:
2
instanceType String 待创建实例的实例规格的ID,
已上线的实例规格请参见 选择实例规格
示例值:
ecs.s6-c1m1.small
intranetMaster Boolean 当前Jenkins Master是否部署在VPC内网环境中(即是否有访问公网的权限),取值范围
* true:Jenkins Master部署在内网环境中(即没有访问公网权限)
* false: 后续插件调用阿里云SDK会使用VPC私网域名进行请求.如果在公网环境中(即有访问公网权限), 后续调用阿里云SDK会使用公网域名进行请求.
示例值:
false
labels String 节点标签 示例值:
jenkins
name String 实例名称,和需要运行的任务名称之和不能超过128个英文或中文字符.
必须以大小字母或中文开头.
不能以http://或https://开头.
可以包含数字、半角冒号(:),下划线(_)或者短划线(-).
示例值:
Jenkins-test
launchTimeout String 启动超时(单位为秒) 等待SSH与新的从节点实例的链接完成的秒数,不填或为零时表示没有超时时间.
如果在该时间范围内无法与worker节点建立SSH, 则默认会删除掉该节点.
示例值:
600
maxTotalUses String 单节点最大可复用次数. 取值范围:
* 0: 代表不限制复用次数, 即该节点会常驻, 可以执行不限次数的构建, 直到手动销毁或者空闲时长超过阈值导致销毁.
* 1: 代表该节点只能执行一次构建, 构建结束, 节点就立即销毁.
* 2N: 代表节点可以执行2N次构建. 没执行一次构建, 剩余构建次数递减1, 直到为0时销毁.
示例值:
1
minimumNumberOfInstances String 最小实例数是用于生成节点的数量. 此插件将根据填写的数字创建子节点.取值范围:
0~N
N 不能 > instanceCap
示例值:
0
mountDataDisk Boolean 挂载数据盘 取值范围:
* true
* false
示例值:
true
dataDiskCategory String 数据盘规格, 当mountDataDisk 为 true时, 必填. 取值范围:
* cloud_essd_PL0
* cloud_essd_PL1
* cloud_essd_PL2
* cloud_essd_PL3
* cloud_ssd
* cloud_efficiency
* cloud
示例值:
cloud_essd_PL0
dataDiskSize String 数据盘大小, 当mountDataDisk 为 true时, 必填. 取值范围:
* cloud_efficiency:2032768
* cloud_ssd:20
32768
* cloud_essd_PL0:4032768
* cloud_essd_PL1:20
32768
* cloud_essd_PL2:46132768
* cloud_essd_PL3:1261
32768
* cloud:52000
* cloud_auto:40
32768
示例值:
40
mountQuantity String 挂载数据盘数量, 当mountDataDisk 为 true时, 必填. 示例值:
1
noDelayProvisioning Boolean 无延迟供应,取值范围:
* true
* false
示例值:
true
numExecutors String 执行者数量,Jenkins可以在此节点上执行的并发构建的最大数量. 示例值:
1
region String 地域, 标识阿里云应用所在的地域.
查看阿里云地域 获取所有支持的地域列表.
示例值:
cn-hangzhou
remoteFs String 远程根目录 示例值:
/root
securityGroup String 安全组,新创建实例所属于的安全组ID.
同一个安全组内的实例之间可以互相访问,一个安全组能容纳的实例数量视安全组类型而定.
示例值:
sg-bp15ed6xe1yxeycg7****
sshKey String 阿里云SSH密钥, 阿里云SSH密钥对是一种安全便捷的登录认证方式,由公钥和私钥组成,仅支持Linux实例. 示例值:
jenkins-sshKey
systemDiskCategory String 系统盘类型, 取值范围:
* cloud_essd_PL0
* cloud_essd_PL1
* cloud_essd_PL2
* cloud_essd_PL3
* cloud_ssd
* cloud_efficiency
* cloud
示例值:
cloud_essd_PL0
systemDiskSize Integer 系统盘大小 单位为GiB.
取值范围:20~500.
示例值:
40
tags Object [] 实例、云盘和主网卡的标签信息. 示例值:
[[name: 'jenkins', value: 'value']]
templateName String 描述 示例值:
ecs-template
userData String 实例自定义数据. 不需要进行Base64编码,源码传入即可,原始数据最多为16 KB. 示例值:
#!/bin/sh
echo 'hello world!'
vpc String VPC ID 将用于创建ECS实例. 示例值:
vpc-dweqdxdaadqdxxxxx
vsw String 虚拟交换机ID, 交换机(vSwitch)是组成专有网络的基础网络设备,用来连接不同的云资源实例.
专有网络是地域级别的资源,专有网络不可以跨地域,但包含所属地域的所有可用区.
您可以在每个可用区内创建一个或多个交换机来划分子网.
示例值:
vsw-bp1s5fnvk4gn2tws0****
zone String 待创建实例所属的可用区ID.
查看阿里云地域&可用区 获取所有支持的可用区列表
示例值:
cn-hangzhou-i