华为云用户手册

  • 配置方法 目前仅支持通过YAML配置使用代码缓存,配置在env中,如何编写YAML文件请参考单任务YAML文件结构说明。 1 2 3 4 5 6 7 8 9 10 11 12 params: # 构建参数,可在构建过程中引用 - name: CLOUD_BUILD_UPLOAD_FLAG # 参数为有值和为空两种状态,可控制跳过缓存上传至文件服务器 value: true - name: CLOUD_BUILD_REMOTE_CACHE # 参数为有值和为空两种状态,可控制会从其他执行机获取缓存 value: true env: cache: # 使用代码缓存 - type:code #必填,使用缓存开关 local_path:code # 必填,代码在构建执行机上存放的相对路径 command:dos2unix build.sh && sh build.sh # 必填 branch:master # 选填,分支名,可自定义,与url一起确定缓存标签 url:git@codehub.devcloud.example.example.com:test/python3.git # 选填,可自定义,与branch一起确定缓存标签
  • 规则说明 2020年10月16日前,未在CodeArts某个区域下产生过费用的用户,按照新版计费规则,需在该区域开通/购买CodeArts或单独购买CodeArts Build套餐后使用。 在该区域内产生过费用的用户,延续旧版计费规则,可参考购买服务在该区域开通编译构建服务包年/包月套餐。 例如: 用户于2020年3月在“华北-北京四”购买了半年期的包月套餐。由于疫情影响业务,套餐到期后关闭了CodeArts服务;2020年10月20日将重新启用CodeArts。 若用户仍使用“华北-北京四”,可以购买旧版套餐使用。 若用户使用其它区域,则需购买CodeArts或者编译构建服务新版计费。 更多计费详情,请参考计费说明。
  • 购买服务 进入购买编译构建服务页面。 确认服务规格信息,单击“免费开通”。 表1 资源规格 资源项 资源规格 构建时长(分钟/月) 1800分钟/月。 构建并发(个) 1个内置执行机(2U8G)和1个自定义执行机并发。 确认套餐包配置信息,勾选“我已经阅读并同意”协议,单击页面右下角“立即开通”,即可下单成功。 表2 套餐包配置 配置项 配置详情 计费模式 包年/包月。 区域 选择需要使用的区域。不同区域购买的资源不能跨区使用,需慎重选择。 产品 选择“Build专业版”。 产品描述 免费使用构建时长1800分钟/月,单租户1个内置执行机(2U8G)并发和1个自定义执行机并发,使用限制性资源池,超过并发数时构建任务会进行排队。用户可额外购买构建加速包提升效率和购买构建并发包扩容。 购买时长 选择“1个月”。 自动续费 勾选后将开启自动续费。自动续费规则请参考自动续费规则说明。 下单成功即服务开通成功。
  • 购买须知 在CodeArts支持的区域内,各区域独立开通购买、独立计费。 您可以购买CodeArts Build套餐,或者开通/购买软件开发生产线服务组合套餐,体验一站式、全流程、安全可信的软件开发生产线。 购买编译构建服务需要您拥有租户账号,或拥有Tenant Administrator权限的IAM用户账号,配置权限策略方法请参考创建用户组并授权。 若已经购买了CodeArts套餐,则无需再单独购买CodeArts Build套餐。
  • 加速前准备 在一般的构建工程中,其构建过程大致分为构建前准备(工具链、代码仓)、构建依赖件准备(ninja文件生成)、编译构建、构建后操作(打包、检查等)。其中,构建加速介入编译构建阶段,对此前的构建过程中生成的构建依赖件进行解析,并执行编译。 在配置构建加速前,需如下准备: 找到构建依赖件准备的节点,以OpenHarmony为例,一个形态的编译命令如下: 1 ./build.sh --product-name rk3568 --build-target make_all --build-target make_test --ccache false -v 准备好构建使用的docker镜像,基于该docker镜像制作新镜像:在dockerfile中增加“/opt/buildtools”目录供加速工具部署,并确保构建用户对“/opt/buildtools”目录有权限写入。参考命令如下: 1 RUN mkdir -p /opt/buildtools && chmod -R 777 /opt/buildtools 父主题: 鸿蒙构建加速
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 version: 2.0 # 必须是2.0 steps: BUILD: - maven: image: cloudbuild@maven3.5.3-jdk8-open # 可以自定义镜像地址 inputs: settings: public_repos: - https://mirrors.example.com/maven cache: true # 是否开启缓存 unit_test: coverage: true ignore_errors: false report_path: "**/TEST*.xml" enable: true coverage_report_path: "**/site/jacoco" command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B 参数名 参数类型 描述 是否必填 默认值 image string 镜像地址,有以下两种格式。 cloudbuild@maven3.5.3-jdk8-open ,以cloudbuild开始,@作为分隔符,后面是编译构建提供的默认镜像。 完整的swr镜像地址,例如:swr.example.example.com/codeci_test/demo:141d26c455abd6d7xxxxxxxxxxxxxxxxxxxx 是 无 settings map maven构建的setting配置。 否 无 cache bool 是否开启缓存。 否 false command string 执行命令。 是 无 unit_test map 单元测试。 否 无 单元测试(unit_test)层级下参数说明: 参数名 参数类型 描述 是否必填 默认值 enable bool 是否处理单元测试数据。 否 true ignore_errors bool 是否忽略单元测试错误。 否 true report_path String 单元测试数据路径。 是 无 converage bool 是否处理覆盖率数据。 否 false coverage_report_path string 覆盖率数据路径。 否 无
  • 图形化构建 在配置构建步骤中,添加“Maven构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 根据需要选择工具版本。 命令 配置Maven命令,一般使用系统默认生成的命令即可。 setting配置 自动生成setting文件并配置依赖仓库:可根据用户的IP不同,自动识别最优站点访问方式,国内用户使用“国内站点”,国际用户使用“国际站点”。建议使用默认配置。 公有依赖仓库:默认已添加华为开源镜像站,同时配置了HuaweiSDK仓库。此配置仅在需要添加非软开云提供的公有依赖仓库时使用,添加方法如下: 单击“添加”。 填写公有依赖仓库地址,根据需要勾选“release仓库”和“snapshot仓库”。release仓库和snapshot仓库至少勾选一个,也可以同时勾选。 release仓库:勾选后,构建过程将尝试从仓库中下载release版本依赖。 snapshot仓库:勾选后,构建过程将尝试从仓库中下载snapshot版本依赖。 私有依赖库:默认已配置软件开发生产线提供的私有依赖仓库。此配置仅在需要添加其它私有依赖仓库时使用,添加方法如下: 新建nexus repository服务扩展点,如:test01。 单击“添加”,选择上一步创建的服务扩展点,并根据需要勾选“release仓库”和“snapshot仓库”。 说明: “release仓库”和“snapshot仓库”两种仓库对应的使用场景区分如下,使用时要务必注意区分,避免出现如“将依赖上传到软件发布库但是构建时无法下载”此类场景。 “snapshot仓库”:对于以调试为目的发布的私有依赖包,一般会给依赖版本号增加-SNAPSHOT后缀(如:1.0.0-SNAPSHOT),执行发布操作时,此类依赖会自动发布到snapshot仓库,发布时无需更新版本号,构建命令中增加-U参数即可拉取最新版本。 对于正式发布的私有依赖包,版本号中不可带-SNAPSHOT后缀(如:1.0.0),执行发布操作时,此类依赖会自动发布到release仓库,发布时必须更新版本号,否则会导致构建过程无法拉取最新依赖包。 发布依赖包到CodeArts私有依赖库 编译构建服务默认使用私有依赖库作为私有依赖下载源,如果需要将构建产物上传至私有依赖库供其他项目依赖使用,则需要添加此配置。配置前,需已创建私有依赖库。配置方法如下: 不配置pom:表示无需发布私有依赖包到CodeArts私有依赖库。 配置所有pom:表示在项目下所有“pom.xml”文件增加deploy配置,使用mvn deploy命令将构建出的依赖包上传到私有依赖仓库。 配置后,需在命令窗口,使用“#”注释命令mvn package -Dmaven.test.skip=true -U -e -X -B,如下图: 删除#mvn deploy -Dmaven.test.skip=true -U -e -X -B命令前的“#”,如下图: 上传的私有依赖包,在其他项目添加pom.xml文件中的groupId、artifactId、version坐标即可引用。 单元测试 如果用户需要对单元测试结果进行处理,可配置此项。详见配置单元测试。 缓存配置 选择是否使用缓存以提高构建速度,选择“使用缓存”后,每次构建时会把下载依赖包缓存起来,后续构建无需重复拉取,可有效提高构建速度。 说明: maven构建的依赖包存入缓存之后,只有当租户下面构建的项目有引进新的依赖包时,才会更新缓存目录,并不支持对已有的依赖包缓存文件进行更新。
  • 配置说明 在配置构建步骤中,添加“单元测试报告”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 根据需要选择工具版本。 单元测试 选择处理单元测试结果并生成可视化报告,并使用报告结果控制任务的执行。 测试报告类型:选择单元测试的框架,目前仅支持junit。 单元测试结果文件:填写相对于项目根目录的相对路径,如 target/surefire-reports/TEST*.xml。目前只支持标准的.xml格式单元测试报告。 是否处理单元测试覆盖率结果:根据实际需要选择。若选“是”, 需确认项目中有使用jacoco-maven-plugin插件生成单元覆盖率报告。
  • 生成Keystore签名文件 使用JDK的keytool工具生成签名文件 找到JDK安装位置以及keytool。 执行生成密钥命令,生成.jks文件。 keytool -genkeypair -storepass 123456 -alias apksign -keypass 123456 -keyalg RSA -validity 20000 -keystore D:/android.jks 使用Android Studio生成签名文件 打开Studio,选择“Build下的Generate Signed Bundle/APK”。 选择“APK”,单击“Next”。 单击“Create new...”,在弹出框填写相关信息,单击“OK”,然后单击“Next”。 签名文件成功生成,查看文件。 生成的签名文件,可以上传到“文件管理”统一管理。
  • 文件管理 文件上传后,可以编辑文件、下载文件、删除文件、为用户配置文件操作权限。 在搜索框输入关键字,可搜索文件。 单击操作列,可修改文件名称,并设置是否允许租户内所有成员在编译构建中使用该文件。 单击操作列,可以下载文件。 单击操作列,在下拉框中选择“删除”,可根据弹框提示确认是否删除。 单击操作列,在下拉框中选择“编辑权限”,可在弹出的界面配置用户操作文件的权限。 表1 文件管理角色权限说明 权限类型 拥有该权限的角色 添加用户 项目下所有用户。 查看 文件创建者、相同租户的用户。 使用 文件创建者、文件创建者配置了使用权限的用户。 更新 文件创建者、文件创建者配置了更新权限的用户。 删除 文件创建者、文件创建者配置了删除权限的用户。 编辑权限 文件创建者。 创建者默认有所有权限并且不可被删除和修改。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 ersion: 2.0 # 必须是2.0 steps: BUILD: - grunt: inputs: command: |- npm config set registry http://7.223.219.40/npm/ #npm cache clean -f #npm audit fix --force npm install --verbose grunt npm run build 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 代码化构建 1 2 3 4 5 6 7 8 9 version: 2.0 # 必须是2.0 steps: BUILD: - ionic_android_app: inputs: gradle: '4.8' jdk: '3333' ndk: '17' command: ./instrumented.apk 参数名 参数类型 描述 是否必填 默认值 gradle string gradle版本。 是 无 jdk string jdk文件名。 是 无 ndk string ndk文件名。 是 无 command string 执行命令。 是 无
  • 图形化构建 确认Ionic项目已经上传到CodeArts Repo代码仓库。 项目中包含“ionic.config.json”、“package.json”和“angular.json”等项目编译描述文件。 在配置构建步骤中,添加“Ionic Android App构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 根据需要选择Gradle、JDK和NDK版本。 命令 配置命令框中的打包脚本。
  • 自定义安装npm组件 全局安装:npm install –g xxx。 项目下安装:npm install xxx。 如果发现镜像内安装的npm组件不符合要求,可以按照如下方式卸载,然后安装自己所需组件,以cordova为例: 查看cordova版本:cordova --version,可知版本为9.0.0。 卸载cordova:npm uninstall –g cordova。 重新安装需要的cordova版本:npm install –g cordova@8.0.0。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 version: 2.0 # 必须是2.0 steps: BUILD: - bazel: inputs: command: | cd java-maven bazel build //:java-maven_deploy.jar mkdir build_out cp -r bazel-bin/* build_out/ 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 导读 构建加速服务通过解析AOSP构建工程的内部依赖关系,将其拆解分发至多台机器并发执行,结合增量编译技术,实现对软件编译过程的效率提升,支撑企业研发过程的快速迭代,缩短产品的上市周期。 增量编译技术需结合L3级别加速使用。 使用AOSP构建加速能力需要购买配套构建加速包,购买方法请参考购买增值特性。 该功能目前仅支持北京四区域使用,其余区域后续上线。 本章节配置仅支持鸿蒙L1、L3级别的加速,L2级别待支持。 构建过程中不允许直接覆盖LD_LIBRARY_PATH和LD_PRELOAD环境变量,建议通过追加的方式使用,例如: 1 "export LD_LIBRARY_PATH=new_path:${LD_LIBRARY_PATH}" 父主题: AOSP构建加速
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 version: 2.0 # 必须是2.0 steps: BUILD: - go: inputs: command: | export GO15VENDOREXPERIMENT=1 export GOPROXY=https://goproxy.cn mkdir -p $GOPATH/src/example.com/demo/ cp -rf . $GOPATH/src/example.com/demo/ go install example.com/demo cp -rf $GOPATH/bin/ ./bin 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 代码化构建 1 2 3 4 5 6 7 version: 2.0 # 必须是2.0 steps: BUILD: - docker: inputs: command: | docker pull swr.xx-xxxxx-x.myxxcloud.com/codeci/dockerindocker:dockerindocker18.09-1.3.2 参数名 参数类型 描述 是否必填 默认值 command string 执行命令,每个命令一行。支持的docker命令:build、tag、push、pull、login、logout、save。 是 无
  • 代码化构建 1 2 3 4 5 6 7 ersion: 2.0 # 必须是2.0 steps: BUILD: - swr: image: cloudbuild@ddd inputs: command: echo 'hello' 参数名 参数类型 描述 是否必填 默认值 image string 镜像地址。 镜像地址有两种格式: cloudbuild@maven3.5.3-jdk8-open ,以cloudbuild开始,@作为分隔符,后面是编译构建提供的默认镜像。 完整的swr镜像地址,例如:swr.example.example.com/codeci_test/demo:141d26c455abd6d7xxxxxxxxxxxxxxxxxxxx 是 无 command string 执行命令。 例如,若使用的镜像是用于Maven构建,则配置Maven构建命令,若使用的镜像是用于NPM构建,则配置NPM构建命令,以此类推。 是 无
  • 华为云DNS服务器地址 为了实现用户就近接入和最低延迟的解析,提升全球范围的DNS解析体验,华为云在全球多个区域的多个可用区部署了DNS服务器。其中,部分区域支持任播网络(Anycast)功能。 目前,已经部署了DNS服务器的可用区包括:北京、廊坊、上海、广州、深圳、贵阳、香港、泰国、新加坡、日本、德国、南非、智利、迪拜、巴西、墨西哥等。 当前,华为云云解析服务对用户提供解析服务的新的DNS服务器地址为: ns1.huaweicloud-dns.com:中国大陆各区域DNS服务器地址 ns1.huaweicloud-dns.cn:中国大陆各区域DNS服务器地址 ns1.huaweicloud-dns.net:除中国大陆之外国家或地区DNS服务器地址 ns1.huaweicloud-dns.org:除中国大陆之外国家或地区DNS服务器地址 通过DNS的控制台创建公网域名后,其默认生成的NS记录集的值即为上述四个DNS服务器地址。
  • DNS服务器地址设置建议 由于中国大陆的国际出口带宽有限,用户在中国大陆和中国大陆之外国家或地区之间跨地区访问时,会出现网络时延增大的现象。 因此,对于公网域名的NS记录集设置,建议您: 如果您的网站用户主要集中在中国大陆,设置DNS服务器地址为:ns1.huaweicloud-dns.com、ns1.huaweicloud-dns.cn。 如果您的网站用户主要集中在中国大陆之外国家或地区,设置DNS服务器地址为:ns1.huaweicloud-dns.net、ns1.huaweicloud-dns.org。 如果您的网站用户遍布全球,同时设置上述四个DNS服务器地址。
  • DNS服务器地址设置步骤 在域名的“解析记录”页面,您可以通过修改域名NS类型的记录集值来设置DNS服务器地址。 进入公网域名列表页面。 在域名列表页面,单击域名名称,进入“解析记录”页面。 单击NS类型记录集“操作”列的“修改”,进入“修改记录集”页面。 图1 修改NS记录集 按照公网域名的DNS服务器地址设置建议,修改“修改记录集”页面的“值”。 单击“确定”,完成NS记录集的修改。 部分历史创建的公网域名,其NS地址为ns1.hwclouds-dns.com和ns1.hwclouds-dns.net,该地址是华为云DNS在历史版本中对用户提供解析服务的DNS服务器地址,即将下线。 为了更好的提供解析服务,建议您设置为新的DNS服务器地址,同时将域名服务商处域名的DNS信息同步修改为新的DNS服务器地址,详细请参见怎样查看并修改域名的DNS服务器地址?
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 command 是 String 安装单apk场景填写install,多apk场景填写install-multiple。 content 是 String 指定OBS桶中的apk文件(需要提前上传到指定桶中)。 只支持大小写字母、数字、下划线(_)、点(.)、斜线(/)、冒号(:)、中划线(-)。推送的文件只支持apk文件类型。 单apk场景,只能传一个apk,最大长度为1024字节;多apk场景,最多传50个apk,中间用空格分开,最大长度8100字节。 phone_ids 否 Array of strings 云手机ID列表。 server_ids参数不存在时必选,同时存在只处理phone_ids。 server_ids 否 Array of strings 云手机服务器ID列表。 phone_ids参数不存在时必选,同时存在只处理phone_ids。
  • 请求示例 在云手机中安装apk POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/commands { "command" : "install", "content" : "-t -r obs://push-bucket/my_apps/test.apk", "phone_ids" : [ "1234567b8bab40ffb711234cb80d0234", "1678567b8bab40f93711234cb80d0764" ] } 在云手机中安装多apk POST https://{CPH Endpoint}/v1/{project_id}/cloud-phone/phones/commands { "command" : "install-multiple", "content" : "-t -r obs://push-bucket/my_apps/test_part1.apk obs://push-bucket/my_apps/test_part_2.apk obs://push-bucket/my_apps/test_part3.apk", "phone_ids" : [ "1234567b8bab40ffb711234cb80d0234", "1678567b8bab40f93711234cb80d0764" ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 request_id String 请求的唯一标识ID。 jobs Array of PhoneJob objects 任务列表。 表5 PhoneJob 参数 参数类型 描述 phone_id String 云手机的唯一标识ID,云手机相关任务包含此字段。 job_id String 任务的唯一标识。 error_code String 错误码。 error_msg String 错误说明。
  • 响应示例 状态码: 200 OK { "request_id" : "6837531fd3f54550927b930180a706bf", "jobs" : [ { "phone_id" : "1234567b8bab40ffb711234cb80d0234", "job_id" : "1564567b8bab40f34711234cb80d0123" }, { "phone_id" : "1678567b8bab40f93711234cb80d0764", "job_id" : "1564567b8bab40f34711234cb80d5678" } ] }
  • 功能介绍 在云手机中安装apk。系统会将指定的apk文件下载后直接安装到云手机中。 支持安装单apk应用和多apk应用。可使用install命令安装单apk应用,一次只支持安装一个apk,如果一次传多个apk只有第一个安装成功;可使用install-multiple命令安装多apk应用(多apk应用为单个应用拆分成多个apk),一次只支持同一个应用的多个apk。该接口为异步接口。接口调用前请先确保已完成CPH服务操作OBS桶的委托授权。委托CPH操作OBS桶请参见委托CPH操作OBS桶。 管理面性能有限,对相同服务器批量执行的ADB命令,将会阻塞云手机其他任务执行。 建议通过开发应用市场的方式安装apk。允许安装的apk大小限制为2G(即不可将obs桶内大于2G的apk安装到手机中),超过限制将返回错误。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 request_id String 请求的唯一标识ID。 jobs Array of Job objects 任务信息。 表5 Job 参数 参数类型 描述 phone_id String 云手机的唯一标识,云手机相关任务包含此字段。 server_id String 云手机服务器的唯一标识ID,云手机服务器相关任务包含此字段。 node_id String (已废弃)云手机服务器的唯一标识ID,云手机服务含此字段。 job_id String 任务的唯一标识。 begin_time String 任务处理开始时间, 时间格式为UTC,YYYY-MM-DDTHH:MM:SSZ。 end_time String 任务处理结束时间, 时间格式为UTC,YYYY-MM-DDTHH:MM:SSZ。 status Integer 任务状态。 1 :运行中 2 : 成功 -1 :失败 error_code String 任务错误码。 error_msg String 任务错误码说明。 execute_msg String 任务执行返回内容,最长1024个字节。
  • 响应示例 状态码: 200 OK { "request_id" : "6a63a18b8bab40ffb71ebd9cb80d0085", "jobs" : [ { "phone_id" : "1234567b8bab40ffb711234cb80d0234", "server_id" : "1e223c8e-3ad0-4bf0-a837-bc90d4f91d01", "node_id" : "1e223c8e-3ad0-4bf0-a837-bc90d4f91d01", "job_id" : "1564567b8bab40f34711234cb80d0123", "begin_time" : "2017-10-25T00:00:00Z", "end_time" : "2017-10-25T00:00:30Z", "status" : -1, "error_code" : "CPS0005", "error_msg" : "Phone not found." }, { "phone_id" : "abc4567b8bab40ffb711234cb80d0abc", "server_id" : "1e223c8e-3ad0-4bf0-a837-bc90d4f91d01", "node_id" : "1e223c8e-3ad0-4bf0-a837-bc90d4f91d01", "job_id" : "1564567b8bab40f34711234cb80d0456", "begin_time" : "2017-10-25T00:00:00Z", "end_time" : "2017-10-25T00:00:32Z", "status" : 2, "error_code" : "", "error_msg" : "" } ] }
  • URI GET /v1/{project_id}/cloud-phone/jobs 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id。 表2 Query参数 参数 是否必选 参数类型 描述 request_id 否 String 任务下发请求时响应的request_id。request_id和request_ids必须指定其中一个。request_id和request_ids同时指定的时候,以request_ids为准。 request_ids 否 String 任务下发请求时响应的多个request_id,用逗号分隔,最多不能超过20个。request_id和request_ids必须指定其中一个。request_id和request_ids同时指定的时候,以request_ids为准。 offset 否 Integer 偏移量为一个大于等于0整数,表示查询该偏移量后面的所有的资源数,默认值为0。 limit 否 Integer 每页返回的资源个数。取值范围:1~100(默认值为100),一般设置为10、20、50。
共100000条