- 介绍
- 用法
- 前置条件
- 创建密钥对
- 下载插件
- 配置云
- 导航到“Configure Clouds”
- 添加新的云
- 配置“Cloud Name”
- 勾选“Jenkins Master In Private Network?“
- 配置“Credentials”
- 配置“Region” -必填
- 配置“Image” -必填
- 配置“VPC” -可选
- 配置“Security Group” -可选
- 配置“ECS SSH Key” -必填
- “Test Connection” -必填
- 配置“Available Zone” -可选
- 配置“ VSW” -可选
- 配置“Instance Type” -可选
- 配置“Minimum number of instances” -可选
- 配置“Init Script” -可选
- 配置“Labels” -可选
- 配置“Remote FS root” -可选
- 配置“Remote user” -可选
- 配置“System Disk Category” -可选-
- 配置“System Disk Size” -可选-
- 勾选“Assign Public Ip“
- 添加节点
- 故障排查
- 变更日志
- 联系我们
该插件实现Jenkins从节点提供机制。在CI / CD方案中,如果您的Jenkins主节点工作量很大,请使用此插件来配置从节点 ECS , 减轻主节点的工作量。
下图说明了jenkins主从机制的工作原理。
开始之前,请确保您满足以下要求:
- 阿里云账户。 对于国际用户,请参阅 阿里云全球账户
- 阿里云 AccessKey/SecretKey 用于API的访问。
- Jenkins主服务器:需要运行的Jenkins主服务器,此插件仅预配置从节点,不预配置主节点。
为了使用SSH隧道与主节点进行通信,预配节点必须有一个密钥对。
1.1 登录到 ECS 控制台
1.2. 导航到“网络和安全性” > “密钥对”菜单
1.3. 生成密钥对 单击“创建SSH密钥对”按钮,根据提示生成密钥,并将生成的密钥对保存为“ .PEM”格式
2.1 登录到您自己的Jenkins控制台。导航到“管理Jenkins”>“管理插件”>“可选插件”菜单
2.2 键入并搜索“Alibaba Cloud ECS”
2.3 安装插件
Alibaba Cloud Credentials Plugin 是必需的,也需要被安装。
ECS插件安装完成后,导航至“管理Jenkins”>“管理节点和云”>“配置云”菜单
选择 "Alibaba Cloud ECS"
必须使用名称来标识云。
当前Jenkins Master是否部署在VPC内网环境中(即是否有访问公网的权限). 如果您的Jenkins Master部署在内网环境中(即没有访问公网权限), 请勾选此项, 后续插件调用阿里云SDK会使用VPC私网域名进行请求. 如果不勾选此项, 默认会使用公网域名进行访问, 会导致访问不通, 从而后续使用该插件会出现"ConnectTimeoutException"异常 如果在公网环境中(即有访问公网权限), 则无需勾选此项, 后续调用阿里云SDK会使用公网域名进行请求.
必须是有效的凭据。插件使用凭据(ak / sk)调用阿里云ECS OpenAPI,以将ECS创建为从节点。
- 输入您之前在 前置条件 创建的"Access Key ID" & "Secret Access Key"
- 请确保您没有在下面列出任何警告:
选择您刚刚创建的凭证
选择将在其中配置从ECS节点的正确区域。
选择正确的镜像类型。
如果所选区域中有任何VPC,它们将列在“ VPC”下拉列表中。并且如果未找到VPC,将使用172.16.0.0/12 CIDR块创建默认的VPC。
如果所选区域中有任何安全组,它们将列在“安全组”下拉列表中。如果未找到安全组,将使用“ 22/22”端口范围访问权限创建默认安全。
- 输入在步骤1:为ECS创建密钥对中获得的SSH密钥
- 当前,仅支持“带有私钥的SSH用户名”。
在继续之前,您应该单击“测试连接”按钮进行彻底检查,并确保所有必需的项目都已成功配置。
选择将在其中配置从ECS节点的正确可用区域。如果未选择可用区域,则将选择一个随机区域。
选择将在其中配置从ECS节点的右侧vsw。如果没有选择VSW,将创建一个与现有vsws不重叠的随机vsw。
Select the right instance type that the slave ECS node will be provisioned. And if no instance type selected, a random instance type will be selected.
最小实例数是用于生成关注者的关注者节点的数量。 此插件将根据填写的数字创建子节点。该数字至少应为1
Init脚本是在Jenkins开始启动跟随者节点之前在新启动的跟随者节点实例上运行的Shell脚本。 这也是安装构建和测试所需的其他软件包的好地方。
是否设置公网ip
- 勾选 "创建新的数据卷"
- 配置云盘id
- 保存成功后,输入新节点以添加节点。初始化状态如下:
- 通过pot单击提供实例后,将按照以下方式初始化子节点:
- 一段时间后,连接后状态将恢复。
- 单击节点下拉框,以在跟随者节点上执行相关操作。
- 单击配置以查看跟随者节点信息
在 Jenkins 初始化 后或通过 Jenkins 脚本控制台 自动执行,例如
import com.alibabacloud.credentials.plugin.auth.AlibabaCredentials
import com.alibabacloud.jenkins.ecs.AlibabaCloud
import com.alibabacloud.jenkins.ecs.AlibabaEcsFollowerTemplate
import com.cloudbees.plugins.credentials.*
import com.cloudbees.plugins.credentials.domains.Domain
import hudson.model.*
import jenkins.model.Jenkins
def AlibabaCredentialsParameters = [
id : 'alibabacloud-jenkins-key',
description: 'Jenkins Key For Alibaba Cloud',
accessKey : '${your-alibaba-cloud-ak}',
secretKey : '${your-alibaba-cloud-sk}'
]
def AlibabaCloudFollowerTemplateParameters = [
region : '${your-region-no}', // cn-qingdao
zone : '${your-zone-no}', // cn-qingdao-c
instanceType : '${your-instance-type}', // ecs.sn2ne.2xlarge
minimumNumberOfInstances: 1,
vsw : '${your-vsw-id}',
initScript : "",
labelString : 'Jenkins Agent',
remoteFs : "/root",
remoteAdmin : "/remoteAdmin"
]
def AlibabaCloudParameters = [
cloudName : 'AlibabaCloudECS',
sshKeyId : '${your-ssh-key-id}', // 请先在 Dashboard/Credentials 里配置好SSH Key, 这里放的是SSH Key的ID
image : '${your-image-id}',
vpc : '${your-vpc-id}',
securityGroup: '${your-sg-id}'
]
// https://github.com/jenkinsci/alibabacloud-credentials-plugin/blob/master/src/main/java/com/alibabacloud/credentials/plugin/auth/AlibabaCredentials.java
AlibabaCredentials alibabaCredentials = new AlibabaCredentials(
CredentialsScope.GLOBAL,
AlibabaCredentialsParameters.id,
AlibabaCredentialsParameters.accessKey,
AlibabaCredentialsParameters.secretKey,
AlibabaCredentialsParameters.description
)
// get Jenkins instance
Jenkins jenkins = Jenkins.getInstance()
// get credentials domain
def domain = Domain.global()
// get credentials store
def store = jenkins.getExtensionList('com.cloudbees.plugins.credentials.SystemCredentialsProvider')[0].getStore()
// add credential to store
store.addCredentials(domain, alibabaCredentials)
// https://github.com/jenkinsci/alibabacloud-ecs-plugin/blob/master/src/main/java/com/alibabacloud/jenkins/ecs/AlibabaEcsFollowerTemplate.java
AlibabaEcsFollowerTemplate slaveTemplateQingdao = new AlibabaEcsFollowerTemplate(
AlibabaCloudFollowerTemplateParameters.region,
AlibabaCloudFollowerTemplateParameters.zone,
AlibabaCloudFollowerTemplateParameters.instanceType,
AlibabaCloudFollowerTemplateParameters.minimumNumberOfInstances,
AlibabaCloudFollowerTemplateParameters.vsw,
AlibabaCloudFollowerTemplateParameters.initScript,
AlibabaCloudFollowerTemplateParameters.labelString,
AlibabaCloudFollowerTemplateParameters.remoteFs,
)
// https://github.com/jenkinsci/alibabacloud-ecs-plugin/blob/master/src/main/java/com/alibabacloud/jenkins/ecs/AlibabaCloud.java
AlibabaCloud alibabaCloud = new AlibabaCloud(
AlibabaCloudParameters.cloudName,
AlibabaCredentialsParameters.id,
AlibabaCloudParameters.sshKeyId,
AlibabaCloudFollowerTemplateParameters.region,
AlibabaCloudParameters.image,
AlibabaCloudParameters.vpc,
AlibabaCloudParameters.securityGroup,
AlibabaCloudFollowerTemplateParameters.zone,
AlibabaCloudFollowerTemplateParameters.vsw,
AlibabaCloudFollowerTemplateParameters.instanceType,
AlibabaCloudFollowerTemplateParameters.minimumNumberOfInstances,
AlibabaCloudFollowerTemplateParameters.initScript,
AlibabaCloudFollowerTemplateParameters.labelString,
AlibabaCloudFollowerTemplateParameters.remoteFs
)
// add cloud configuration to Jenkins
jenkins.clouds.add(alibabaCloud)
// save current Jenkins state to disk
jenkins.save()
- 当您单击“保存”按钮时,如果“带有私钥的SSH用户名”连接测试失败,则保存将成功,但是“设置节点”将报告错误“处理请求时发生问题”。因此,保存前请确保连接成功。
- 如果您有任何疑问或要求,请用钉钉 扫描以下二维码