本文介紹在云效公有云版本中,如何創建可供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}
- 運行狀態配置為失敗和取消。
文檔內容是否對您有幫助?