编译构建 CodeArts Build
编译构建 CodeArts Build
- 最新动态
- 功能总览
- 产品介绍
- 快速入门
-
用户指南
- 编译构建服务(CodeArts Build)使用流程
- 开通CodeArts Build
- 配置CodeArts Build项目级角色权限
- 新建构建任务
-
配置构建任务
- 构建任务基础配置
- 选择构建步骤
-
配置构建步骤
- 使用Maven构建
- 使用Android构建
- 使用Npm构建
- 使用Gradle构建
- 使用Yarn构建
- 使用gulp构建
- 使用Grunt构建
- 使用mono构建
- 使用PHP构建
- 使用SetupTool构建
- 使用PyInstaller构建
- 使用shell命令构建
- 使用Gnu-arm构建
- 使用CMake构建
- 使用Ant构建
- 使用Kotlin构建
- 使用Go语言构建
- 使用Ionic Android App构建
- 构建Android快应用
- 使用Sbt构建
- 使用Grails构建
- 使用Bazel构建
- 使用Flutter构建
- 使用HarmonyOS构建
- 通过Docker命令操作镜像
- 生成单元测试报告
- 自定义构建环境
- 使用自定义环境构建
- 下载软件发布库中的软件包
- 上传软件包到软件发布库
- 上传文件到OBS
- 配置构建任务参数
- 配置构建任务执行计划
- 配置构建任务角色权限
- 配置构建任务事件通知
- 执行构建任务
- 查看构建任务
- 管理构建任务
- 查询审计日志
- 参考
- 旧版手册页面
-
最佳实践
- 基于Maven构建产物制作Docker镜像并发布到镜像仓(内置执行机/图形化构建)
- 使用Maven构建上传软件包至私有依赖库(内置执行机/图形化构建)
- 使用Maven构建实现私有依赖包的上传及下载引用(内置执行机/图形化构建)
- 使用NPM构建上传软件包至软件发布库(内置执行机/图形化构建)
- 使用自定义执行机执行Maven构建(自定义执行机/图形化构建)
- 使用Maven构建上传软件包和推送镜像到SWR(内置执行机/代码化构建)
- 使用Maven构建执行多任务构建工程(内置执行机/代码化构建)
- 基于私有依赖库使用Maven构建并上传软件包(内置执行机/图形化构建)
- 使用自定义构建环境执行构建任务(内置执行机/图形化构建)
- API参考
-
常见问题
- 通用构建问题
- Maven构建
- Android构建
- Gradle构建
-
Npm构建
- 执行Npm构建时,报错提示JavaScript heap out of memory
- 执行Npm构建时,报错提示enoent ENOENT: no such file or directory
- 执行Npm构建时,报错提示Module not found: Error: Can't resolve ...
- 执行Npm构建失败,但不显示错误日志
- 执行Npm构建时,报错提示npm cb() never called
- 执行Npm构建时,报错提示gyp ERR! stack Error: EACCES: permission denied
- 执行Npm构建时,报错提示eslint: error 'CLODOP' is not defined
- 执行Npm构建时,报错提示node-sass下载失败
- 执行Npm构建时,报错提示error: could not write config file
- Npm构建耗时且安装依赖缓慢
- 执行Npm构建时,报错提示找不到依赖版本
- 镜像问题
- 视频帮助
- 通用参考
链接复制成功!
使用自定义构建环境执行构建任务(内置执行机/图形化构建)
应用场景
在构建过程中,通常会遇到以下这样的场景:
- CodeArts Build默认构建环境中支持的Java版本是1.8,而实际用户需要使用java 21。
- 构建时需要使用企业专有工具,CodeArts Build平台未支持。
针对于以上构建场景,本实践将为您介绍如何使用自定义构建环境执行构建任务。
约束限制
- 已在容器镜像服务中创建组织,组织名称为“hwstaff_codeci_gray”。
- 需已具备CodeArts Artifact服务的操作权限。
- 需已具备CodeArts Repo服务的操作权限。
操作流程
流程 |
说明 |
---|---|
为本实践新建项目。 |
|
为本实践创建构建过程中使用的代码文件。 |
|
制作自定义环境使用的镜像。 |
|
新建本实践中需要使用的构建任务并按照本实践场景配置任务并执行。 |
|
查看本实践的构建结果,包括查看构建日志和结果文件。 |
新建项目
- 使用华为云账号登录华为云控制台页面。
- 单击页面左上角
,在服务列表中选择“开发与运维 > 软件开发生产线 CodeArts”。
- 单击“立即使用”,进入CodeArts服务首页。
- 在首页单击“新建项目”,选用“Scrum”项目模板。
- 项目名称填写“build-bestpractice”,其他保持默认即可。
- 单击“确定”后,进入到“build-bestpractice”项目下。
新建CodeArts Repo代码仓
- 在页面导航栏选择“代码 > 代码托管”。
- 单击“新建仓库”,选择“模板仓库”,单击“下一步”。
- 选择“Java Maven Demo”模板,单击“下一步”。
- 填写代码仓库名称为“custom_env_repo”,其他参数保持默认即可。单击“确定”,代码仓创建完成,跳转到代码仓详情页面。
- 在代码仓根目依次单击“新建 > 新建文件”。
图1 新建文件
- 文件名命名为“Dockerfile”,复制如下代码,粘贴到文件内容,单击“提交”。
FROM ubuntu:latest # set maintainer LABEL maintainer=custom_image RUN apt-get update && apt-get install -y wget RUN mkdir /usr/java && \ cd /usr/java && \ wget "https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz" && \ tar -xvf jdk-17_linux-x64_bin.tar.gz && \ rm -rf jdk-17_linux-x64_bin.tar.gz RUN mkdir /usr/maven && \ cd /usr/maven && \ wget "https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz" && \ tar -xvf apache-maven-3.9.8-bin.tar.gz && \ rm -rf apache-maven-3.9.8-bin.tar.gz ENV JAVA_HOME /usr/java/jdk-17.0.12 ENV MAVEN_HOME /usr/maven/apache-maven-3.9.8 ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin RUN java -version && mvn -v USER build
图2 Dockerfile文件内容“Dockerfile”文件为制作容器镜像环境的主体,文件中定义了如下内容。
表2 Dockerfile文件指令说明 指令
说明
FROM
指定基础镜像,必须为第一个命令。当前案例指定基础镜像为官方的最新ubuntu镜像。
LABEL
用于为镜像添加元数据。
RUN
构建镜像docker build时执行的命令。当前案例安装了三个工具:wget、jdk17、maven 3.9.8。并在设置了环境变量后,执行了jdk、maven对应的版本命令,确认jdk、maven是否正常安装。
ENV
设置环境变量。当前案例设置了jdk、maven的环境变量,并加入到PATH环境变量里面去,方便用户使用jdk、maven的快捷命令。
USER
设置运行容器时的用户。当前案例设置启动容器时的用户为“build”用户。
制作自定义构建环境镜像
- 在页面导航中选择“持续交付 > 编译构建”。
- 单击“新建任务”,根据表3填写参数信息,单击“下一步”。
表3 基本信息配置 参数
说明
任务名称
自定义任务名称,例如:custom_env_task。
代码源
选择构建时拉取的代码源,这里选择“Repo”。
代码仓
选择新建CodeArts Repo代码仓中新建的代码仓库名称“custom_env_repo”。
默认分支
选择默认“master”即可。
- 选择“空白构建模板”,单击“确定”按钮,构建任务创建完成,自动跳转至构建步骤配置页面。
- 在“构建步骤”页签,单击“图形化”,单击“点击添加构建步骤”。
图3 添加构建步骤
- 在右侧区域“容器类”页签中,单击“制作镜像并推送到SWR仓库”所在行的“添加”,按照图4配置参数。其中“组织”选择约束限制中创建的组织名称“hwstaff_codeci_gray”,“镜像名称”输入“custom_ubuntu_image”,“镜像标签”输入“v1.0”,其他参数保持默认即可。
- 单击页面右上角“保存并执行”,在弹出的窗口中单击“确定”,自动跳转到构建任务执行页面。
- “步骤日志”页签中,“构建日志”控制台会滚动打印构建任务执行日志信息。如图5所示,构建日志控制台打印了根据代码仓的“Dockerfile”文件制作容器镜像的日志。
- 待构建任务成功执行完成后,跳转到“容器镜像服务”控制台页面,单击“我的镜像”,单击“自有镜像”页签,单击5中制作的镜像名称“custom_ubuntu_image”,跳转到镜像详情页面。
- 在镜像详情页面单击“编辑”,在弹出的窗口中“类型”设置为“公开”,单击“确定”。
图6 镜像详情
- 在“下载指令”列,复制docker pull后面的完整镜像名称“swr.{regionID}.myhuaweicloud.com/hwstaff_codeci_gray/custom_ubuntu_image:v1.0”并保存到本地,便于后续的构建步骤使用。其中“{regionID}”为当前使用的区域的ID。
图7 完整镜像名称
新建构建任务并执行
- 在编译构建服务页面,单击“新建任务”,按照如下参数说明配置参数,其他参数保持默认即可。
- 名称:自定义构建任务名称,例如“custom_env_build_task”。
- 代码源:选择本次构建拉取的代码源,这里选择“Repo”。
- 代码仓:选择新建CodeArts Repo代码仓中新建的代码仓“custom_env_repo”。
- 单击“下一步”,选择“空白构建模板”。然后单击“确定”,自动跳转到构建步骤配置页面。
- 在“构建步骤”页签,单击“图形化”,单击“点击添加构建步骤”。
- 在右侧区域“容器类”页签中,单击“使用SWR公共镜像”所在行的“添加”,按照图4配置参数。其中“镜像地址”填写10中保存的完整镜像名称“swr.{regionID}.myhuaweicloud.com/hwstaff_codeci_gray/custom_ubuntu_image:v1.0”,将如下代码示例拷贝至“命令”中,其余参数保持默认即可。
java -version # 打印当前镜像里安装的jdk版本号 mvn -v # 打印当前镜像里安装的maven版本号 mvn package -Dmaven.test.skip=true -U -e -X -B # 执行maven构建命令
图8 配置使用SWR公共镜像 - 单击“添加步骤”,添加“上传软件包至软件发布库”构建步骤,“构建包路径”输入“**/target/*.?ar”,其他参数保持默认即可。
- 单击页面右上角“保存并执行”,在弹出的窗口中单击“确定”,跳转到构建任务执行页面。
查看构建结果
- 待构建任务成功执行后,在“步骤日志”页签,单击“构建日志”控制台上的“查看上面日志”,将日志向上滚屏。在日志中找到“Status: Downloaded newer image for swr.{regionID}.myhuaweicloud.com/hwstaff_codeci_gray/custom_ubuntu_image:v1.0”行,说明当前构建环境是基于自定义镜像进行构建的。
图9 查看构建日志
- 单击左侧“上传软件包到软件发布库”构建步骤,在右侧日志控制台打印了本次构建产物上传到软件发布库的信息。
图10 构建产物上传到软件发布库的信息
- 选择页面导航栏“制品仓库 > 软件发布库”,在软件发布库查看发布的软件包。