本文介绍在云效公有云版本中,如何创建可供BizWorks使用的基于代码部署的流水线。
使用场景
基于代码的流水线部署主要包括:首先将代码编译成JAR包,然后构建出镜像,最后部署到服务集群。
在使用云效流水线时,您会根据使用需求增加代码扫描、单元测试或人工卡点等节点,这都可能会导致云效流水线运行失败,所以云效流水线中的每个节点都需要配置Webhook,目的是在云效流水线运行异常时通知BizWorks同步更新应用的部署状态。
步骤一:配置环境变量
如果需要在BizWorks工作台调用云效流水线,您需要配置的环境变量,分别是:
- BW_TENANT_ID
- BW_USER_ID
- BW_USER_NAME
- BW_DOMAIN_NAME
- BW_PROJECT_CODE
- BW_APPLICATION_CODE
- BW_DEPLOYMENT_CODE
- BW_BUILD_MODULE_PATH
- BW_BUILD_DOCKERFILE_PATH
- BW_TARGET_IMAGE_URL
- BW_TARGET_REGISTRY_USERNAME(需要指定默认值)
- BW_TARGET_REGISTRY_PASSWORD(需要指定默认值)
- BW_LOGIC_FLOW_SERVER
- BW_AUTH_TOKEN
环境变量配置如下图所示:
步骤二:配置代码源
代码源中的默认分支设置为
master
,云效流水线运行时的实际分支会由BizWorks传入。具体配置如下图所示:说明 BizWorks应用和云效流水线是一一对应关系,即您在BizWorks控制台上为A应用配置的代码仓库地址,应该与A应用对应的云效流水线代码源保持一致。
步骤三:构建Java镜像
- 添加Java镜像构建节点。Java镜像构建节点有两个任务:
- Java构建任务:负责编译您在BizWorks上配置的Java应用分支。
- 镜像构建并推送至自定义镜像仓库任务:负责构建出Java应用镜像、并推送至您在BizWorks上指定的仓库。
- 配置Java构建的任务步骤,设置步骤名称、JDK版本、Maven版本和构建命令,具体如下图所示:构建命令的脚本样例如下:
# maven build default command MVN_PLUGIN_PARAM="-DtenantId=${BW_TENANT_ID} -DprojectCode=¥¥${BW_PROJECT_CODE} -DapplicationCode=${BW_APPLICATION_CODE} -DlogicFlowServer=${BW_LOGIC_FLOW_SERVER}" mvn ${MVN_PLUGIN_PARAM} -s settings.xml -U clean package -Dmaven.test.skip=true -Dautoconfig.skip # module if [ -z ${BW_BUILD_MODULE_PATH} ];then MODULE_DIR=$(ls | grep -e "-start" ) else MODULE_DIR=${BW_MODULE_PATH} fi if [ ! -d ${MODULE_DIR} ];then echo "---------------------------------------------------------------" echo "[${MODULE_DIR}]不存在,请检查Module名称是否正确。" exit 5 fi echo "USER_MODULE_DIR=${MODULE_DIR}" >> .env # Jar JAR_PACKAGE=`ls ${MODULE_DIR}/target/ | egrep .jar$` echo "USER_JAR_PACKAGE=${JAR_PACKAGE}" >> .env
- 删除镜像构建并推送至阿里云镜像仓库个人版的任务步骤。说明 云效流水线执行时需要使用BizWorks上已配置好的仓库,所以Java镜像构建节点中默认的镜像构建并推送至阿里云镜像仓库个人版的任务步骤不能使用,需要删除。
- 新增并配置 镜像构建并推送至自定义镜像仓库的任务步骤。镜像构建并推送至自定义镜像仓库的任务步骤的配置如下图所示:
相关参数的配置如下:
- 镜像仓库地址:
${BW_TARGET_IMAGE_URL}
。 - 用户名:
${BW_TARGET_REGISTRY_USERNAME}
。 - 密码:
${BW_TARGET_REGISTRY_PASSWORD}
。 - Dockerfile路径:
${BW_BUILD_DOCKERFILE_PATH}/Dockerfile
。 - contextPath:
${USER_MODULE_DIR}/target
。 - 构建参数:
JAR_PACKAGE = ${USER_JAR_PACKAGE}
。
- 镜像仓库地址:
步骤四:部署应用
- 添加应用部署节点。
- 配置执行命令的任务步骤。执行命令的脚本样例如下:
# 部署实例 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,具体如下图所示:
相关参数配置如下:
- 插件类型选择为Webhook通知插件。
- 设置webhook地址,格式为
${BizWorks控制台域名}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}
- 运行状态配置为失败和取消。
文档内容是否对您有帮助?