将计算巢ECS镜像部署物更新操作加入到软件持续集成

若服务商使用持续集成环境构建或更新软件时,可以将计算巢ECS镜像部署物的更新操作也加入到持续集成中去。服务商将经过验证的软件版本发布到计算巢平台上时,ECS镜像部署物的版本和内容也会同步更新发布。本文介绍如何将计算巢ECS镜像部署物更新操作加入到服务商的软件持续集成中。

准备环境和工具

操作前,请完成以下准备工作。

构建持续集成的ECS镜像部署物并上传持续集成环境

操作前,请确认您的账号已具备管理计算巢服务的商家侧权限(AliyunComputeNestSupplierFullAccess)和管理ECS的权限(AliyunECSFullAccess),更多信息,请参见查看RAM用户的权限

  1. 在持续集成环境预先设置好阿里云CLI命令行工具使用的环境变量。
    export ALIBABACLOUD_ACCESS_KEY_ID=LTAI5t6SyR1RpZtcUC******
    export ALIBABACLOUD_ACCESS_KEY_SECRET=MTM0y6IqXXCCFnA7bGOuCl********
    export ALIBABACLOUD_REGION_ID=cn-hangzhou # 中国或中国内地站点cn-hangzhou,国际站ap-southeast-1
  2. 创建ECS镜像。

    需要使用OOS公共模板ACS-ECS-UpdateImage创建ECS镜像。

    # OOS执行更新镜像
    # 设置更新镜像模版执行所需的参数,参数介绍可参考https://oos.console.aliyun.com/cn-hangzhou/template/public/detail/ACS-ECS-UpdateImage
    regionId="cn-hangzhou"  # 资源执行的地域
    securityGroupId="sg-8vb9b*****wvnuqy6" # 请准备安全组参数用于创建临时实例
    vSwitchId="vsw-8vb5p1******zv01c" # 请准备交换机参数用于创建临时实例
    instanceType="ecs.g5.large" # 临时实例的实例规格
    
    sourceImageId="centos_7_8_x64_20G_alibase_20200622.vhd" #要更新的源镜像
    
    commandType="RunShellScript"  # 命令类型
    
    # 命令内容,示例中为安装MySQL软件,请替换为安装服务商软件的命令
    commandContent='yum install mysql -y'
    
    parameters="{
      \"securityGroupId\": \"$securityGroupId\",
      \"commandType\": \"$commandType\",
      \"sourceImageId\": \"$sourceImageId\",
      \"regionId\": \"$regionId\",
      \"vSwitchId\": \"$vSwitchId\",
      \"instanceType\": \"$instanceType\",
      \"commandContent\": \"$commandContent\",
      \"ramRoleName\": \"\"
    }"
    
    # 启动OOS执行
    execution_id=`aliyun oos StartExecution --TemplateName ACS-ECS-UpdateImage --Parameters "${parameters}" | jq -r ".Execution.ExecutionId"`
    
    # 等待oos执行完成
    while
    do
        status=`aliyun oos ListExecutions --ExecutionId ${execution_id} |jq -r '.Executions[0].Status'`
        if [ "$status" == "Success" ]; then
            break
        fi
        sleep 1
    done
    
    # 获取image_id
    image_id=`aliyun oos ListExecutions --ExecutionId ${execution_id} |jq -r '.Executions[0].Outputs | fromjson | .imageId'`
  3. 持续集成ECS镜像部署物。
    输入持续集成命令时,请将命令行中<your_artifact_id>替换成您创建的部署物ID。
    # 输入部署物ID
    artifact_id=<your_artifact_id>
    
    # 创建部署物
    aliyun computenestsupplier CreateArtifact --ArtifactId ${artifact_id} --ArtifactType EcsImage --Name '持续集成ECS镜像部署物' --VersionName 'NewVersion' --ArtifactProperty "{\"ImageId\":\"${image_id}\",\"RegionId\":\"cn-hangzhou\"}" --SupportRegionIds.1 null
    
    # 发布部署物
    aliyun computenestsupplier ReleaseArtifact --ArtifactId ${artifact_id}

搭建持续集成环境示例

此处以通过ROS快速创建一台安装有Jenkins的ECS实例并完成Jenkins初始配置为例,搭建持续集成环境。本示例所用操作系统为Alibaba Cloud Linux。

  1. 登录资源编排控制台

  2. 在左侧导航栏中,选择模板 > 模板示例

  3. 找到Jenkins单机版(已有VPC)并单击创建资源栈

  4. 根据界面提示,输入参数然后单击创建。更多信息,请参见创建资源栈

    资源栈创建完成后,可以查看输出信息。输出信息

  5. 创建完成后,获取资源输出的JenkinsUrl并在本地浏览器打开。如:http://39.**.**.168:8080。

  6. 在解锁Jenkins界面的管理员密码框中,输入资源输出页中InitialAdminPassword的值。

    解锁

  7. 自定义Jenkins界面,选择安装推荐的插件

    安装插件

  8. 安装完成后,设置管理员用户名和密码并登录Jenkins环境。

    登陆Jenkins