CICD融合工具用户手册V1.1

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

CICD融合工具用户手册V1.1

1. 基本概念

1.1 目的

本文档主要介绍金蝶云苍穹轻轨线(CI/CD)融合工具的产品说明,包括:应用场景、产品原理、使用步骤等。旨在方便使用工具的相关架构师、工程师、运维人员快速了解轻轨线(CI/CD)融合工具的工作原理及实现方式,帮助其基于第三方DevOps平台快速实现苍穹CICD。


1.2 应用场景

金蝶云苍穹CICD融合工具的应用场景是为已经具备DevOps平台的苍穹二开客户,在自有平台基础上集成该工具,从而实现自动化苍穹二开打包及部署。


1.3 功能介绍

▲ 轻轨线(CI/CD)融合工具产品原理图


步骤说明:

该工具以镜像方式提供,安装后以容器实例方式运行在用户的容器平台;

用户基于第三方DevOps平台实现苍穹Jar包构建并将制品存放在相应路径(可以是文件服务器或制品仓库);

调用CI/CD融合工具的接口实现Jar包、元数据、静态资源打包,并存放到目标制品仓库;

调用CI/CD融合工具的接口从制品库获取二开包并更新到目标苍穹环境;

用户重启苍穹服务。如使用的是苍穹版本不低于V5.0.019及MC版本不低于V5.0.022时,则可以通过接口调用monitor优雅重启;如使用的苍穹版本低于V5.0.019及MC版本低于V5.0.022时,则用户需手动或脚本实现服务重启;

继续调用工具更新元数据。



2. 下载安装

服务的下载及安装,请参考文档《轻轨线(CI/CD)融合工具v1.0部署手册》


3. 使用指南

3.1 OMP初始化

3.1.1 初始化admin

服务安装完成后,登录轻轨线(CI/CD)运营管理后台(简称OMP),进行admin账户初始化。OMP有且只有一个用户(admin),用于操作许可、查看日志、密钥获取、token加密等,用户名admin不可变更,用户需初始化登录密码,如下图:



3.1.2 导入许可

轻轨线(CI/CD)融合工具的许可申请可参考社区文档《轻轨线获取并激活许可》,申请流程中所需的“软件特征码”可在OMP的“许可管理”页面查看并复制。

下载完许可后,登录OMP,在“许可管理”页面“导入许可”即可,如下图:

注意:

用户在使用时,只需要下载轻轨线(CI/CD)模块即可,如上图中红框所示。


3.2 Jar包构建

源代码构建完成后,需要将jar包再按云编码-应用编码.zip的命名方式(如fi-bos.zip)打包并上传至客户方能够通过URL下载的文件服务器或制品库中,如NEXUS等。


3.3 生成苍穹二开包

3.3.1 CI流水线配置

接下来的步骤是在用户的流水线调用融合工具的API进行二开包构建,把已经构建好的Jar包和元数据、静态资源等合并为一个苍穹标准二开包。将附件一(生成苍穹二开包)中的脚本复制到第三方流水线的节点。该脚本是第三方流水线调用融合工具的逻辑,其中需要传参如下图所示:


上传图片


重点事项:

header中的token参数从融合工具OMP获取,参考步骤3.3.2

访问制品仓库/文件服务器(获取Jar包)及git仓库(获取元数据和静态资源)的token需进行加密,加密方法参考文档3.3.3

注意:制品仓库中token需要先对其用户名和密码进行base64编码后,再使用文档中3.3.3部分的方式进行加密

上述三个传参模块包括了元数据、静态资源,如没有对应模块,可根据实际情况留空。


3.3.2 获取API的token

为确保调用安全,在请求头需填入融合工具API密钥以确认身份。操作步骤为:【融合工具OMP】-【API密钥管理】页面,点击“新建密钥”会自动生成访问融合工具的API密钥,最多可生成10个,供项目上不同组织分配并使用。


3.3.3 第三方组件token加密

为实现对客户的制品仓库、git仓库、MC第三方应用的安全访问,需对客户第三方组件的token、key进行加密后才能使用,有两种方式进入API加密界面:

操作路径①:登录【融合工具OMP】- 右上角【账户信息】– 【token加密工具】

操作路径②:在【融合工具OMP登录页】- 登录键下方“token加密工具”


在下图所示的界面进行token加密,并将加密后的参数配置在流水线节点。


3.4 部署苍穹二开包

完成了CI流水线配置,接下来进行CD流水线的配置。苍穹CD的脚本配置分为两种情况,“支持monitor优雅重启”和“仅支持容器重启”,我们将分别介绍:


注意:只有当苍穹版本不低于V5.0.019及MC版本不低于V5.0.022时,才能使用苍穹优雅重启;当苍穹及MC不满足版本要求时,由客户手工或添加脚本逻辑实现服务重启。


3.4.1 支持monitor优雅重启的脚本配置

将附件二(更新苍穹)中的脚本复制到CD节点。CD所需的传参如下图所示:


重点说明:

融合工具API的获取方式与CI流水线相同,参考3.3.2;

第三方组件的token加密方式,参考3.3.3;

“package_name”为升级的补丁包名称,如没指定默认填“auto”,即更新最新的补丁包;

“graceful_restart”参数控制苍穹服务重启方式,只有当苍穹及MC版本不低于V5.0.020时,才能使用苍穹优雅重启,填入参数“true”;

苍穹环境的相关参数获取方式如下:


COSMIC_DATACENTER_ID:mc中的数据中心ID,通过mc系统查看,操作路径:【租户列表】→ 【租户】→ 【数据中心】。


COSMIC_CLUSTER_ID:mc中的集群ID。


MC_TRD_APPID:mc中第三方应用ID。


MC_TRD_KEY:mc中的第三方应用key,首次进入时点击刷新图标即能看到数据;如果没有看到此界面,则需要更新mc的内核和版本。


注意:

1、点击[刷新]后,需要点击[保存]按钮,key才能保存成功;

2、MC第三方应用页面交互不同版本可能略微不一致,如果看到多种认证方式或者访问策略,请选择“摘要认证”获取相关的认证秘钥,点击查看配置详情


直接获取第三方应用key


选择摘要认证获取第三方应用key


    

选择摘要认证获取第三方应用key




配置完成后运行即可实现苍穹CD。


3.4.2 仅支持容器重启的脚本配置

当用户的苍穹版本低于V5.0.019及mc的版本低于V5.0.022时,无法执行优雅重启,只能在执行完Jar包更新后,手工重启服务,或由用户实现服务自动重启,然后再增加流水线节点更新元数据。


节点一:附件二(更新苍穹)中的脚本复制到CD节点,并替换参数;

节点二:用户实现服务重启;

节点三:附件三(更新元数据)中的脚本复制到CD节点,并替换参数。


与monitor优雅重启的参数配置及获取途径基本相同,可参考文档的3.4.1部分,唯一的区别在于当采用容器重启的方式时,参数“graceful_restart”填入“false”。配置完成后即可运行。


3.5 日志查看

可通过界面查看接口调用情况,操作路径:登录OMP -【接口调用日志】- “查看详情”或“运行日志”




3.6 操作审计

如需查看admin账户的历史操作,可登录管理后台,在“操作审计”页面查询,如下图:

4. 附件

附件一:生成苍穹二开包

echo "融合工具-生成苍穹二开包"

host=http://172.17.1.125:32528

api=/api/generate_package


http_code=`curl -s -o response.txt -w"%{http_code}" $host/ajax$api \

--header 'Token: LtbBbQ5ast/uHEkHUIXFeVkNy7w0Ncx/79Kgfs9I+aw=' \

--header 'Content-Type: application/json' \

--data   '{

   "repo": {

       "type":"basic_auth",

       "token": "iBzXcGTYuZZoVUORPn5SrQ+OXzQomncAqSZ0TIqfSudSNqkv",

       "download_jars": [

           "http://172.17.6.209:31532/repository/test_ci_l-f64318d552f64a599329df313bdad985/app/4.0.004.0/app-v1-202303201630.1.zip",

           "http://172.17.6.209:31532/repository/test_ci_l-f64318d552f64a599329df313bdad985/app/4.0.004.0/app-v1-202303201640.2.zip"

       ],

       "upload_url": "http://172.17.6.209:31532/service/rest/v1/components?repository=test_ci_l-f64318d552f64a599329df313bdad985",

       "upload_package_path": "/path",

       "service_name":"abtest"

   },

   "metadata": {

       "cosmic_version": "5.0.11",

       "git_url": "http://172.17.6.212:31896/10000/10000/d5b9c1389b26473e8d0763b7aff7f876/demo.git",

       "branch": "master",

       "token": "uwX9Z1G4oNhMXn6HIhli7geoXkScC8560dKZ3qLdtV085b5b",

       "apps": [

           {

               "app_id": "scmc-pm",

               "metadata_path": "demo/fi/app01/datamodels/metadata",

               "dbscripts_path": "demo/fi/app01/dbscripts"

           }

       ]

   }

}'`


if [ $http_code != "200" ]; then

   echo "http_code: $http_code"

   cat response.txt

   exit 1

fi


resp=`cat response.txt` && log_id=${resp:19:32} && api_uuid=${resp:65:32}


while(true);do

 sleep 5

 http_code=`curl -o log.txt -w"%{http_code}" -XGET "$host/ajax/api/run_log?workspace=$log_id&api_uuid=$api_uuid&simple=true&api=$api"`

 if [ $http_code != "200" ]; then

   echo "read log fail, http_code: $http_code"

   exit 1

 fi

 run_status=`cat log.txt | sed 's/\"//g'`

 if [[ $run_status == "success" ]]; then

   echo "upgrade success."

   break

 elif [[ $run_status == "error" ]]; then

   log=`curl -XGET "$host/ajax/api/run_log?workspace=$log_id&api_uuid=$api_uuid"`

   echo "upgrade failed, please check more log"

   exit 1

 elif [[ $run_status == "running" ]]; then

   echo "Patch upgrading, please wait!"

 else

   echo "run status err $run_status"

   exit 1

 fi  

done


附件二:更新苍穹

host=http://172.17.1.125:32528

api=/api/upgrade_cosmic


http_code=`curl -k -s -o response.txt -w"%{http_code}"  -XPOST $host/ajax$api \

--header 'Token: LtbBbQ5ast/uHEkHUIXFeVkNy7w0Ncx/79Kgfs9I+aw=' \

--header 'Content-Type: application/json' \

--data '{

   "repo": {

       "type": "basic_auth",

       "token": "iBzXcGTYuZZoVUORPn5SrQ+OXzQomncAqSZ0TIqfSudSNqkv",

       "service_name": "abtest",

       "download_path": "http://172.17.6.209:31532/repository/test_ci_l-f64318d552f64a599329df313bdad985/path",

       "package_name": "abtest-20230911151423.zip"

   },

   "graceful_restart": false,

   "cosmic_mc_url": "http://172.17.6.210:32030/mc",

   "cosmic_datacenter_id": "1289896065000013824",

   "cosmic_cluster_id": "ierp",

   "mc_trd_appid": "unittest",

   "mc_trd_key": "MYRx3IWBxmTay0rYAxtKDg=="

}'`


if [ $http_code != "200" ]; then

   echo "http_code: $http_code"

   cat response.txt

   exit 1

fi



resp=`cat response.txt` && log_id=${resp:19:32} && api_uuid=${resp:65:32}


while(true);do

 sleep 5

 http_code=`curl -o log.txt -w"%{http_code}" -XGET "$host/ajax/api/run_log?workspace=$log_id&api_uuid=$api_uuid&simple=true&api=$api"`

 if [ $http_code != "200" ]; then

   echo "read log fail, http_code: $http_code"

   exit 1

 fi

 run_status=`cat log.txt | sed 's/\"//g'`

 if [[ $run_status == "success" ]]; then

   echo "upgrade success."

   break

 elif [[ $run_status == "error" ]]; then

   log=`curl -XGET "$host/ajax/api/run_log?workspace=$log_id&api_uuid=$api_uuid&api=$api"`

   echo "upgrade failed, please check more log"

   exit 1

 elif [[ $run_status == "running" ]]; then

   echo "Patch upgrading, please wait!"

 else

   echo "run status err $run_status"

   exit 1

 fi  

done


附件三:更新元数据

host=http://172.17.1.125:32528

api=/api/upgrade_metadata


http_code=`curl -s -o response.txt -w"%{http_code}"  -XPOST $host/ajax$api \

--header 'Token: LtbBbQ5ast/uHEkHUIXFeVkNy7w0Ncx/79Kgfs9I+aw=' \

--header 'Content-Type: application/json' \

--data '{

   "repo": {

       "type": "basic_auth",

       "token": "iBzXcGTYuZZoVUORPn5SrQ+OXzQomncAqSZ0TIqfSudSNqkv",

       "service_name": "abtest",

       "download_path":"http://172.17.6.209:31532/repository/test_ci_l-f64318d552f64a599329df313bdad985/cub/",

       "package_name": "auto"

   },

   "graceful_restart": false,

   "cosmic_mc_url": "http://172.17.6.210:32030/mc",

   "cosmic_datacenter_id": "1289896065000013824",

   "cosmic_cluster_id": "ierp",

   "mc_trd_appid": "unittest",

   "mc_trd_key": "MYRx3IWBxmTay0rYAxtKDg=="

}'`


if [ $http_code != "200" ]; then

   echo "http_code: $http_code"

   cat response.txt

   exit 1

fi



resp=`cat response.txt` && log_id=${resp:19:32} && api_uuid=${resp:65:32}


while(true);do

 sleep 5

 http_code=`curl -o log.txt -w"%{http_code}" -XGET "$host/ajax/api/run_log?workspace=$log_id&api_uuid=$api_uuid&simple=true&api=$api"`

 if [ $http_code != "200" ]; then

   echo "read log fail, http_code: $http_code"

   exit 1

 fi

 run_status=`cat log.txt | sed 's/\"//g'`

 if [[ $run_status == "success" ]]; then

   echo "upgrade success."

   break

 elif [[ $run_status == "error" ]]; then

   log=`curl -XGET "$host/ajax/api/run_log?workspace=$log_id&api_uuid=$api_uuid&api=$api"`

   echo "upgrade failed, please check more log"

   exit 1

 elif [[ $run_status == "running" ]]; then

   echo "Patch upgrading, please wait!"

 else

   echo "run status err $run_status"

   exit 1

 fi  

done

CICD融合工具用户手册V1.1

1. 基本概念1.1 目的本文档主要介绍金蝶云苍穹轻轨线(CI/CD)融合工具的产品说明,包括:应用场景、产品原理、使用步骤等。旨在方便使用...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息