• 应用模板

    应用模板是将同类型应用的代码库结构整理成模板,用于创建应用时能引用相应模板快速创建初始代码库。每种非空应用模板至少都包括 Dockerfile 文件、CI 文件以及 Chart 目录文件。

    平台提供默认的常用模板,用户可以根据实际情况自定义符合更多需求的应用模板。

    预置应用模板

    系统中已经预置了几种应用模板,其中包括 JavaLib(jar库)MicroServiceFront(web前端应用模板)MicroService(微服务应用模板)ChoerodonMochaTemplate(mocha测试框架模板)在创建应用时可以根据自己的需求选择应用模板,进行快速开发,预定义模板不可操作。

    测试应用模板的使用

    mocha api 测试框架为 Nodejs 类型的前端项目,下面会介绍一下项目结构与使用方法。

    项目结构如下

    |--charts
        |--model-service    
          |--templates               
            |--automation-test.yaml
          |--.helmignore
          |--Chart.yaml
          |--values.yaml
    |--test
        |--apiFunction
            |--statusService
                |--statusFunction.js
        |--apiTest
            |--statusService
                |--statusApi.test.js
            |--index.js
    |--.babelrc
    |--.dockerignore
    |--.eslintrc.json
    |--.gitignore
    |--.gitlab-ci.yml
    |--Dockerfile
    |--Utils.js
    |--config.yaml
    |--package.json
    |--run.sh
    

    其中需要说明的有如下几点:

    1. helm chart 包中的 values.yaml 文件修改之前请谨慎阅读readme文件,以防修改错误导致自动化测试执行失败。
    2. Dockerfile 以及 run.sh 请谨慎修改。自动化测试的基本原理为:在所需环境执行自动化测试,然后调用测试管理服务接口将测试报告打包回传。如修改这两个文件可能会对结果解析产生未知影响。
    3. config.yaml 文件为本地启动测试应用使用,在自动化应用部署的时候以 values.yaml 文件为准。
    4. Utils.js 文件负责对环境变量进行解析,请谨慎修改。
    5. package.json 中已经引用了的包请谨慎删除或升级版本。
    6. 测试代码的业务逻辑应写在 test 文件夹中,模板中已有一个示例,为 iam-serviceself 接口。如下:

      describe('Status Api-SELF', () => {
        it('[GET] 查询自身状态', () => {
              
          /**
          * @data  用户token
          * @expect  正确的用户状态
          * 
          */
          return statusFunc.getStatus();
        });
      });
      

      在解析测试结果的过程中,每一个 describe 会对应生成一个测试用例,每一个 it 会对应生成一个测试步骤。 @data 后的内容会转化为测试步骤的测试数据, @expect 后的内容会被转化为测试步骤的预期结果。如无这两项注释会造成测试步骤中 测试数据 以及 测试结果 的缺失。

    7. .gitlab-ci.yml 中定义了两个ci步骤,分别为:下载依赖、使用devops服务生成版本号打镜像。测试应用使用ci版本号是为了通过使用相同镜像可以保证测试逻辑不变,从而复用已导入的测试用例。

    如对模板有任何疑问,请上论坛提问

    创建应用模板

    输入应用模板编码名称描述,创建默认最简模板,步骤如下。您也可以通过复制于现有模板,以便节省部分共同操作,提升效率。

    1. 点击创建应用模板按钮;
    2. 输入应用相关信息,进行数据校验
      • 模板编码:编码只能由小写字母、数字、”-“组成,且以小写字母开头,不能以”-“结尾,并且是唯一的,不能与其他的模板编码相同。
      • 模板名称:名称要求唯一,不能与其他的模板名称相同。
      • 模板描述:不允许为空。
    3. 点击创建按钮;
    4. 本地克隆应用模板对应的代码库。一个正确的模板中应该包含: Spring-boot 项目+ Gitlab-ci.yml 文件+ Dockerfile 文件+ Charts 模块。

      Spring-boot 项目: 生成应用时的初始项目

      Gitlab-ci.yml 文件: 定义 Gitlab CI 的阶段

      Dockerfile 文件: 用于应用部署时生成镜像

      Charts 模块: 用于创建应用时生成创建 k8s 对象

      如: Deployment job service ingress ,部署时配置信息里的 Key-value 值会被应用到对应的 k8s 对象中用于部署。

    创建前端应用模板

    当应用模板不符合您的要求,你可手动创建一个应用模板。具体步骤如下:

    1. 选择组织后,在组织层的应用管理模块,选择应用模板

    2. 输入应用相关信息,进行数据校验

      • 模板编码:编码只能由小写字母、数字、”-“组成,且以小写字母开头,不能以”-“结尾,并且是唯一的,不能与其他的模板编码相同。
      • 模板名称:名称要求唯一,不能与其他的模板名称相同。
      • 模板描述:不允许为空。
    3. 点击创建,即可创建一个模板;

    4. 创建完成以后,会生成一个 Gitlab 地址,点击该地址;

    5. 进入 Gitlab 仓库,克隆代码;

    6. 创建一个 React 的前端UI项目;

    7. 编写一个Dockerfile;

      将 Dockerfile 文件放在项目根目录下

      FROM registry.choerodon.io/tools/nginx:stable
      RUN echo "Asia/shanghai" > /etc/timezone;
      ADD dist /usr/share/nginx/html
      COPY entrypoint.sh .
      ENTRYPOINT [ "sh","./entrypoint.sh" ]
      

      entrypoint.sh文件如下

      #bin/bash
      set -e
      
      PRO_API_HOST=${PRO_API_HOST:-"gateway.devops.saas.choerodon.com"}
      PRO_CLIENT_ID=${PRO_CLIENT_ID:-"devops"}
      
      find /usr/share/nginx/html -name '*.js' | xargs sed -i "s/localhost:8080/$PRO_API_HOST/g"
      find /usr/share/nginx/html -name '*.js' | xargs sed -i "s/localhost:clientId/$PRO_CLIENT_ID/g"
      
      nginx -g 'daemon off;'
      
      exec "$@"
      
    8. 编写 Gitlab-CI 文件

        image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/cifront:0.5.0    
      

      image 指 CI 运行基础镜像。

          stages:
          -  node_build
          -  docker_build
      

      stages指包含 node_build 和 docker_build 两个阶段 。

        node_build_dev:
          stage: node_build
          script:
            - node_config
            - node_module iam
            - node_build devbuild
            - clean_cache
          only:
            - /^release-.*$/
            - /^hotfix-.*$/
            - develop
            - tags
      

      node_build_dev 指 job 名称。

      stage 指对应的阶段。

      script 指执行的命令。

      only 指触发的分支。

         .auto_devops: &auto_devops |
             curl -o .auto_devops.sh \
                   "${CHOERODON_URL}/devops/ci?token=${Token}&type=microservice"
              source .auto_devops.sh
      

      .auto_devops: 从指定仓库地址中拉取 script 脚本 用于 docker-build 阶段。

         before_script:
        
           - *auto_devops
      

      before_script 指 ci 执行前所执行的命令。

    9. 编写 charts 模块;

      目录结构如下

      |--charts
         |--model-service    
            |--templates               
              |--_helper.tpl
              |--deplopment.yaml
            |--.helmignore
            |--Chart.yaml
            |--values.yaml  
      

      templates为模板文件,将模板文件渲染成实际文件,然后发送给 Kubernetes。

      values.yaml为模板的预定义变量。

      Chart.yaml包含 chart 的版本信息说明,您可以从模板中访问它。

      deployment.yaml:创建 Kubernetes 部署的基本清单。

      _helpers.tpl:放置模板助手的地方,您可以在整个 chart 中重复使用。

    10. 编写 config.js;

    11. 提交代码,即可完成模板创建。

    创建后端应用模板

    当应用模板不符合您的要求,你可手动创建一个应用模板。具体步骤如下:

    1. 选择组织后,在组织层的应用管理模块,选择应用模板

    2. 点击创建应用模板,输入相关信息进行数据校验,点击创建,即可创建一个模板;

    3. 创建完成以后,会生成一个 Gitlab 地址,点击该地址;

    4. 进入 Gitlab 仓库,克隆代码;

    5. 创建一个 spring-boot 项目

    6. 目录结构如下:

      |--src
      |--main 
          |--docker        
          |--dockerfile
      
    7. 编写一个 dockerfile;

      FROM registry.choerodon.io/choerodon-cloud/base
      
      COPY app.jar /app.jar
      
      ENTRYPOINT [ "java", "-jar", "/app.jar"] 
      
    8. 编写 Gitlab-ci 文件

      image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/cibase:0.5.0   
      

      image 指 ci 运行基础镜像。

          stages:
          -  node_build
          -  docker_build
      

      stages 指包含 maven-package 和 docker-build 两个阶段。

          maven-feature:
              
          stage: maven-package
              
          script:
              
           - git_merge develop
              
           - update_pom_version
              
           - mvn package -U -DskipTests=false
                  
          only:
              
           - /^feature-.*$/
      

      maven-feature 指 job 名称。

      stage 指对应的阶段。

      only 指触发的分支。

      .auto_devops: &auto_devops |
          
         curl -o .auto_devops.sh \
          
               "${CHOERODON_URL}/devops/ci?token=${Token}&type=microservice"
          
          source .auto_devops.sh
      

      .auto_devops: 从指定仓库地址中拉取 script 脚本 用于 docker-build 阶段。

          before_script:
              
           - *auto_devops
      

      before_script:ci 执行前所执行的命令

    9. 编写 charts 模块

      目录结构如下:

      |--charts
         |--model-service    
            |--templates               
              |--_helper.tpl
              |--deplopment.yaml
              |--pre-config-congig.yaml
              |--pre-config-db.yaml
              |--service.yaml
            |--.helmignore
            |--Chart.yaml
            |--values.yaml  
      

      templates为模板文件,将模板文件渲染成实际文件,然后发送给 Kubernetes。

      values.yaml为模板的预定义变量。

      Chart.yaml包含 chart 的版本信息说明,您可以从模板中访问它。

      deployment.yaml:创建 Kubernetes 部署的基本清单。

      service.yaml:为您的部署创建服务端点的基本清单。

      _helpers.tpl:放置模板助手的地方,您可以在整个 chart 中重复使用。

    10. 提交代码,即可完成模板创建。

    创建Java库应用模板

    当应用模板不符合您的要求,你可手动创建一个应用模板。具体步骤如下:

    1. 选择组织后,在组织层的应用管理模块,选择应用模板

    2. 点击创建应用模板,输入相关信息进行数据校验,点击创建,即可创建一个模板;

    3. 创建完成以后,会生成一个 Gitlab 地址,点击该地址;

    4. 进入 Gitlab 仓库,克隆代码;

    5. 创建一个普通 Java 应用;

    6. 编写一个 Gitlab CI;

      stages:
          - mvn-package
      

      stages 定义 CI 中包含的阶段。

      maven-branches:
        stage: mvn-package
        script:
          - update_pom_version
          - mvn clean && mvn package -U -DskipTests=false
        only:
          - develop
          - /^release-.*$/
          - /^hotfix-.*$/
          - /^feature-.*$/
        except:
          - tags
      

      maven-branches 指 job 名称。

      stage 指对应的阶段。

      script 指执行的命令。

      only 指触发的分支。

      except 指不会触发的分支。

          .auto_devops: &auto_devops |
                     curl -o .auto_devops.sh \
                           "${CHOERODON_URL}/devops/ci?token=${Token}&type=lib"
                      source .auto_devops.sh
      

      .auto_devops:从指定仓库地址中拉取 script 脚本 用于 docker-build 阶段。

          before_script:
                  
           - *auto_devops
      

      before_script:指 ci 执行前所执行的命令。

    7. 提交代码。

    查看应用模板详情

    在详情界面根据应用模板名称、应用模板编码、应用模板描述、应用模板地址、应用模板来源来查看应用模板详情。

    1. 应用模板名称:应用模板的自定义名称;
    2. 应用模板编码:应用模板的自定义编码;
    3. 应用模板描述:应用模板的自定义描述;
    4. 应用模板地址:应用模板的 Git 仓库地址;
    5. 应用模板来源:有预定义和自定义两种来源。预定义是 Choerodon 系统预置的模板;自定义是由用户自己创建的模板;

    修改模板信息/删除模板

    若删除模板,该条数据将被永久删除,不可恢复!

    更多操作