更新时间:2024-10-16 GMT+08:00

应用中创建组件

功能介绍

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

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

URI

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

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户项目ID。获取方法,请参考获取项目ID

application_id

String

应用ID。获取方法,请参考获取所有应用

请求消息

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

消息体的类型(格式),默认取值为“application/json;charset=utf8”。

X-Auth-Token

String

调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token

表3 请求Body参数

参数

是否必选

参数类型

描述

name

String

应用组件名称。

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

runtime

String

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

category

String

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

sub_category

String

应用组件子类型。

Webapp的子类型有Web。

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

Common的子类型可以为空。

description

String

描述。

最大长度为128个字符。

source

Object

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

build

Object

组件构建,请参考表8

表4 source

参数

是否必选

参数类型

描述

kind

String

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

spec

Object

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

表5 code spec

参数

是否必选

参数类型

描述

repo_type

String

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

repo_url

String

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

repo_ref

String

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

repo_auth

String

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

表6 artifact spec

参数

是否必选

参数类型

描述

storage

String

存储方式,支持软件仓库swr、镜像仓库swr、对象存储obs、软件发布库codearts。

type

String

类别。

  • 虚拟机部署支持软件包package。
  • 容器部署支持软件包package、镜像包image。

url

String

软件包/源码地址。

auth

String

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

properties

Object

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

webUrl

String

软件仓库地址。

表7 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。

表8 build

参数

是否必选

参数类型

描述

parameters

Map<String, Object>

请参考表9

只在没有ID,新创建构建时提供。

表9 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是标签的值。

响应消息

表10 响应参数

参数

参数类型

描述

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、Spring Cloud。

Common的子类型可以为空。

description

String

描述。

project_id

String

项目ID。

application_id

String

应用ID。

source

Object

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

build

Object

构建工程,请参考表15

create_time

Integer

创建时间。

update_time

Integer

修改时间。

creator

String

创建者。

表11 source

参数

参数类型

描述

kind

String

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

spec

Object

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

表12 code spec

参数

参数类型

描述

repo_type

String

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

repo_url

String

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

repo_ref

String

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

repo_auth

String

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

表13 artifact spec

参数

参数类型

描述

storage

String

存储方式。

type

String

类别。

url

String

软件包/源码地址。

auth

String

认证方式。

properties

Object

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

表14 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。

表15 build

参数

参数类型

描述

id

String

类型。

parameters

Map<String, Object>

请参考表16

表16 parameters

参数

参数类型

描述

build_cmd

String

编译命令。

dockerfile_path

String

dockerfile地址。

artifact_namespace

String

构建归档组织。

cluster_id

String

指定构建集群的id。

node_label_selector

Map<String, String>

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

请求示例

创建软件包部署的应用微服务组件,运行时设置为Java8,组件软件包来源选择存储在obs下myapp桶中的demo.jar包。

{
	"name": "mycomponent",
	"runtime": "Java8",
	"category": "MicroService",
	"sub_category": "Java Chassis",
	"description": "",
	"build": {
		"parameters": {
			"artifact_namespace": "ns",
			"use_public_cluster": false,
			"cluster_id": "523498f1-36c4-11eb-ae36-0255ac1000c2",
			"cluster_name": "cce-test",
			"cluster_type": "VirtualMachine"
		}
	},
        "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",
			"dockerfile_path": "./"
		}
	},

	"status": 0,
	"creator": "test_user",
	"create_time": 1610333934288,
	"update_time": 1610333934288
}

状态码

状态码

描述

200

操作成功

400

错误的请求

404

请求对象不存在

500

内部错误

错误码

错误码格式为:SVCSTG.00100.[Error_ID],例如:SVCSTG.00100400。错误码说明请参考ServiceStage错误码