华为云用户手册

  • steps参数项详解 steps配置项定义了构建过程,示例中包含如下两个步骤:PRE_BUILD(构建前准备)和BUILD(编译构建)。 PRE_BUILD 此阶段主要做代码下载,参数解释如下: 1 2 3 4 5 6 7 8 9 PRE_BUILD: - checkout: # 代码下载步骤 name: "代码下载" # 步骤名称,可自定义 inputs: # 步骤参数 scm: "codehub " # 代码来源:只支持Repo url: "git@codehub.devcloud.example.example.com:test/python3.git" # 拉取代码的ssh地址。 branch: "master" # 拉取的代码分支。 lfs: false # 选择是否开启Git LFS,false关闭、true开启。构建默认不拉取音视频、图像等大型文件,开启Git LFS后,构建将会全量拉取文件。 submodule: false # false关闭、true开启。开启该功能,系统在构建时会自动拉取子模块仓库的代码。 BUILD 此阶段主要定义了download_artifact插件、tbuild_execute插件和upload_artifact插件,参数解释如下: 1 2 3 4 5 6 7 8 9 10 11 12 BUILD: - tbuild_execute: # 鸿蒙加速场景下固定配置,定义tbuild_execute插件 inputs: # 固定配置 image: "swr.xx-xx-x.myxxcloud.com/buildimage:ohos-x86-v1" # 构建使用的镜像,参考加速前准备章节制作docker镜像。 command: "mv /example/TB1.json OpenHarmony/TB1.json && cd OpenHarmony && BuildAccelerateL3 -HarmonyOS ./build.sh --product-name rk3568 --build-target make_all --ccache false -v && post_build.sh" # command为构建使用的命令,此处将构建分解为两个段落,准备和执行 # mv /example/TB1.json OpenHarmony/TB1.json是依赖解析模式独有的准备步骤,文件名字固定,如果工程中存在多个ninja构建,则文件的下标依次增加,例如TBTrace_target_2.json和TB2.json,以此类推。 # 准备阶段:使用加速前准备章节中获取的./build.sh --product-name rk3568 --build-target make_all --build-only-gn --ccache false -v # 构建阶段:依照加速级别调用加速命令(BuildAccelerateL1 BuildAccelerateL3)的鸿蒙模式(-HarmonyOS)直接执行构建,此处样例取值BuildAccelerateL3 -HarmonyOS # 后处理阶段:以实际工程需要为准,该示例仅使用post_build.sh # 依赖解析模式实际命令最终拼接为"mv /example/TB1.json OpenHarmony/TB1.json && cd OpenHarmony && BuildAccelerateL3 -HarmonyOS ./build.sh --product-name rk3568 --build-target make_all --ccache false -v && post_build.sh" # 产物分类模式实际命令最终拼接为"cd OpenHarmony && BuildAccelerateL3 -HarmonyOS ./build.sh --product-name rk3568 --build-target make_all --ccache false -v && post_build.sh" build.sh样例: 1 2 3 source build/envsetup.sh lunch aosp_x86_64-eng make -j64
  • 配置示例2:产物分类模式 在分支C编写BuildFlow配置中build_ref指定的accelerate.yml,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 version: 2.0 params: - name: TB_RSYNC value: ${WORKSPACE}/OpenHarmony/:out/rk3568 - name: TB_SEARCH_TARGETS_ALL value: "obj/build/ohos/common/generate_src_installed_info.stamp" steps: PRE_BUILD: - checkout: name: "checkout" inputs: scm: "codehub" url: "git@codehub.devcloud.example.example.com:example.git" branch: "master" lfs: false submodule: false BUILD: - tbuild_execute: inputs: image: "swr.example.example.com/buildimage:ohos-x86-v1" command: "cd OpenHarmony && BuildAccelerateL3 -HarmonyOS ./build.sh --product-name rk3568 --build-target make_all --ccache false -v && post_build.sh"
  • params参数项详解 params配置项指定了一些使用鸿蒙构建加速必配的参数,参数说明如下: 参数项 是否必填 说明 示例 TB_RSYNC 是 需要同步的产物文件目录,“:”前为根目录,“:”后为若干个以“,”分隔的子目录,子目录前带“!”代表此目录不同步,不带“!”代表此目录的所有文件会被同步,带“!”的优先级更高。在鸿蒙构建场景下,需要拼接为“${WORKSPACE}/实际目录”。 "${WORKSPACE}/OpenHarmony/:out/rk3568,out/kernel,!out/rk3568/exe.unstripped,!out/rk3568/lib.unstripped,!out/rk3568/innerkits,!out/rk3568/.ninja_,!out/rk3568/Makefile,!out/rk3568/NOTICE_FILES,!out/rk3568/clang_x64/exe.unstripped,!out/rk3568/clang_x64/lib.unstripped,!out/rk3568/mingw_x86_64/lib.unstripped,+out/rk3568/obj/base/security/selinux_adapter" TB_GET_ORI_TRACE 配置示例1:依赖解析模式必填 依赖解析模式下获取当前工程的依赖json文件开关。 1:开启。 0:关闭(默认)。 1 TB_BUILDTRACE_ALL 配置示例1:依赖解析模式必填 依赖解析模式开关,不设置时默认使用配置示例2:产物分类模式。 1:开启。 不设置:关闭(默认)。 非“1”的其他字符串:开启,字符串视为json文件的自定义路径和名字。 OpenHarmony/harmony.json TB_SEARCH_TARGETS_ALL 配置示例2:产物分类模式必填 该值填写工程中汇总了各个模块的target,如鸿蒙的: parts_test.stamp 、generate_src_installed_info.stamp。一般的,这样的target的下一层直接依赖是工程中的多个小模块,如鸿蒙的ark模块、ace模块。这些对应的target在同一个工程里一般不会变化。 "obj/build/ohos/common/generate_src_installed_info.stamp"
  • 配置示例1:依赖解析模式 获取json文件。 在分支A编写BuildFlow配置中build_ref指定的accelerate.yml,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 version: 2.0 params: - name: TB_GET_ORI_TRACE value: "1" steps: PRE_BUILD: - checkout: name: "checkout" inputs: scm: "codehub" url: "git@codehub.devcloud.example.example.com:example.git" branch: "master" lfs: false submodule: false BUILD: - tbuild_execute: inputs: image: "swr.example.example.com/buildimage:ohos-x86-v1" command: "cd OpenHarmony && BuildAccelerateL3 -HarmonyOS ./build.sh --product-name rk3568 --build-target make_all --ccache false -v && post_build.sh && mv out/TBTrace_make_all_1.json /example/TB1.json" 执行分布式构建。 在分支B编写BuildFlow配置中build_ref指定的accelerate.yml,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 version: 2.0 params: - name: TB_BUILDTRACE_ALL value: "1" - name: TB_RSYNC value: ${WORKSPACE}/OpenHarmony/:out/rk3568 steps: PRE_BUILD: - checkout: name: "checkout" inputs: scm: "codehub" url: "git@codehub.devcloud.example.example.com:example.git" branch: "master" lfs: false submodule: false BUILD: - tbuild_execute: inputs: image: "swr.example.example.com/buildimage:ohos-x86-v1" command: "mv /example/TB1.json OpenHarmony/TB1.json && cd OpenHarmony && BuildAccelerateL3 -HarmonyOS ./build.sh --product-name rk3568 --build-target make_all --ccache false -v && post_build.sh"
  • 通过BuildFlow组织加速构建 构建加速需要结合多任务代码化构建使用,可参考多任务YAML文件结构详解中的部分配置。 BuildFlow配置方法如下样例: 1 2 3 4 5 6 7 buildflow: jobs_resolver: # 必配 provider: tbuild_jobs_resolver # 必配,固定值 jobs: # 需要进行编排的任务集 - job: distribute_job # 构建任务名称 build_ref: accelerate.yml # 指定构建加速脚本,脚本名称可自定义 worker: 2 # 指定为16vCPU的倍数,例如2就代表使用了32vCPU进行加速 参数说明如下: jobs_resolver:buildflow的子节点,必配。 provider:此处使用的provider为jobs_resolver的高级选项,意为指定job对应的任务解析器,取值固定为tbuild_jobs_resolver。 jobs:需要进行编排的任务集,此处的jobs作为jobs_resolver的子节点,与普通构建场景buildflow下的jobs子节点有所区别,配置时请注意缩进。 job:构建任务名称,可自定义。 build_ref:该构建任务在构建过程中需要运行的加速构建脚本。 worker:指定为16vCPU的倍数,例如2就代表使用了32vCPU进行加速。
  • 图形化构建 在配置构建步骤中,添加“SetupTool构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 请根据需要选择工具版本。 命令 配置构建打包命令。 可以使用默认的命令打包为“egg”格式的文件。 Python2.7后建议使用python setup.py sdist bdist_wheel,打包为源码包和whl格式的安装包,以便使用pip安装。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 version: 2.0 # 必须是2.0 steps: BUILD: - python: name: SetupTool构建 image: cloudbuild@python3.6 inputs: command: | pip config set global.index-url https://pypi.org/simple pip config set global.trusted-host repo.xxcloud.com python setup.py bdist_egg 参数名 参数类型 描述 是否必填 默认值 name / 构建步骤名称,可自定义。 否 无 image / 镜像版本,“cloudbuild@”为固定部分,后面为支持的Python版本,可在“图形化”构建中查看SetupTool构建支持的“工具版本”。 否 cloudbuild@python3.6 command string 执行命令。可根据实际需要输入相关代码。 是 无
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 version: 2.0 # 必须是2.0 steps: BUILD: - android: inputs: gradle: 4.8 jdk: 1.8 ndk: 17 command: | cat ~/.gradle/init.gradle cat ~/.gradle/gradle.properties cat ~/.gradle/init_template.gradle rm -rf ~/.gradle/init.gradle rm -rf /home/build/.gradle/init.gradle # 使用CodeArts提供的gradle wrapper,充分利用缓存加速 cp /cache/android/wrapper/gradle-wrapper.jar ./gradle/wrapper/gradle-wrapper.jar # 构建未签名的APK /bin/bash ./gradlew assembleDebug -Dorg.gradle.daemon=false -d --stacktrace 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无 gradle string gradle版本。 是 无 jdk string jdk版本。 是 无 ndk string ndk版本。 是 无
  • Android版本说明 SDK:用户项目构建compileSdkVersion版本。 Build Tools:用户项目构建所需buildToolsVersion版本。 两个版本可以在项目下的“build.gradle”文件或是项目的全局配置文件(用户自定义)中找到。 用户需要选择正确的compileSdkVersion版本和buildToolsVersion版本。 也支持Gradle的wrapper构建方式,如果提供的gradle版本没有满足您的要求,您也可以直接使用gradlew命令,使用wrapper去构建,会自动下载您所需要的gradle版本,构建命令例如:./gradlew clean build。
  • 操作步骤 登录编译构建服务首页。 在编译构建首页右上角单击“更多”,在下拉列表选择“自定义构建环境”。 进入自定义构建环境页面,选择合适的基础镜像,单击即可下载Dockerfile模板。 编辑下载的Dockerfile文件。 可根据需要加入项目需要的其他依赖和工具,完成Dockerfile文件自定义,如下为添加了jdk和maven工具的示例。 RUN yum install -y java-1.8.0-openjdk.x86_64 RUN yum install -y maven RUN echo 'hello world!' RUN yum clean all
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 version: 2.0 # 必须是2.0 steps: BUILD: - quick_app: inputs: command: |- npm config set registry http://7.223.219.40/npm/ # 加载依赖 npm install --verbose # 默认构建 npm run build 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 图形化构建 在配置构建步骤中,添加“Android快应用构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 根据需要选择构建工具版本。 命令 配置命令,以下是一个使用debug签名打包的例子。 快应用签名操作: 通过openssl命令等工具生成签名文件“private.pem”、“certificate.pem”,例如: 1 openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem 在工程的“sign”目录下创建“release”目录,将私钥文件“private.pem”和证书文件“certificate.pem”复制进去。 发布程序包前需要增加release签名,然后在工程的根目录下运行: 1 npm run release 生成的应用路径为“/dist/.release.rpk”。 如果需要临时使用debug签名,可以使用: 1 npm run release -- --debug 说明: 由于debug签名是公开的,安全性无法保证,一定不要使用debug签名签发正式上线的应用。
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 version: 2.0 # 必须是2.0 steps: BUILD: - gulp: inputs: command: |- export PATH=$PATH:~/.npm-global/bin npm config set registry http://mirrors.tools.huawei.com/npm/ npm config set prefix '~/.npm-global' #如需安装node-sass #npm config set sass_binary_site https://repo.huaweicloud.com/node-sass/ #npm install node-sass #加载依赖 npm install -verbose gulp 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 version: 2.0 # 必须是2.0 steps: BUILD: - python: name: PyInstaller构建 image: cloudbuild@python3.6 inputs: command: | pip config set global.index-url https://pypi.org/simple pip config set global.trusted-host repo.xxcloud.com # -F创建单一的可执行文件,文件位置在dist目录下 # 详细命令参见: https://pyinstaller.readthedocs.io/en/stable/usage.html pyinstaller -F *.py 参数名 参数类型 描述 是否必填 默认值 name / 构建步骤名称,可自定义。 否 无 image / 镜像版本,“cloudbuild@”为固定部分,后面为支持的Python版本,可在“图形化”构建中查看PyInstaller构建支持的“工具版本”。 否 cloudbuild@python3.6 command string 执行命令。可根据实际需要输入相关代码。 是 无
  • 导读 构建加速服务通过解析鸿蒙构建工程的内部依赖关系,将其拆解分发至多台机器并发执行,结合增量编译技术,实现对软件编译过程的效率提升,支撑企业研发过程的快速迭代,缩短产品的上市周期。 增量编译技术需结合L3级别加速使用。 使用鸿蒙构建加速能力需要购买配套构建加速包,购买方法请参考购买增值特性。 该功能目前仅支持北京四区域使用,其余区域后续上线。 本章节配置仅支持鸿蒙L1、L3级别的加速,L2级别待支持。 构建过程中不允许直接覆盖LD_LIBRARY_PATH和LD_PRELOAD环境变量,建议通过追加的方式使用,例如: 1 "export LD_LIBRARY_PATH=new_path:${LD_LIBRARY_PATH}" 父主题: 鸿蒙构建加速
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 version: 2.0 # 必须是2.0 steps: BUILD: - npm: inputs: command: | export PATH=$PATH:~/.npm-global/bin npm config set registry https://repo.example.com/repository/npm/ npm config set disturl https://repo.example.com/nodejs npm config set sass_binary_site https://repo.example.com/node-sass/ npm config set phantomjs_cdnurl https://repo.example.com/phantomjs npm config set chromedriver_cdnurl https://repo.example.com/chromedriver npm config set operadriver_cdnurl https://repo.example.com/operadriver npm config set electron_mirror https://repo.example.com/electron/ npm config set python_mirror https://repo.example.com/python npm config set prefix '~/.npm-global' npm install --verbose npm run build 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 云审计服务支持的操作列表 通过云审计服务,用户可以记录与编译构建服务相关的操作事件,便于日后的查询、审计和回溯。 开启了云审计服务后,系统开始记录编译构建服务资源的操作。 云审计服务管理控制台保存最近7天的操作记录,查看云审计日志操作请参考查看审计事件请参考。 表1 云审计服务支持操作列表 操作名称 资源类型 事件名称 创建编译构建任务 CloudBuildsServer createJob 执行编译构建任务 CloudBuildServer buildJob 删除编译构建任务 CloudBuildServer deleteJob 更新编译构建任务 CloudBuildServer updateJob 禁用编译构建任务 CloudBuildServer disableJob 解除禁用编译构建任务 CloudBuildServer enableJob 上传keystore文件 CloudBuildServer uploadKeystore 更新keystore文件 CloudBuildServer updateKeystore 删除keystore文件 CloudBuildServer deleteKeystore 初始化EFS目录和存储配额 CloudBuildCache initEFSDirAndQuota 上传报告(包含单元测试和依赖分析) CloudBuildReport uploadReport 创建自定义模板 CloudBuildTemplateService createCustomTemplate 删除自定义模板 CloudBuildTemplateService deleteCustomTemplate 更新nextfs信息 nextfsInfo updateNextfsInfo 创建nextfs nextfsInfo createNextfsInfo 创建租户关联nextfs tenantNextfs createTenantNextfs 删除租户关联nextfs tenantNextfs deleteTenantNextfs 修改租户License信息 licenseInfo updateLicenseInfo 创建租户License licenseInfo createLicenseInfo 创建代码缓存信息 codeCacheInfo createCodeCacheInfo 删除代码缓存信息 codeCacheInfo deleteCodeCacheInfo 创建代码缓存使用记录 cacheHistoryInfo createCacheHistoryInfo 更新代码缓存使用信息 cacheHistoryInfo updateCacheHistoryInfo
  • 代码化构建 1 2 3 4 5 6 7 8 9 10 version: 2.0 # 必须是2.0 steps: BUILD: - php: inputs: command: |- composer config -g secure-http false composer config -g repo.packagist composer http://mirrors.tools.huawei.com/php/ composer install tar -zcvf php-composer.tgz * 参数名 参数类型 描述 是否必填 默认值 command string 执行命令。 是 无
  • 图形化构建 在配置构建步骤中,添加“PHP构建”构建步骤。 参数说明如下: 参数项 说明 步骤显示名称 构建步骤的名称,可自定义修改。 工具版本 根据需要选择工具版本。 命令 配置PHP命令,一般使用系统默认生成的命令即可。如有特殊构建要求,可以在文本域中输入自定义的构建脚本。 说明: 第3行默认命令中“http://mirrors.huaweicloud.com/repository/php/”为官网仓库地址,如果用户访问不了该地址会导致构建失败,需替换成用户可以访问的仓库地址。
  • 高级选项(可选) 高级选项均为非必填选项,在构建过程中有工程无法执行需要特殊适配或优化性能时配置,若随意配置可能会导致构建失败。 表1 通用选项 参数项 说明 示例 TB_GET_TRACE 构建结束后获取依赖json文件文件的开关。 1:开启。 0:关闭(默认)。 1 TB_NINJA_RULE_ALL 用于产物分类模式自定义Target切割及分发,使用逗号分隔需要切割至不同分组的编译产物类别,使用冒号分隔需要切割至同一分组的编译产物类别。使用星号分隔多个ninja工程的配置。不设置时会自动配置合适值。 nonSystem:fonts:media:usr:system_ext,bin_other1:bin:bin_other2:lib:lib64,apex:system_ext_apex:apex_1:system_ext_apex_1:fake_packages:packaging_script,framework:priv-app:priv-app2:priv-app3:app,host,apex_0:system_ext_apex_0,apex_2:system_ext_apex_2:vendor,product:etc*nonSystem TB_TARGETS_LIST_ALL 人工指定分发的target进行编译,每个逗号隔开不同worker的target,每个空格隔开同一个worker的不同target。使用星号分隔多个ninja工程的配置。不设置时会自动配置合适值。 "nonSystem_target,framework_target,lib_target*lib_target" 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 NT 该变量在主节点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
  • steps参数项详解 steps配置项定义了构建过程,示例中包含如下两个步骤:PRE_BUILD(构建前准备)和BUILD(编译构建)。 PRE_BUILD 此阶段主要做代码下载,参数解释如下: 1 2 3 4 5 6 7 8 9 PRE_BUILD: - checkout: # 代码下载步骤 name: "代码下载" # 步骤名称,可自定义 inputs: # 步骤参数 scm: "codehub " # 代码来源:只支持Repo url: "git@codehub.devcloud.example.example.com:test/python3.git" # 拉取代码的ssh地址。 branch: "master" # 拉取的代码分支。 lfs: false # 选择是否开启Git LFS,false关闭、true开启。构建默认不拉取音视频、图像等大型文件,开启Git LFS后,构建将会全量拉取文件。 submodule: false # false关闭、true开启。开启该功能,系统在构建时会自动拉取子模块仓库的代码。 BUILD 此阶段主要定义了download_artifact插件、tbuild_execute插件和upload_artifact插件,参数解释如下: 1 2 3 4 5 6 7 8 9 10 11 12 BUILD: - tbuild_execute: # AOSP加速场景下固定配置,定义tbuild_execute插件 inputs: # 固定配置 image: "swr.xx-xx-x.myxxcloud.com/buildimage:AOSP" # 构建使用的镜像,参考加速前准备章节制作docker镜像。 command: "mv /example/TB1.json AOSP/TB1.json && cd AOSP && chmod a+x build.sh && BuildAccelerateL3 -AOSP ./build.sh && ./post_build.sh" # command为构建使用的命令,此处将构建分解为两个段落,准备和执行 # mv /example/TB1.json AOSP/TB1.json 是依赖解析模式独有的准备步骤,文件名字固定,如果工程中存在多个ninja构建,则文件的下标依次增加,例如TBTrace_droid_2.json和TB2.json,以此类推。 # 准备阶段:在代码仓根目录新建build.sh,内容见build.sh样例 # 构建阶段:依照加速级别调用加速命令(BuildAccelerateL1 BuildAccelerateL3)的AOSP模式(-AOSP)直接执行构建,此处样例取值BuildAccelerateL3 -AOSP # 后处理阶段:以实际工程需要为准,该示例仅使用post_build.sh # 依赖解析模式实际命令最终拼接为"mv /example/TB1.json AOSP/TB1.json && cd AOSP && chmod a+x build.sh && BuildAccelerateL3 -AOSP ./build.sh && ./post_build.sh" # 产物分类模式实际命令最终拼接为"cd AOSP && chmod a+x build.sh && BuildAccelerateL3 -AOSP ./build.sh && ./post_build.sh" build.sh样例: 1 2 3 source build/envsetup.sh lunch aosp_x86_64-eng make -j64
  • params参数项详解 params配置项指定了一些使用AOSP构建加速必配的参数,参数说明如下: 参数项 是否必填 说明 示例 TB_RSYNC 是 需要同步的产物文件目录,“:”前为根目录,“:”后为若干个以“,”分隔的子目录,子目录前带“!”代表此目录不同步,不带“!”代表此目录的所有文件会被同步,带“!”的优先级更高。在AOSP构建场景下,需要拼接为“${WORKSPACE}/实际目录”。 "${WORKSPACE}/AOSP/:out/target/product/generic_x86_64,\!out/target/product/generic_x86_64/obj,\!out/target/product/generic_x86_64/symbols,\!out/target/product/generic_x86_64/obj_x86,\!out/target/product/generic_x86_64/obj_arm,\!out/target/product/generic_x86_64/gen" TB_GET_ORI_TRACE 配置示例1:依赖解析模式必填 依赖解析模式下获取当前工程的依赖json文件开关。 1:开启。 0:关闭(默认)。 1 TB_BUILDTRACE_ALL 配置示例1:依赖解析模式必填 依赖解析模式开关,不设置时默认使用配置示例2:产物分类模式。 1:开启。 不设置:关闭(默认)。 非“1”的其他字符串:开启,字符串视为json文件的自定义路径和名字。 AOSP/aosp.json
  • 配置示例2:产物分类模式 在分支C编写BuildFlow配置中build_ref指定的accelerate.yml,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 version: 2.0 params: - name: TB_RSYNC value: ${WORKSPACE}/AOSP/:out/target/product/generic_x86_64 steps: PRE_BUILD: - checkout: name: "checkout" inputs: scm: "codehub" url: "git@codehub.devcloud.example.example.com:example.git" branch: "master" lfs: false submodule: false BUILD: - tbuild_execute: inputs: image: "swr.example.example.com/buildimage:AOSP" command: "cd AOSP && chmod a+x build.sh && BuildAccelerateL3 -AOSP ./build.sh && ./post_build.sh"
  • 通过BuildFlow组织加速构建 构建加速需要结合多任务代码化构建使用,可参考多任务YAML文件结构详解中的部分配置。 BuildFlow配置方法如下样例: 1 2 3 4 5 6 7 buildflow: jobs_resolver: # 必配 provider: tbuild_jobs_resolver # 必配,固定值 jobs: # 需要进行编排的任务集 - job: distribute_job # 构建任务名称 build_ref: accelerate.yml # 指定构建加速脚本,脚本名称可自定义 worker: 2 # 指定为16vCPU的倍数,例如2就代表使用了32vCPU进行加速 参数说明如下: jobs_resolver:buildflow的子节点,必配。 provider:此处使用的provider为jobs_resolver的高级选项,意为指定job对应的任务解析器,取值固定为tbuild_jobs_resolver。 jobs:需要进行编排的任务集,此处的jobs作为jobs_resolver的子节点,与普通构建场景buildflow下的jobs子节点有所区别,配置时请注意缩进。 job:构建任务名称,可自定义。 build_ref:该构建任务在构建过程中需要运行的加速构建脚本。 worker:指定为16vCPU的倍数,例如2就代表使用了32vCPU进行加速。
  • 配置示例1:依赖解析模式 获取json文件。 在分支A编写BuildFlow配置中build_ref指定的accelerate.yml,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 version: 2.0 params: - name: TB_GET_ORI_TRACE value: "1" steps: PRE_BUILD: - checkout: name: "checkout" inputs: scm: "codehub" url: "git@codehub.devcloud.example.example.com:example.git" branch: "master" lfs: false submodule: false BUILD: - tbuild_execute: inputs: image: "swr.example.example.com/buildimage:AOSP" command: "cd AOSP && chmod a+x build.sh && BuildAccelerateL3 -AOSP ./build.sh && mv out/TBTrace_droid_1.json /example/TB1.json" 执行分布式构建。 在分支B编写BuildFlow配置中build_ref指定的accelerate.yml,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 version: 2.0 params: - name: TB_BUILDTRACE_ALL value: "1" - name: TB_RSYNC value: ${WORKSPACE}/AOSP/:out/target/product/generic_x86_64 steps: PRE_BUILD: - checkout: name: "checkout" inputs: scm: "codehub" url: "git@codehub.devcloud.example.example.com:example.git" branch: "master" lfs: false submodule: false BUILD: - tbuild_execute: inputs: image: "swr.example.example.com/buildimage:AOSP" command: "mv /example/TB1.json AOSP/TB1.json && cd AOSP && chmod a+x build.sh && BuildAccelerateL3 -AOSP ./build.sh && ./post_build.sh"
  • 配置方法 目前仅支持通过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一起确定缓存标签
  • 购买须知 在CodeArts支持的区域内,各区域独立开通购买、独立计费。 您可以购买CodeArts Build套餐,或者开通/购买软件开发生产线服务组合套餐,体验一站式、全流程、安全可信的软件开发生产线。 购买编译构建服务需要您拥有租户账号,或拥有Tenant Administrator权限的IAM用户账号,配置权限策略方法请参考创建用户组并授权。 若已经购买了CodeArts套餐,则无需再单独购买CodeArts Build套餐。
  • 规则说明 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个月”。 自动续费 勾选后将开启自动续费。自动续费规则请参考自动续费规则说明。 下单成功即服务开通成功。
  • 加速前准备 在一般的构建工程中,其构建过程大致分为构建前准备(工具链、代码仓)、构建依赖件准备(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 父主题: 鸿蒙构建加速
共100000条