更新时间:2022-12-05 GMT+08:00

应用中创建组件

功能介绍

应用组件是组成应用的某个业务特性实现,以代码或者软件包为载体,可独立部署运行。

此API用来在应用中创建组件。

URI

POST /v2/{project_id}/cas/applications/{application_id}/components

表1 路径参数

参数

参数类型

必选

描述

project_id

String

租户项目ID

application_id

String

应用ID

请求消息

表2 请求参数

参数

参数类型

必选

描述

name

String

应用组件名称。

由大小写英文字母、数字、中划线(-)、下划线(_)组成,并以大小写英文字母开头,大小写英文字母或者数字结尾,长度为2~64个字符。

runtime

String

运行时,可查询获取所有支持的应用组件运行时类型接口返回的type_name获取。

category

String

应用组件类型如:Webapp、MicroService、Common。

sub_category

String

应用组件子类型。

Webapp的子类型有Web。

MicroService的子类型有Java Chassis、Go Chassis、Mesher、Spring Cloud、Dubbo。

Common的子类型可以为空。

description

String

描述。

最大长度为128个字符。

source

Object

代码/软件包来源,参考表3

build

Object

组件构建,参考表7

表3 source参数

参数

参数类型

必选

描述

kind

String

类型,支持源码code和artifact软件包。

spec

Object

对应code请参考表4;对应artifact请参考表5

表4 code spec参数

参数

参数类型

必选

描述

repo_type

String

代码仓类型,支持GitHub、GitLab、Gitee、Bitbucket。

repo_url

String

代码仓url,如:https://github.com/example/demo.git。

repo_ref

String

代码分支或者Tag,默认是master。

repo_auth

String

授权名称,在授权列表获取。

表5 artifact spec参数

参数

参数类型

必选

描述

storage

String

存储方式,支持对象存储obs。

type

String

类别,支持package。

url

String

软件包地址。

auth

String

认证方式,支持iam,none,默认是iam。

properties

Object

软件包的其他属性,只有在选择对象存储obs的时候才需要添加。参考表6

表6 artifact spec properties参数

参数

参数类型

必选

描述

endpoint

String

obs的终端地址,如:https://obs.region_id.external_domain_name.com。

bucket

String

软件包在obs的桶名。

key

String

obs桶中的对象,一般是软件包名,有文件夹的话要加上文件夹的路径。比如test.jar或者demo/test.jar。

表7 build参数

参数

参数类型

必选

描述

parameters

Map<String, Object>

请参考表8

表8 parameters参数

参数

参数类型

必选

描述

build_cmd

String

编译命令。默认:

  1. 根目录存在build.sh:./build.sh
  2. 根据运行系统,示例如下:

    Java和Tomcat:mvn clean package

    Nodejs: npm build

dockerfile_path

String

dockerfile地址。默认是根目录./。

artifact_namespace

String

构建归档组织,默认cas_{project_id}。

cluster_id

String

指定构建集群的id。

node_label_selector

Map<String, String>

key是标签的键,value是标签的值。

响应消息

表9 响应参数

参数

参数类型

描述

id

String

应用组件ID。

name

String

应用组件名称。

status

Integer

取值0或1。

0:表示正常状态。

1:表示正在删除。

runtime

String

运行时。

category

String

应用组件类型如:Webapp、MicroService、Common。

sub_category

String

应用组件子类型。

Webapp的子类型有Web。

MicroService的子类型有Java Chassis、Go Chassis、Mesher、Spring Cloud、Dubbo。

Common的子类型可以为空。

description

String

描述。

project_id

String

项目ID。

application_id

String

应用ID。

source

Object

代码/软件包来源,请参考表10

build

Object

构建工程,请参考表14

pipeline_ids

id list

流水线Id列表,最多10个。

create_time

Integer

创建时间。

update_time

Integer

修改时间。

creator

String

创建者。

表10 source参数

参数

参数类型

描述

kind

String

类型,支持源码code和artifact软件包。

spec

Object

对应code请参考表11;对应artifact请参考表12

表11 code spec参数

参数

参数类型

描述

repo_type

String

代码仓类型,支持GitHub、GitLab、Gitee、Bitbucket。

repo_url

String

代码仓url,如:https://github.com/example/demo.git。

repo_ref

String

代码分支或者Tag,默认是master。

repo_auth

String

授权名称,在授权列表获取。

表12 artifact spec参数

参数

参数类型

描述

storage

String

存储方式。

type

String

类别。

url

String

软件包/源码地址。

auth

String

认证方式。

properties

Object

软件包的其他属性,只有在选择对象存储obs的时候才需要添加。参考表13

表13 artifact spec properties参数

参数

参数类型

必选

描述

endpoint

String

obs的终端地址,如:https://obs.region_id.external_domain_name.com。

bucket

String

软件包在obs的桶名。

key

String

obs桶中的对象,一般是软件包名,有文件夹的话要加上文件夹的路径。比如test.jar或者demo/test.jar。

表14 build参数

参数

参数类型

描述

ID

String

类型。

parameters

Map<String, Object>

请参考表15

表15 parameters参数

参数

参数类型

描述

build_cmd

String

编译命令。

dockerfile_path

String

dockerfile地址。

artifact_namespace

String

构建归档组织。

cluster_id

String

指定构建集群的id。

node_label_selector

Map<String, String>

key是标签的键,value是标签的值。

示例

请求示例

{
	"name": "mycomponent",
	"runtime": "Java8",
	"category": "MicroService",
	"sub_category": "Java Chassis",
	"description": "",
	"build": {
		"parameters": {
			"artifact_namespace": "ns"
		}
	},
        "source": {
		"kind": "artifact",
		"spec": {
			"storage": "obs",
			"type": "package",
			"url": "obs://myapp/demo.jar",
			"properties": {
				"bucket": "myapp",
				"key": "demo.jar",
				"endpoint": "https://obs.region_id.external_domain_name.com"
			}
		}
	}
}

响应示例

{
	"id": "384eb8d4-c193-4d84-9558-6fda2366b536",
	"name": "mycomponent",
	"runtime": "Java8",
	"category": "MicroService",
	"sub_category": "Java Chassis",
	"description": "",
	"project_id": "384eb8d4-c193-4d84-9558-6fda23698536",
	"application_id": "a8f7eed5-0aa0-4251-9723-c9119a6bf56d",
        "source": {
		"kind": "artifact",
		"spec": {
			"storage": "obs",
			"type": "package",
			"url": "obs://myapp/demo.jar",
			"properties": {
				"bucket": "myapp",
				"key": "demo.jar",
				"endpoint": "https://obs.region_id.external_domain_name.com"
			}
		}
	},
	"build": {
		"id": "w3dpv7p0t1vpxvey5hjb22iuwxway1vupwx0nae1",
		"parameters": {
			"artifact_namespace": "ns",
			"use_public_cluster": true
		}
	},
	"pipeline_ids": null,
	"status": 0,
	"creator": "xxx",
	"create_time": 1610333934288,
	"update_time": 1610333934288
}

状态码

表16 状态码说明

状态码

描述

200

操作成功

400

错误的请求

404

请求对象不存在

500

内部错误

错误码

错误码格式为:SVCSTG.00100.[Error_ID],例如:SVCSTG.00100400。错误码说明请参考应用管理API错误码