创建基于镜像部署的流水线

更新时间: 2023-09-13 16:32:23

本文介绍在云效公有云版本中,如何创建可供BizWorks使用的基于镜像部署的流水线。

使用场景

基于镜像的流水线部署主要包括:使用已构建好的镜像直接进行部署。

在使用云效流水线时,您会根据使用需求增加代码扫描单元测试人工卡点等节点,这都可能会导致云效流水线运行失败,所以云效流水线中的每个节点都需要配置Webhook,目的是在云效流水线运行异常时通知BizWorks同步更新应用的部署状态。

步骤一:配置环境变量

如果需要在BizWorks工作台调用云效流水线,您需要配置的环境变量,分别是:
  • BW_AUTH_TOKEN
  • BW_TENANT_ID
  • BW_USER_ID
  • BW_USER_NAME
  • BW_DOMAIN_NAME
  • BW_PROJECT_CODE
  • BW_APPLICATION_CODE
  • BW_DEPLOYMENT_CODE
环境变量配置如下图所示:1

步骤二:部署应用

  1. 添加应用部署节点。1
  2. 配置执行命令任务步骤。1
    执行命令的脚本样例如下:
    # 部署实例
    result=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/deployInstance" \
                  -H "Content-Type: application/json" \
                  -H "x-bw-us-auth-way: jwt" \
                  -H "Authorization: Bearer ${BW_AUTH_TOKEN}" \
                  -H "x-bw-tenant-id: ${BW_TENANT_ID}" \
                  -H "x-bw-user-id: ${BW_USER_ID}" \
                  -H "x-bw-user-name: ${BW_USER_NAME}" \
                  -X POST -d "{\"deploymentCode\": \"${BW_DEPLOYMENT_CODE}\"}")
    if [[ $(echo "${result}" | grep -c '"code":"OK"') = 0 ]] ; then
      echo "触发应用部署 [  失败  ] - ${result}"
      exit 1
    else
      echo "触发应用部署 [  成功  ]"
    fi
    
    # 检查实例状态
    while :; do
      sleep 5
      status=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/getInstanceDeployStatusFromPipeline" \
                  -H "Content-Type: application/json" \
                  -H "x-bw-us-auth-way: jwt" \
                  -H "Authorization: Bearer ${BW_AUTH_TOKEN}" \
                  -H "x-bw-tenant-id: ${BW_TENANT_ID}" \
                  -H "x-bw-user-id: ${BW_USER_ID}" \
                  -H "x-bw-user-name: ${BW_USER_NAME}" \
                  -X POST -d "{\"deploymentCode\": \"${BW_DEPLOYMENT_CODE}\"}")
      # echo $result
      if [[ $(echo ${status} | grep '"code":"OK"' | grep 'Running' | wc -l) = 1 ]] ; then
        echo "检查部署状态 [ 部署中 ]"
      elif [[ $(echo ${status} | grep '"code":"OK"' | grep 'Cancelled' | wc -l) = 1 ]] ; then
        echo "检查部署状态 [  取消  ]"
        exit 1
      elif [[ $(echo ${status} | grep '"code":"OK"' | grep 'Failed' | wc -l) = 1 ]] ; then
        echo "检查部署状态 [  失败  ]"
        exit 1
      elif [[ $(echo ${status} | grep '"code":"OK"' | grep 'Succeeded' | wc -l) = 1 ]] ; then
        echo "检查部署状态 [  成功  ]"
        exit 0
      elif [[ $(echo ${status} | grep '"code":"OK"' | grep 'Abnormal' | wc -l) = 1 ]] ; then
        echo "检查部署状态 [  异常  ]"
        exit 1
      else
        echo "检查部署状态 [  失败  ]"
        exit 1
      fi
    done

步骤三:配置Webhook

为每个节点添加插件并配置Webhook,具体如下图所示:1
相关参数配置如下:
  • 插件类型选择为Webhook通知插件
  • 设置webhook地址,格式为${BizWorks控制台域名}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}
  • 运行状态配置为失败取消
阿里云首页 BizWorks 相关技术圈