Jenkins Pipeline 手记(6)—— 使用 Azure VM 作为动态节点

在Jenkins Pipeline实践中,有时需要分配并连接动态的build agent完成CI任务。相比于静态的VM节点,这样做的好处是可以优化资源的使用,动态地分配和释放所需要的物理资源,既不让资源闲置,也不会导致某些节点负载过重。

Jenkins支持通过Cloud的方式配置动态节点,比如Kubernetes和Azure VM。本文就来分享一下如何配置并使用Azure VM来构建CI任务。

准备工作

首先,你要有一个Azure Subscription和Service Principal。使用Azure Portal 的创建方法可以参考这里,使用Powershell的创建方法可以参考这里

简单来说,如果使用Azure Portal方式,需要先在一个Subscription下面注册一个Web Application,随后一个service principal会自动创建出来。一个service principal定义了一个App在特定的tenant里面能做什么,能够访问哪些资源,以及能够被谁访问

在Jenkins中添加一个Microsoft Azure Principal类型的Credential,添加刚刚新建的Principal信息。
在这里插入图片描述

基本原理

在Jenkins中使用Azure VM需要安装插件:Azure VM Agents Plugin。 当一个Build开始时,上述插件会在Azure上创建一台虚拟机,然后连接到Jenkins Master实例,Build任务就会在这个虚机上运行。虚拟机的硬件配置以及预装的软件和工具可以通过模板和脚本来配置,后面会谈到。

这台虚机会保留几个小时(可配置),后续的一些Build任务可以继续重用这台虚机,这样就会省去创建新虚拟机的时间。一旦一台虚拟机空闲一段时间(可配置),这个Build 节点就会被删除,以释放计算资源。

更多的原理可以参考配置部分。

配置

Jenkins的管理员可以配置插件。具体入口是:Manage Jenkins -> Configure System ->Add a new cloud -> Microsoft Azure VM Agents。基本配置界面如下:
在这里插入图片描述
其中Azure Credentials一栏就填写刚才新建的Service Principal的信息。Resource Group就填Azure上面所在Subscription的Resource Group,推荐填已有的Group,防止输入出错。此外,还可以配置最大agent的数量和部署超时时间等信息,这可以根据自己的业务逻辑和资源需求来决定。

下面就是模板(template)的配置。模板定义了Azure虚拟机的默认的配置,比如大小、存储的类型和位置等等。模板的定义如下:
在这里插入图片描述
Agent Workspace就对应Jenkins agent的Workspace的概念,这个路径可以是个临时的,因为我们假设Workspace不会存储重要数据。Labels就是节点的label,在pipeline里面node函数中使用的就是这个Label,推荐填写有意义的标签名。

Storage Account需要在Azure Subscription中创建,用于存储VM的OS磁盘。这里指定Storage Account的类型一般选择Standard_LRS,尤其是在下面的Disk Type配置选择Managed Disk时,这可以避免过大的磁盘开销。

Rentention Strategy定义了VM过期的策略,默认是在一定时间后,关掉并删除空闲的虚拟机,还支持其他两种策略,可以参考插件的文档。超期时间默认是60分钟,可以根据需要改动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值