华为云用户手册

  • 计费周期 按需计费Kafka实例按秒计费,每一个小时整点结算一次费用(以UTC+8时间为准),结算完毕后进入新的计费周期。计费的起点以Kafka实例创建成功的时间点为准,终点以实例删除时间为准。 例如,您在8:45:30购买了一个按需计费的Kafka实例,然后在8:55:00将其删除,则计费周期为8:00:00 ~ 9:00:00,在8:45:30 ~ 8:55:30间产生费用,该计费周期内的计费时长为600秒。
  • 计费示例 假设您于2023/04/18 9:59:30在“华北-北京四”区域购买了一个按需计费Kafka实例(规格:kafka.2u4g.cluster*3,总存储空间:高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(高I/O 300GB),然后在2023/04/18 10:45:46将其删除,则: 第一个计费周期为9:00:00 ~ 10:00:00,在9:59:30 ~ 10:00:00间产生费用,该计费周期内的计费时长为30秒。 第二个计费周期为10:00:00 ~ 11:00:00,在10:00:00 ~ 10:45:46间产生费用,该计费周期内的计费时长为2746秒。 您需要为每个计费周期付费,各项Kafka资源单独计费,计费公式如表2所示。产品价格详情中标出了资源的每小时价格,您需要将每小时价格除以3600,得到每秒价格。 表2 计费公式 资源类型 计费公式 资源单价 实例费用 实例规格单价 * 购买时长 请参见分布式消息服务Kafka版价格详情中的“实例价格”。 存储空间费用 存储空间单价 * 购买时长 请参见分布式消息服务Kafka版价格详情中的“存储价格”。 图2给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务Kafka版价格详情中的价格为准。 图2 按需计费Kafka实例费用计算示例(华北-北京四区域)
  • 适用计费项 分布式消息服务Kafka版对您选择的Kafka实例和Kafka的磁盘存储空间收费。以下计费项支持按需计费。 表1 适用计费项 计费项 说明 实例费用 包括代理规格和代理数量。 如果开启Smart Connect,实例需要另外收取用于Smart Connect的代理费用。 存储空间费用 总存储空间(单个代理的存储空间*代理数量)的费用。 假设您计划购买一个Kafka实例,其存储空间为300GB。在购买Kafka实例页面底部,您将看到所需费用的明细,如图1所示。 图1 配置费用示例 配置费用将包括以下部分: 实例费用:根据所选配置(包括代理规格和代理数量)计算的费用。 存储空间费用:磁盘类型和总磁盘存储空间(单个代理的存储空间*代理数量)的费用。
  • 计费示例 假设您于2023/03/08 15:50:04在“华北-北京四”区域购买了一个包年/包月Kafka实例(规格:kafka.2u4g.cluster*3,总存储空间:超高I/O 300GB),计费资源包括实例费用(代理规格和代理数量),以及存储空间费用(超高I/O 300GB)。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 您需要为每个计费周期预先付费,各项Kafka资源单独计费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 实例费用 实例规格单价 * 购买时长 请参见分布式消息服务Kafka版价格详情中的“实例价格”。 存储空间费用 存储空间单价 * 购买时长 请参见分布式消息服务Kafka版价格详情中的“存储价格”。 图2给出了上述示例配置的费用计算过程。 图中价格仅供参考,实际计算请以分布式消息服务Kafka版价格详情中的价格为准。 图2 包年/包月Kafka实例费用计算示例(华北-北京四区域)
  • 适用场景 包年/包月计费模式需要用户预先支付一定时长的费用,适用于长期、稳定的业务需求。以下是一些适用于包年/包月计费模式的业务场景: 稳定业务需求:对于长期运行且资源需求相对稳定的业务,如企业官网、在线商城、博客等,包年/包月计费模式能提供较高的成本效益。 长期项目:对于周期较长的项目,如科研项目、大型活动策划等,包年/包月计费模式可以确保在整个项目周期内资源的稳定使用。 业务高峰预测:如果能预测到业务高峰期,如电商促销季、节假日等,可提前购买包年/包月资源以应对高峰期的需求,避免资源紧张。 数据安全要求高:对于对数据安全性要求较高的业务,包年/包月计费模式可确保资源的持续使用,降低因资源欠费而导致的数据安全风险。
  • 适用计费项 分布式消息服务Kafka版对您选择的Kafka实例和Kafka的磁盘存储空间收费。以下计费项支持包年/包月。 表1 适用计费项 计费项 说明 实例费用 包括代理规格和代理数量。 如果开启Smart Connect,实例需要另外收取用于Smart Connect的代理费用。 存储空间费用 总存储空间(单个代理的存储空间*代理数量)的费用。随包年/包月Kafka实例创建的存储空间,其计费模式也为包年/包月。 假设您计划购买一个Kafka实例,其存储空间为300GB。在购买Kafka实例页面底部,您将看到所需费用的明细,如图1所示。 图1 配置费用示例 配置费用将包括以下部分: 实例费用:根据所选配置(包括代理规格和代理数量)计算的费用。 存储空间费用:磁盘类型和总磁盘存储空间(单个代理的存储空间*代理数量)的费用。
  • 变更配置后对计费的影响 当前包年/包月Kafka实例资源的规格不满足您的业务需要时,您可以在Kafka实例控制台发起变更规格操作,变更时系统将按照如下规则为您计算变更费用: 资源升配:新配置价格高于老配置价格,此时您需要支付新老配置的差价。 资源降配:新配置价格低于老配置价格,此时华为云会将新老配置的差价退给您。 这里以资源升配且无任何优惠的场景为例,假设您于2023/04/08在“华北-北京四”区域购买了一个包年/包月Kafka实例(kafka.2u4g.cluster*3),购买时长为1个月,计划在2023/04/18变更规格为kafka.4u8g.cluster*3。旧配置价格为1890 元/月,新配置价格为3780 元/月。计算公式如下: 升配费用=新配置价格*剩余周期-旧配置价格*剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。本示例中,剩余周期=12(4月份剩余天数)/ 30(4月份最大天数)+ 8(5月份剩余天数)/ 31(5月份最大天数)=0.6581,代入公式可得升配费用=3780*0.6581-1890*0.6581=1243.81(元) 更多信息请参见变更资源规格费用说明。
  • 到期后影响 图3描述了包年/包月Kafka实例各个阶段的状态。购买后,在计费周期内Kafka实例正常运行,此阶段为有效期;Kafka实例到期而未续费时,将陆续进入宽限期和保留期。 图3 包年/包月Kafka实例生命周期 到期预警 包年/包月Kafka实例在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为云账号的创建者。 到期后影响 资源到期未续费,进入宽限期 如果您的包年/包月Kafka实例到期未续费,Kafka实例会进入宽限期,Kafka实例状态变为“已过期”。宽限期内您可以正常访问Kafka实例,但以下操作将受到限制: 变更实例规格 开启/关闭Smart Connect 资源宽限期到期未续费,进入保留期 如果您在宽限期内仍未续费包年/包月Kafka实例,Kafka实例会进入保留期,Kafka实例状态变为“已冻结”,您将无法对处于保留期的包年/包月Kafka实例执行任何操作。 资源保留期到期未续费,释放且不可恢复 如果包年/包月Kafka实例在保留期到期前仍未续费,那么Kafka实例将被释放,数据无法恢复。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。
  • 包年/包月资源 对于包年/包月计费模式的资源,例如包年/包月的Kafka实例,用户在购买时会一次性付费,服务将在到期后自动停止使用。 如果在计费周期内不再使用包年/包月资源,您可以执行退订操作,系统将根据资源是否属于五天无理由退订、是否使用代金券和折扣券等条件返还一定金额到您的账户。详细的退订规则请参见云服务退订规则概览。 如果您已开启“自动续费”功能,为避免继续产生费用,请在自动续费扣款日(默认为到期前7日)之前关闭自动续费。
  • 图形化构建 配置构建步骤时,在“Android构建”步骤后添加“Android APK签名”步骤。 参数说明如下: 参数 说明 步骤显示名称 构建步骤的名称,可自定义修改。 需要签名的APK路径 Android构建后生成要签名的.apk文件位置,支持正则表达式,如:可以使用build/bin/*.apk匹配构建出来的APK包。 Keystore文件 用于签名的Keystore文件,参考生成Keystore签名文件制作,单击下拉列表,展示文件管理页面已经上传的Keystore文件,请根据需要选择。 keystore password 密钥文件密码。 别名(Alias) 密钥别名。 key password 密钥密码。 apksigner命令行 用户自定义签名参数,默认“--verbose”显示签名详情。 验证签名是否成功。 配置完成后执行构建任务,当显示任务执行成功后,查看构建日志,若“Android APK签名”对应日志中显示“结果: Signed”即为签名成功。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 version: 2.0 # 必须是2.0 steps: BUILD: - android_sign: inputs: file_path: build/bin/*.apk keystore_file: androidapk.jks keystore_password: xxxxxx alias: keyalias key_password: xxxxxx apksigner_commond: --verbose 参数名 参数类型 描述 是否必填 默认值 file_path string 需要签名的APK路径。 是 无 keystore_file string Keystore文件名。 是 无 keystore_password string Keystore文件密码。 否 无 alias string 别名。 是 无 key_password string 密码。 否 无 apksigner_commond string apksigner命令。 是 无
  • Powershell命令使用 Powershell使用操作 如果在构建任务中使用powershell命令,在命令行窗口按如下格式输入命令即可: powershell –Command Powershell命令参数列表 常用Powershell命令 命令类型 说明 Compress-Archive(压缩命令) powershell –Command Compress-Archive -Path [SourcePath] -DestinationPath [Target.zip] SourcePath 指定需要压缩的文件或文件夹,支持通配符和相对路径。 Target.zip 输出的压缩文件名,可用于上传到软件发布库时填写文件名。 Expand-Archive(解压缩命令) powershell –Command Expand-Archive -Path [SourcePath] -DestinationPath [TargetPath] SourcePath 指定需要解压的文件,如“demo.zip”。 TargetPath 要解压到的目标路径,支持通配符和相对路径。 Copy-Item(复制命令) powershell –Command Copy-Item -Recurse -Path [SourcePath] -DestinationPath [TargetPath] SourcePath 指定需要复制的文件或文件夹,支持通配符和相对路径。 TargetPath 要复制到的目标路径,支持通配符和相对路径。 说明: -Recurse选项为循环复制子文件夹,但若在SourcePath中使用了通配符,此开关会失效,不会复制指定目录下的子文件夹。 文档只介绍了构建常用的Powershell命令,更多Powershell命令请参见微软官方文档。
  • 配置说明 在配置构建步骤中,添加“Msbuild构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 请根据需要选择Msbuild构建工具版本。 请选择相应的.NET版本。 msbuild15-all版本的工具提供更多的构建支持,如nant、nodejs的构建命令支持等。 powershell命令 配置Msbuild命令,一般使用系统默认给出的命令即可。 nuget restore命令会还原csharp项目依赖。 msbuild命令构建项目: OutputPath会指定生成路径,此路径设置会以csproject文件为相对路径。 项目存在多个csproject时可能会因此导致构建失败,删除路径指定参数后可构建成功。 .NET Core项目请尝试使用.NET相关命令构建。
  • Msbuild构建场景 已支持场景 场景类型 说明 无外部依赖 参考镜像版本及对应工具版本,对于仅使用了环境预装依赖库的项目,选择合适的镜像版本即可直接使用msbuild或.NET命令进行构建。 例如:项目使用了dotnetframework4.7.2的SDK和Office操作的相关官方依赖库(MSOffice)。可选用“msbuild15-dotnetframework4.7.2”版本镜像,使用msbuild命令构建。 使用Nuget进行依赖管理 对于使用了环境预装依赖库以外的项目,但使用了Nuget对所有依赖库进行管理的项目,选择合适的镜像版本后,可先使用nuget restore命令下载所有依赖,此后使用msbuild命令进行构建。.NET命令无需先执行nuget命令。 例如:项目使用了“dotnetframework4.7.2”的SDK,依赖了Myget上某Package并使用Nuget添加了该依赖。可选用“msbuild15-dotnetframework4.7.2”版本镜像,使用nuget restore && msbuild命令构建。 其他 对于有其他命令需求的项目,如Git、JDK、Nant、Nodejs等,请参见msbuild15-all版本镜像构建工具集的说明,使用支持的命令进行操作。 未支持场景 场景类型 说明 未使用Nuget管理依赖库 依赖了本地安装的依赖库,且没有使用nuget对依赖进行管理。详细解决方案请参见找不到程序集(**.dll)。 例如:某项目使用“dotnetframework4.7.2”的SDK,本地安装了Nunit依赖库,但没有使用Nuget对其进行管理。 此时使用msbuild命令对其进行构建时会出现找不到库的错误,导致构建失败。 解决方案版本低于VS2015(不包含) 对于使用VS2015(不含)以前版本创建的解决方案,会出现版本过低不兼容的情况,导致构建失败。请尝试升级解决方案。
  • Msbuild系统规格说明 为方便使用,编译构建服务提供的Msbuild构建环境原则上尽可能保持与本地环境一致,但因Windows系统与编译构建服务本身一些系统限制,少数场景下可能会导致构建失败。 使用前建议仔细阅读以下规格说明。 不支持带空格的文件路径 C#项目中目录或文件名中包含空格会导致构建失败,目录/文件的命名请使用字母、数字、下划线的组合,勿使用其他特殊字符,避免不必要的构建失败。 文件全路径长度不得超过260个字符 Windows系统中,文件全路径的最大长度限制为260个字符,超过此长度会导致Msbuild构建失败。 编译构建服务约定在指定目录下执行命令,即您的构建场景实际与以下步骤类似: cd C:\编译构建的默认路径\您的项目路径 msbuild 项目文件全路径长度实际为项目下文件相对路径长度与编译构建服务默认路径长度之和。 编译构建服务默认路径长度为45字符。 因此,在使用Msbuild构建的过程中,您的项目文件路径需满足:项目下文件相对路径(以代码仓库为根目录)长度不可大于215字符。 一些特殊场景(如构建时指定输出目录为“Output/release”)下,可能会额外占用路径长度。 建议您的项目下文件相对路径(以代码仓库为根目录)长度保持在200个字符以下,原则上尽可能短。 不可直接引用系统不具备的组件 部分场景下,解决方案中可能不使用NuGet等管理工具,直接引用默认路径下的程序集。 但构建时环境中不具备此程序集,导致编译告警,如果项目代码中使用了此引用,甚至会直接导致失败。 由于Windows系统特殊性,通常情况下,此类程序集默认安装于本地系统,无需指定程序集位置,VS构建时会从默认配置的几个程序集路径查找,可以构建成功。 而云端构建环境对应目录无此程序集,进而导致云端构建环境与本地不一致带来的失败。 为解决此类场景,Msbuild集成了NuGet,可以在构建时从远程仓库下载对应程序集,此时只需于项目中指定“packages.config”,并于其中声明依赖的程序集即可。 特殊情况下,项目引用的程序集可能无法在远程仓库找到,此时需要手工保存程序集至代码仓库中,并显式指定程序集路径。 详细解决方案请参见找不到程序集(**.dll)。 命令行中路径分隔符使用'/'而非'\' 部分场景下,可能需要在命令行中使用路径参数,此处需注意,Msbuild构建环境要求路径分隔符统一使用“/”格式。 错误示例: cd test\test1或cd test\\test1 正确示例: cd test/test1 避免直接指定低版本SDK路径 编译构建服务提供了“.NET Framework”的4.7.2版本和3.5版本(详细说明请参见已支持的镜像版本及工具集)。 一般来讲,4.7.2版本可以兼容4.0以上版本SDK,3.5版本可以兼容3.5版本以下SDK,项目中可以引用兼容版本的SDK内容。 在某些场景下,用户可能将引用直接指向了某个低版本的sdk路径,此时会因找不到SDK导致构建失败。 如果您的项目出现此类场景,建议: 尝试更改您的引用路径,尽可能使用兼容版本SDK。 如果您的项目因为不可回避的原因,必须指向低版本SDK路径,请尝试联系客服。
  • 图形化构建 将构建生成的软件包上传到软件发布库,在配置构建步骤时,添加“上传软件包到软件发布库”构建步骤即可。 当执行机选择Windows执行时,添加“上传软件包到软件发布库(Windows环境)”构建步骤。 仅支持上传单个文件、多个文件;不支持上传文件夹、自动创建路径。 例如,“a”目录下有“aa”文件和“b”目录,“b”目录下有“bb”文件,构建包路径配置为“a/**”。 即递归扫描“a”目录下所有文件,两个文件是同一个目录下,“aa”、“bb”两个文件将会上传到同一个目录下,系统不会在软件发布库里自动创建“b”目录。 如果用户有上传文件夹的需要,建议在“上传软件包到软件发布库”构建步骤之前先将待上传的文件夹打包为单文件后再上传。可以通过现有构建步骤执行打包命令,也可以新增“执行shell命令”构建步骤执行打包命令。 参数配置说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 构建包路径 构建结果所在路径。 构建包路径支持正则匹配,“**”递归遍历当前目录,“*”匹配0或者多个字符,“?”匹配一个字符。 系统文件分隔符使用“/”;路径对大小写不敏感。 举例说明: *.class 当前目录下匹配“.class”结尾的文件。 **/*.class 当前目录下递归匹配所有的“.class”结尾的文件。 test/a??.java 匹配“test”目录下以“a”开头后跟两个字符的java文件。 **/test/**/XYZ* 递归匹配父目录为“test”文件是“XYZ”开头的所有文件,比如“abc/test/def/ghi/XYZ123”。 发布版本号 不指定(推荐):以构建编号命名上传到发布库的文件存储目录名。 指定:可能会覆盖同名存储目录下的文件。 包名 不指定(推荐):以文件原始名命名上传到发布库的文件名。包名推荐设置为空,可以上传构建包路径匹配的所有文件。 指定:上传多个文件时,可能会存在被覆盖的情况。如果包名需要设置且存在多个文件上传的情况,推荐增加多个上传软件包到软件发布库的构建步骤。
  • 代码化构建 1 2 3 4 5 6 7 8 version: 2.0 # 必须是2.0 steps: BUILD: - upload_artifact: inputs: path: "**/target/*.?ar" version: 2.1 name: packageName 参数名 参数类型 描述 是否必填 默认值 path string 构建结果所在路径,支持正则表达式。如maven可以使用**/target/*.?ar匹配所有构建出来的jar包和war包。 是 无 version string 不指定(推荐):以构建编号命名上传到发布库的文件存储目录名。 指定:可能会覆盖同名存储目录下的文件。 否 无 name string 不指定(推荐):以文件原始名命名上传到发布库的文件名。 指定:上传多个文件时,可能会存在被覆盖的情况。 否 无
  • 代码化构建 1 2 3 4 5 6 7 8 version: 2.0 # 必须是2.0 steps: BUILD: - fortran: inputs: command: |- gfortran -c -fpic helloworld.f90 gfortran -shared -o helloworld.so helloworld.o 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 代码化构建 1 2 3 4 5 6 7 8 9 version: 2.0 # 必须是2.0 steps: BUILD: - flutter: inputs: flutter: region jdk: '3333' ndk: '23.1.7779620' command: ./instrumented.apk 参数名 参数类型 描述 是否必填 默认值 flutter string region名。 是 无 jdk string jdk文件名。 是 无 ndk string ndk文件名。 是 无 command string 执行命令。 是 无
  • 图形化构建 在配置构建步骤中,添加“Gnu-arm构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 请根据需要选择ARM工具版本。 命令 配置Gnu-arm构建命令,一般使用系统默认给出的make命令即可。 如果Makefile不在代码根目录下,用户需要cd到正确的目录,再使用make命令。 用户不使用make命令,可以参考下列镜像自带的编译命令: gnuarm201405镜像 使用arm-none-linux-gnueabi-gcc命令,例如arm-none-linux-gnueabi-gcc -o main main.c gnuarm-linux-gcc-4.4.3镜像 使用arm-linux-gcc命令,例如arm-linux-gcc -o main main.c gnuarm-7-2018-q2-update镜像 使用arm-none-eabi-gcc命令,例如arm-none-eabi-gcc --specs=nosys.specs -o main main.c 说明: Linux下的GNU的makefile编写,请参见官网。 注意Makefile只有行注释“#”,如果要使用或者输出“#”字符,需要进行转义,如使用“\#”。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 version: 2.0 # 必须是2.0 steps: BUILD: - mono: inputs: command: | nuget sources Disable -Name 'nuget.org' nuget sources add -Name 'xxcloud' -Source 'https://repo.xxcloud.com/repository/nuget/v3/index.json' nuget restore msbuild /p:OutputPath=../buildResult/Release/bin zip -rq ./archive.zip ./buildResult/Release/bin/* 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 图形化构建 在配置构建步骤中,添加“上传文件到OBS”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 授权用户 当前用户:上传到当前租户的OBS桶。 其他用户:可以通过选择IAM账号的方式上传到指定租户的OBS桶。 构建产物路径 构建结果所在路径,OBS存储文件名为空时,可使用通配符上传多个文件。如:maven可以使用**/target/*.?ar匹配所有构建出来的jar包和war包。 桶名 目标OBS桶名(不支持跨region上传)。 OBS存储目录 构建结果在OBS上的存储目录(如:application/version/),可留空,或填写“./”表示存储到OBS根目录。 OBS存储文件名 构建结果在OBS上的存储文件名(不包含目录),留空时可上传多个文件,取构建产物文件名为OBS存储文件名;不为空时只能上传单个文件,如:application.jar。 是否上传文件夹 可选择是否开启上传文件夹。 忽略文件夹路径 忽略的文件夹路径。选择上传文件夹时,会根据此路径忽略部分文件夹,不上传到OBS。 如产物路径填写为“target/api/api.jar”,忽略文件夹路径填写为“target”,obs存储目录为“./”,则会将“api.jar”上传到OBS桶的“api/api.jar”路径下。若路径无法匹配,则默认不忽略路径中的文件夹。 OBS头域 上传文件时加入一个或多个自定义的响应头,当用户下载此对象或查询此对象元数据时,加入的自定义响应头会在返回消息的头域中出现。如:“键”填写成“x-frame-options”,“值”填写成“false”,即可禁止OBS中存放的网页被第三方网页嵌入。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 version: 2.0 # 必须是2.0 steps: BUILD: - upload_obs: inputs: artifact_path: "**/target/*.?ar" bucket_name: codecitest-obs obs_directory: test # artifact_dest_name: "" # upload_directory: true # headers: # x-frame-options: true # test: test # commit: ${commitId} 参数名 参数类型 描述 是否必填 默认值 artifact_path string 要上传的产物路径,支持正则。 否 bin/* bucket_name string 要上传到的obs桶名。 是 无 obs_directory string 要上传到的obs文件夹路径。默认上传到桶的根目录。 否 ./ artifact_dest_name string 上传到obs后的文件名。产物需要重命名时填写。 否 无 upload_directory bool 是否上传文件夹。false时会将匹配到的所有产物平铺上传到obs_directory。 否 false headers map 上传的头域信息。 否 无
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 version: 2.0 # 必须是2.0 steps: BUILD: - yarn: inputs: command: |- #nodejs 版本小于18时,可以设置下面的值 npm config set cache-folder /yarncache npm config set registry http://mirrors.tools.huawei.com/npm/ npm config set disturl http://mirrors.tools.huawei.com/nodejs npm config set sass_binary_site http://mirrors.tools.huawei.com/node-sass/ npm config set phantomjs_cdnurl http://mirrors.tools.huawei.com/phantomjs npm config set chromedriver_cdnurl http://mirrors.tools.huawei.com/chromedriver npm config set operadriver_cdnurl http://mirrors.tools.huawei.com/operadriver npm config set electron_mirror http://mirrors.tools.huawei.com/electron/ npm config set python_mirror http://mirrors.tools.huawei.com/python #nodejs 版本大于等于18时,可以设置下面的值 #npm config set registry http://mirrors.tools.huawei.com/npm/ npm config set prefix '~/.npm-global' export PATH=$PATH:~/.npm-global/bin #yarn add node-sass-import --verbose yarn install --verbose yarn run build tar -zcvf demo.tar.gz ./** 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 version: 2.0 # 必须是2.0 steps: BUILD: - cmake: inputs: command: | # 新建build目录 切换到build目录、 mkdir build && cd build # 生成Unix 平台的makefiles文件并执行构建 cmake -G 'Unix Makefiles' ../ && make -j 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 图形化构建 在配置构建步骤中,“Maven构建”步骤后添加“制作镜像并推送到SWR仓库”构建步骤。 “Maven构建”构建步骤参数保持默认即可,“制作镜像并推送到SWR仓库”构建步骤参数配置说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 选择工具版本,使用默认版本即可。 镜像仓库 编译构建服务已经默认给出了各区域对应的SWR仓库地址,用户无需更改。 说明: 支持推送到用户自定义镜像仓库。 授权用户 当前用户。请确保当前用户对组织内所有镜像享有编辑或管理权限,详见授权管理。 组织 在下拉框中选择前提条件中创建好的组织名。 镜像名字 制作完成后的镜像名称,可自定义。 镜像标签 用来标记镜像的版本,可自定义。通过“镜像名:标签”可以唯一指定镜像。 工作目录 docker build命令中的“上下文路径”参数,该路径是CodeArts Repo代码仓库根目录的相对路径。 上下文路径,指的是docker在构建镜像时,docker build命令将该路径下的所有内容打包给容器引擎帮助构建镜像。 Dockerfile路径 Dockerfile文件所在路径,请填写相对于工作目录的路径,如:工作目录为根目录, 且Dockerfile文件在根目录下,则此处填写为“./Dockerfile”。 添加构建元数据到镜像 将本次构建信息添加到镜像中,镜像制作完成后可以通过docker inspect命令查看镜像元数据。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 version: 2.0 # 必须是2.0 steps: BUILD: - build_image: name: buildImage inputs: regions: ["x-x-x", "x-x-xxx"] organization: codeci_test image_name: demo image_tag: ${GIT_COMMIT} dockerfile_path: dockerfile/Dockerfile # set_meta_data: true 参数名 参数类型 描述 是否必填 默认值 regions list 选择要上传的区域SWR。默认上传到当前任务所在region的SWR。 否 无 organization string 上传到的SWR组织。 是 无 image_name string 镜像名。 否 demo image_tag string 镜像标签。 否 v1.1 context_path string docker的上下文路径。 否 . dockerfile_path string dockerfile文件相对context_path的路径。 否 ./Dockerfile set_meta_data bool 是否添加构建元数据到镜像。 否 false
  • 加速前准备 在一般的构建工程中,其构建过程大致分为构建前准备(工具链、代码仓)、构建依赖件准备(ninja文件生成)、编译构建、构建后操作(打包、检查等)。其中,构建加速介入编译构建阶段,对此前的构建过程中生成的构建依赖件进行解析,并执行编译。 在配置构建加速前,需如下准备: 找到构建依赖件准备的节点,以AOSP为例,一个形态的编译命令如下: 1 2 3 source build/envsetup.sh lunch aosp_x86_64-eng make -j64 准备好构建使用的docker镜像,基于该docker镜像制作新镜像:在dockerfile中增加“/opt/buildtools”目录供加速工具部署,并确保构建用户对“/opt/buildtools”目录有权限写入。参考命令如下: 1 RUN mkdir -p /opt/buildtools && chmod -R 777 /opt/buildtools 父主题: AOSP构建加速
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 version: 2.0 # 必须是2.0 steps: BUILD: - gradle: inputs: gradle: 4.8 jdk: 1.8 command: | # 使用CodeArts提供的gradle wrapper,充分利用缓存加速 cp /cache/android/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.jar # 构建未签名的APK /bin/bash ./gradlew build --init-script ./.codeci/.gradle/init_template.gradle -Dorg.gradle.daemon=false -Dorg.gradle.internal.http.connectionTimeout=800000 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无 gradle string gradle版本。 是 无 jdk string jdk版本。 是 无
  • 高级选项(可选) 高级选项均为非必填选项,在构建过程中有工程无法执行需要特殊适配或优化性能时配置,若随意配置可能会导致构建失败。 表1 通用选项 参数项 说明 示例 TB_GET_TRACE 构建结束后获取依赖json文件文件的开关。 1:开启。 0:关闭(默认)。 1 TB_NINJA_RULE_ALL 分割规则配置,target按数量比值分组。不设置时会自动配置合适值。 "1:2:3:4" TB_TARGETS_LIST_ALL 人工指定分发的target进行编译,每个逗号隔开一个worker的target。使用星号分隔多个ninja工程的配置。不设置时会自动配置合适值。 "harmony_target_1 harmony_target_2,harmony_target_3 harmony_target_4" TB_HOOK_LOCK 对软链接也进行文件同步。若构建过程中发生软链接文件未同步导致的报错,需要开启此选项。 1:开启。 0:关闭(默认)。 1 TB_APPEND_PATH 构建时可向PATH环境变量中追加的参数。 1:开启。 0:关闭(默认)。 1 TB_SHUT_DOWN_SAME_TIME 所有worker都等待主节点执行完毕后再结束构建释放资源。 1:开启。 0:关闭(默认)。 1 TB_RSYNC_LOCK 构建加速的同时worker向构建执行机实时传输文件。开启后效率会进一步提升,但会存在概率性编译失败的情况。 1:开启。 0:关闭(默认)。 1 TB_MAKE_J 设置构建并发数。默认为worker核数。 16 TB_REFER_NINJA_FILE 如果存在串行执行一个一模一样的ninja工程时,可以使用此变量优化构建速度 1:开启。 0:关闭(默认)。 1 CCACHE_DIR 自定义编译缓存的本地目录。默认为/tmp/xcache目录。 ${WORKSPACE}/TBcache TB_CACHE_SIZE 使用自定义执行机自定义编译缓存的本地目录存储大小上限。默认为100G。 100G CCACHE_MAXSIZE 自定义编译缓存的本地目录存储大小上限。默认为20G。 100G TB_ONE_WORKER 使用自定义执行机且只使用一个worker进行构建时可以使用此变量打开编译缓存开关。 1:开启。 0:关闭(默认)。 1 TB_CLIENT 该变量在主节点client自动设置,可以通过比较此变量是否等于1判断该节点是否为主节点client。 不需要配置 TB_NET_INTERFACE_NAME 指定获取IP时读取的网卡名,在多网卡情况下获取IP使用,默认为空,多个网卡名通过逗号分隔,配置在前的网卡名有更高的优先级。 eth0,eth1 TB_ACC_PREPARE 使用自定义执行机时必须配置此变量。 false TB_OUTPUT_PATH 自定义产物目录路径,默认设置为out。 output TB_SELF_ENV worker编译target时使用本地环境变量,不使用client传递的变量。 1:开启。 0:关闭(默认)。 1 TB_RSYNC_FLAG 增加同步文件时rsync命令的参数 --ignore-existing -a TBUILD_PLUGIN_PKG_TYPE 指定使用的TBuild版本为snapshot版本还是release版本。不设置时默认使用最新的release版本。 release TBUILD_PLUGIN_PKG_VERSION 指定使用的TBuild版本号。不设置时默认使用最新的release版本。 1.0.1 表2 依赖解析模式 参数项 说明 示例 TB_CPU_NUM 分发任务时,所有机器都以此值计算可分配任务量。默认为空。 16 TB_LOCAL_CONTAIN_PATTERN 根据关键字指定必须分发在client编译的target,此target生成的产物不需要文件传输回主节点。默认为空。 file_contexts.bin,com.android.vndk.current.,out/soong/host/linux-x86/bin/fileslist TB_LOCAL_NOT_CONTAIN_PATTERN 根据关键字指定必须不分发在client编译的target。默认为空。 Bluetooth.so TB_CAPACITY_ALL 单台机器可分配的任务权值上限,单位是分钟,以json文件的时间为参考,此时间为单纯的构建时间,不包括cpu空闲时间,实际构建时间会大于此值。可以指定为小数。超过此上限的target会分发至client,在所有agent编译完成后在本地最后编译。不设置时会根据json文件自动设置。 5.5 TB_TASK_SIZE_ALL 人工指定分割多少份target,可以大于机器数量,建议设置的值略大于机器数量,不建议少于机器数量,会导致机器浪费。不设置时会根据机器数量自动设置。 8 表3 ninja文件缓存选项 参数项 说明 示例 TB_CACHE_SERVER_IP ninja文件缓存开关,和TB_CACHE_ARCHIVE_PATH同时设置时缓存才会开启。 非空值:开启,如果开启了远端缓存,该值视为远端服务器IP。 空值:关闭(默认)。 172.example.example.example TB_CACHE_ARCHIVE_PATH ninja文件缓存本地归档目录,和TB_CACHE_SERVER_IP同时设置时缓存才会开启。 AOSP/ninja_cache TB_CACHE_RECACHE 本次构建会重新生成ninja文件缓存,不会命中历史缓存。 1:开启。 0:关闭(默认)。 1 TB_CACHE_REMOTE ninja文件缓存远端开关,命中时从远端获取缓存,生成缓存时也会归档至远端。 1:开启。 0:关闭(默认)。 1 TB_CACHE_LOCAL ninja文件缓存本地开关,命中时从本地获取缓存,优先级高于远端缓存,生成缓存时也会归档至本地。 1:开启(默认)。 0:关闭。 1 TB_CACHE_DEPENDS 增加指定的文件作为缓存命中的依赖文件,如果该文件产生变化,会使缓存不命中。默认为空。多个文件使用逗号分隔。 build.sh,test.sh TB_CACHE_VERSION 为缓存增加指定的版本号,如果版本号产生变化,会使缓存不命中。默认为空。 1.0 TB_CACHE_EXCLUDE_KEY 缓存时过滤掉带关键字的文件,多个关键字用逗号分隔,默认设置为".glob",可以用空字符串重置。 .so,.glob TB_NINJA_FILE_CACHE 设置被缓存的目录,多个目录使用逗号分隔,默认设置为"out"。 out,test TB_CACHE_NINJA_CACHE_SIZE ninja文件缓存本地归档目录空间上限,超过此上限会根据算法自动清理历史缓存。默认设置为50,单位是G。 100 TB_SKIP_TARGET 归档ninja文件缓存时跳过此target,即使命中ninja文件缓存此target也会重新编译。 update-api
共100000条