AI 助理
备案 控制台
文档
产品文档

如何获取大禹流水线连接配置和创建定制大禹流水线

更新时间:
一键部署
产品详情
我的收藏

本文介绍如何获取大禹流水线连接配置,以及如何创建基于代码部署和镜像部署的大禹流水线。

获取大禹流水线连接配置

  1. 登录 大禹-GTS工作台。
  2. 交付项目列表页面,单击目标交付项目。1
  3. 获取AccessKey IDAccessKey Secret。在目标交付项目的左侧导航栏中,参考下图操作。1
    1. 选择管理 > 设置
    2. 项目配置页面,单击OpenAPI
    3. 单击创建AccessKey,单击复制,将AccessKey IDAccessKey Secret保存至本地。1
      说明 查看Secret对话框关闭后,您无法再次查询Secret。如果您遗失该AccessKey,可以创建新的AccessKey替代。
  4. 获取大禹项目ID大禹用户ID1
    上图中:
    • businessId对应大禹项目ID
    • 用户ID对应大禹用户ID
    当您在新建流水线连接时,关于大禹项目ID大禹用户ID信息您可以通过该步骤获取。而AccessKey IDAccessKey Secret信息您可以通过步骤 3获取。1

创建大禹流水线

  1. 在目标交付项目的左侧导航栏中,选择研运 > 应用1
  2. 单击1图标。
  3. 创建研发项目面板,填写名称标识描述(选填),完成后单击确定1
  4. 在新建研发项目的基本信息页签,单击新增应用1
  5. 完成新建应用的相关配置。1
    1. 选择目标应用。
    2. 选择目标应用类型。
    3. 设置目标应用详细信息:名称标识描述(选填)、仓库,以及选择应用是否为空应用
    4. 完成后单击确定
  6. 新建定制流水线。
    1. 在目标应用的应用概览页签,单击定制流水线1
    2. 在目标应用的定制流水线页签,单击新建定制流水线1
    3. 新建流水线对话框中,设置流水线名称所属研发项目流水线模板所属应用分支模式分支触发方式,完成后,单击保存1
  7. 在目标流水线ID右侧操作列下,选择更多 > 编辑1
  8. 编辑流水线页面,您可以参考以下步骤完成流水线编辑操作。1
    说明 代码准备(代码准备)节点不支持编辑,代码克隆(准备阶段)节点不支持编辑和删除。
    • 新增自定义脚本节点。单击1图标,在选择任务类型对话框中,单击工具页签后,单击自定义脚本1
      新建阶段面板,完成阶段名称自定义脚本设置后,单击确定1

      创建基于代码部署的大禹流水线。

      1. 新增第一个自定义脚本节点:Java代码克隆,具体脚本示例如下。
        echo "========================== ${STAGE_NAME} =========================="
        
        updateStatus(){
          pipelineId=$(echo ${JOB_NAME} | awk -F"-" '{print $(NF-1)}')
          rm -rf ${JOB_NAME}-${BuildId}
          result=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}" \
                        -H "Content-Type: application/json" \
                        -X POST -d "{\"task\": {\"pipelineId\": \"${pipelineId}\",\"buildNumber\": \"${BuildId}\",\"statusCode\": \"FAIL\"},
                        \"globalParams\": [{\"key\": \"BW_TENANT_ID\", \"value\": \"${BW_TENANT_ID}\"},{\"key\": \"BW_USER_ID\", \"value\": \"${BW_USER_ID}\"},
                        {\"key\": \"BW_DEPLOYMENT_CODE\", \"value\": \"${BW_DEPLOYMENT_CODE}\"}]}")
        
          if [ $(echo "${result}" | grep -c '"code":"OK"') = 0 ] ; then
            echo "更新流水线状态 [  失败  ] - $result"
            exit 1
          else
            echo "更新流水线状态 [  成功  ]"
          fi
        }
        
        mkdir ${JOB_NAME}-${BuildId}
        cd ${JOB_NAME}-${BuildId}
        echo "代码仓库:${BW_GIT_REPO_HTTP_URL}"
        url=$(echo "${BW_GIT_REPO_HTTP_URL}" | awk -F '//' '{print $2}')
        git_url=$(echo http://${BW_GIT_REPO_USERNAME}:${BW_GIT_REPO_PASSWORD}@${url})
        
        if [ ! -z "${BW_GIT_REPO_TAG}" ]; then
          echo "构建Tag:${BW_GIT_REPO_TAG}"
          git clone -c advice.detachedHead=false --depth 1 --single-branch --branch ${BW_GIT_REPO_TAG} ${git_url} .
        elif [ ! -z "${BW_GIT_REPO_COMMIT_ID}" ]; then
          echo "构建commitId:${BW_GIT_REPO_COMMIT_ID}"
          git clone ${git_url} . && git reset --hard ${BW_GIT_REPO_COMMIT_ID}
        elif [ ! -z "${BW_GIT_REPO_BRANCH}" ]; then
          echo "构建分支:${BW_GIT_REPO_BRANCH}"
          git clone --depth 1 --single-branch --branch ${BW_GIT_REPO_BRANCH} ${git_url} .
        fi
        
        if [ "$?" != 0 ]; then
          echo "克隆代码失败,请检查代码仓库地址、用户名、密码是否正确"
          updateStatus
          exit 1
        fi
      2. 新增一个自定义脚本节点:Java代码构建,具体脚本示例如下。
        echo "========================== ${STAGE_NAME} =========================="
        
        updateStatus(){
          pipelineId=$(echo ${JOB_NAME} | awk -F"-" '{print $(NF-1)}')
          rm -rf ${JOB_NAME}-${BuildId}
          result=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}" \
                        -H "Content-Type: application/json" \
                        -X POST -d "{\"task\": {\"pipelineId\": \"${pipelineId}\",\"buildNumber\": \"${BuildId}\",\"statusCode\": \"FAIL\"},
                        \"globalParams\": [{\"key\": \"BW_TENANT_ID\", \"value\": \"${BW_TENANT_ID}\"},{\"key\": \"BW_USER_ID\", \"value\": \"${BW_USER_ID}\"},
                        {\"key\": \"BW_DEPLOYMENT_CODE\", \"value\": \"${BW_DEPLOYMENT_CODE}\"}]}")
        
          if [ $(echo "${result}" | grep -c '"code":"OK"') = 0 ] ; then
            echo "更新流水线状态 [  失败  ] - $result"
            exit 1
          else
            echo "更新流水线状态 [  成功  ]"
          fi
        }
        
        cd ${JOB_NAME}-${BuildId}
        if [ -z "${BW_BUILD_MODULE_PATH}" ];then
          MODULE_DIR=$(ls | grep -e "-start")
        else
          MODULE_DIR=${BW_BUILD_MODULE_PATH}
        fi
        
        if [ ! -d "${MODULE_DIR}" ];then
          echo "---------------------------------------------------------------"
          echo " MODULE_PATH 不存在,请检查Module名称是否正确。"
          updateStatus
          exit 1
        fi
        
        if [ "${BW_APPLICATION_TYPE}" = "SourceCode" ]; then
          MVN_PLUGIN_PARAM="-DtenantId=${BW_TENANT_ID} -DprojectCode=${BW_PROJECT_CODE} -DapplicationCode=${BW_APPLICATION_CODE} -DlogicFlowServer=${BW_LOGIC_FLOW_SERVER}"
        fi
        
        if [ ! -f "${BW_BUILD_SETTINGS_PATH}" ]; then
          echo "构建命令:mvn ${MVN_PLUGIN_PARAM} -Duser.timezone=GMT+08 -f pom.xml -U clean package -Dmaven.test.skip=true"
          mvn ${MVN_PLUGIN_PARAM} -Duser.timezone=GMT+08 -f pom.xml -U clean package -Dmaven.test.skip=true
        else
          echo "构建命令:mvn ${MVN_PLUGIN_PARAM} -Duser.timezone=GMT+08 -f pom.xml -s ${BW_BUILD_SETTINGS_PATH} -U clean package -Dmaven.test.skip=true"
          mvn ${MVN_PLUGIN_PARAM} -Duser.timezone=GMT+08 -f pom.xml -s ${BW_BUILD_SETTINGS_PATH} -U clean package -Dmaven.test.skip=true
        fi
        
        if [ $(ls -l ${MODULE_DIR}/target/*.jar | wc -l) -eq 1 ];then
          JAR_PACKAGE=$(ls ${MODULE_DIR}/target/*.jar | awk -F '/' '{print $NF}')
          cp ${MODULE_DIR}/target/${JAR_PACKAGE} ${BW_BUILD_DOCKERFILE_PATH}/${JAR_PACKAGE}
        else
          echo "---------------------------------------------------------------"
          echo "代码编译失败,请检查错误日志,可能的原因:"
          echo "1. 工程根目录下没有settings.xml文件,编译过程中拉取依赖的jar包失败。"
          echo "2. ${MODULE_DIR}/target目录下没有编译后的jar包。"
          updateStatus
          exit 1
        fi
      3. 新增一个自定义脚本节点:镜像构建,具体脚本示例如下。
        echo "========================== ${STAGE_NAME} =========================="
        
        updateStatus(){
          pipelineId=$(echo ${JOB_NAME} | awk -F"-" '{print $(NF-1)}')
          rm -rf ${JOB_NAME}-${BuildId}
          result=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}" \
                        -H "Content-Type: application/json" \
                        -X POST -d "{\"task\": {\"pipelineId\": \"${pipelineId}\",\"buildNumber\": \"${BuildId}\",\"statusCode\": \"FAIL\"},
                        \"globalParams\": [{\"key\": \"BW_TENANT_ID\", \"value\": \"${BW_TENANT_ID}\"},{\"key\": \"BW_USER_ID\", \"value\": \"${BW_USER_ID}\"},
                        {\"key\": \"BW_DEPLOYMENT_CODE\", \"value\": \"${BW_DEPLOYMENT_CODE}\"}]}")
        
          if [ $(echo "${result}" | grep -c '"code":"OK"') = 0 ] ; then
            echo "更新流水线状态 [  失败  ] - $result"
            exit 1
          else
            echo "更新流水线状态 [  成功  ]"
          fi
        }
        
        cd ${JOB_NAME}-${BuildId}
        JAR_PACKAGE=$(ls ${BW_BUILD_DOCKERFILE_PATH}/*.jar | awk -F '/' '{print $NF}')
        chmod a+r ${BW_BUILD_DOCKERFILE_PATH}/*.jar
        BW_TARGET_REGISTRY_URL=$(echo ${BW_TARGET_IMAGE_URL} | awk -F '/' '{print $1}')
        
        docker login --username=${BW_TARGET_REGISTRY_USERNAME} --password=${BW_TARGET_REGISTRY_PASSWORD} ${BW_TARGET_REGISTRY_URL}
        if [ "$?" != 0 ]; then
          echo "${BW_TARGET_REGISTRY_URL} 登录失败,请检查镜像仓库地址、用户名、密码是否正确。"
          updateStatus
          exit 1
        fi
        
        docker build --pull --build-arg JAR_PACKAGE=${JAR_PACKAGE} -t ${BW_TARGET_IMAGE_URL} ${BW_BUILD_DOCKERFILE_PATH}/
        
        docker push ${BW_TARGET_IMAGE_URL}
        if [ "$?" != 0 ]; then
          echo "推送镜像失败,请检查镜像仓库地址、用户名、密码是否正确。"
          updateStatus
          exit 1
        fi
        
        docker rmi ${BW_TARGET_IMAGE_URL}
      4. 新增一个自定义脚本节点:应用部署,具体脚本示例如下。
        echo "========================== ${STAGE_NAME} =========================="
        
        updateStatus(){
          pipelineId=$(echo ${JOB_NAME} | awk -F"-" '{print $(NF-1)}')
          rm -rf ${JOB_NAME}-${BuildId}
          result=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}" \
                        -H "Content-Type: application/json" \
                        -X POST -d "{\"task\": {\"pipelineId\": \"${pipelineId}\",\"buildNumber\": \"${BuildId}\",\"statusCode\": \"FAIL\"},
                        \"globalParams\": [{\"key\": \"BW_TENANT_ID\", \"value\": \"${BW_TENANT_ID}\"},{\"key\": \"BW_USER_ID\", \"value\": \"${BW_USER_ID}\"},
                        {\"key\": \"BW_DEPLOYMENT_CODE\", \"value\": \"${BW_DEPLOYMENT_CODE}\"}]}")
        
          if [ $(echo "${result}" | grep -c '"code":"OK"') = 0 ] ; then
            echo "更新流水线状态 [  失败  ] - $result"
            exit 1
          else
            echo "更新流水线状态 [  成功  ]"
          fi
        }
        
        code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} ${BW_DOMAIN_NAME})
        echo ${code}
        if [ "${code}" != 200 ];then
          echo "访问 ${BW_DOMAIN_NAME} 地址异常"
          updateStatus
          exit 1
        fi
        
        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}"
          updateStatus
          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 "检查部署状态 [  取消  ]"
            updateStatus
            exit 1
          elif [ $(echo ${status} | grep '"code":"OK"' | grep 'Failed' | wc -l) = 1 ] ; then
            echo "检查部署状态 [  失败  ]"
            updateStatus
            exit 1
          elif [ $(echo ${status} | grep '"code":"OK"' | grep 'Succeeded' | wc -l) = 1 ] ; then
            echo "检查部署状态 [  成功  ]"
            rm -rf ${JOB_NAME}-${BuildId}
            exit 0
          elif [ $(echo ${status} | grep '"code":"OK"' | grep 'Abnormal' | wc -l) = 1 ] ; then
            echo "检查部署状态 [  异常  ]"
            rm -rf ${JOB_NAME}-${BuildId}
            exit 1
          else
            echo "检查部署状态 [  失败  ]"
            updateStatus
            exit 1
          fi
        done
      编辑流水线页面,您可以查看到新建的节点。1

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

      新增一个自定义脚本节点:应用部署,具体脚本示例如下。
      echo "========================== ${STAGE_NAME} =========================="
      
      updateStatus(){
        pipelineId=$(echo ${JOB_NAME} | awk -F"-" '{print $(NF-1)}')
        result=$(curl -s "${BW_DOMAIN_NAME}/devBackend/v2/deployment/updateDeploymentStatusWebhook?x-bw-us-auth-way=jwt&access_token=${BW_AUTH_TOKEN}" \
                      -H "Content-Type: application/json" \
                      -X POST -d "{\"task\": {\"pipelineId\": \"${pipelineId}\",\"buildNumber\": \"${BuildId}\",\"statusCode\": \"FAIL\"},
                      \"globalParams\": [{\"key\": \"BW_TENANT_ID\", \"value\": \"${BW_TENANT_ID}\"},{\"key\": \"BW_USER_ID\", \"value\": \"${BW_USER_ID}\"},
                      {\"key\": \"BW_DEPLOYMENT_CODE\", \"value\": \"${BW_DEPLOYMENT_CODE}\"}]}")
      
        if [ $(echo "${result}" | grep -c '"code":"OK"') = 0 ] ; then
          echo "更新流水线状态 [  失败  ] - $result"
          exit 1
        else
          echo "更新流水线状态 [  成功  ]"
        fi
      }
      
      code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} ${BW_DOMAIN_NAME})
      echo ${code}
      if [ "${code}" != 200 ];then
        echo "访问 ${BW_DOMAIN_NAME} 地址异常"
        updateStatus
        exit 1
      fi
      
      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}"
        updateStatus
        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 "检查部署状态 [  取消  ]"
          updateStatus
          exit 1
        elif [ $(echo ${status} | grep '"code":"OK"' | grep 'Failed' | wc -l) = 1 ] ; then
          echo "检查部署状态 [  失败  ]"
          updateStatus
          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 "检查部署状态 [  失败  ]"
          updateStatus
          exit 1
        fi
      done
      编辑流水线页面,您可以查看到新建的节点。1
    • 删除节点。单击1图标。
上一篇:创建基于镜像部署的流水线 下一篇:轻应用组装平台

    天下网标王信阳百度网站优化公司澜沧网站优化价格全网网站快速排名优化技巧教育行业网站优化引流快速优化网站顺云速捷声名网站搜索优化先询火25星推猎流网站优化好不好潮州网站优化效果如何咸宁工厂网站优化南昌专业的网站seo如何优化周口网站关键词优化代理衡阳网站优化联系方式网站代码优化那些长乐关键词网站优化网站加入什么关键词好优化江门网站优化设计市南手机网站优化新乡网站seo优化怎么选网站备案可以优化吗网站优化seo最终详解立优seo网站优化天津网站排名优化大师眉山优化网站多少钱亳州网站首页优化价格沧州网站优化托管收费成华区什么是网站优化丰润网站优化推荐芝罘区商城网站优化公司山东网站优化优化公司优化企业网站选择金苹果霸屏香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

    天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化