更新时间:2024-11-21 GMT+08:00
使用编译构建服务的Maven构建上传软件包和推送镜像(X86,预置镜像,代码化构建)
编译构建服务支持通过yaml文件配置构建脚本,用户可以将构建时需要配置的构建环境、构建参数、构建命令、构建步骤等操作,通过yaml语法编写成build.yml文件实现,并且将build.yml文件和被构建的代码一起存储到代码仓库。执行构建任务时,系统会以build.yml文件作为构建脚本执行构建任务,使构建过程可追溯、可还原,安全可信。
本节以使用Maven构建为例,演示基于X86服务器和预置镜像使用代码化构建方式,上传软件包至软件包发布库和制作镜像推送至SWR仓库。
前提条件
- 已注册华为云并实名认证,如果还没有华为账号,请参考以下步骤创建。
- 已开通CodeArts体验版套餐,如果还没有开通,可参考购买CodeArts套餐。
- 已在容器镜像服务中创建组织,如果没有组织,可参考创建组织
准备项目
- 使用华为云账号登录华为云控制台页面。
- 单击页面左上角,在服务列表中选择 。
- 单击“立即使用”,进入编译构建服务首页。单击导航栏“首页”。
- 单击“新建项目”,选用“Scrum”项目模板并将项目名称命名为“Scrum01”,其他参数保持默认即可,然后单击“确定”,进入到“Scrum01”项目下。
新建CodeArts Repo代码仓
- 在页面导航栏中选择 ,进入代码托管页面。
- 单击“新建仓库”,选择“普通仓库”,单击“下一步”。
- 根据表1填写参数后,单击“确定”。
表1 新建代码仓 参数名称
参数说明
代码仓库名称
自定义代码仓名称。例如:maven_yml_build。
- 以数字、字母或者“_”开头。
- 可包含“.”和“-”。
- 不能以“.git”、“.atom”或者“.”结尾。
描述
对代码仓的描述。字符长度范围为0~2000。
选择gitignore
根据编程语言选择“.gitignore”,例如:Java。
初始化设置
勾选全部。
- 允许项目内人员访问仓库:选择后会自动将项目中的项目经理设为仓库管理员,开发人员设为仓库普通成员。当项目新增这两个角色时,也会自动同步到已经存在的仓库中。
- 允许生成README文件:可以通过编辑README文件,记录项目的架构、编写目的等信息,相当于对整个仓库的一种注释。
- 自动创建代码检查任务(免费):仓库创建完成后在代码检查任务列表中,可看到对应仓库的检查任务。
可见范围
设置为“私有”。仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代码。
创建build.yml文件
- 在页面导航中选择 。
- 单击新建CodeArts Repo代码仓中创建的代码仓名称。
- 单击图1所示。 ,如
- 根据表2填写参数信息,单击“确定”。
- 单击步骤4创建的目录名称。
- 单击图2所示。 ,如
- 文件命名为“build.yml”,将如下代码拷贝到文件中。
# This YAML is the default template and can be modified based on this --- version: 2.0 steps: BUILD: - maven: image: cloudbuild@maven3.5.3-jdk8-open inputs: settings: public_repos: - https://mirrors.huawei.com/maven cache: true # 是否开启缓存 command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B - upload_artifact: inputs: path: "**/target/*.?ar" - build_image: inputs: organization: codeci_gray # 组织名称 image_name: maven_demo # 镜像名称 image_tag: 1.0 # 镜像版本 dockerfile_path: ./Dockerfile
- 单击“确定”。
创建Java文件
创建Dockerfile文件
创建pom.xml文件
- 在根目录下,参考6和7,创建名为“pom.xml”的文件。文件中代码如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.huawei.demo</groupId> <artifactId>server</artifactId> <packaging>jar</packaging> <version>1.0</version> <name>server</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> </manifest> <manifestEntries> <Main-Class> HelloWorld </Main-Class> </manifestEntries> </archive> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
- 单击“确定”。
创建编译构建任务
- 在页面导航栏中选择 。
- 单击“新建任务”,在新建任务页面根据表3填写参数信息后,单击“下一步”。
表3 基本信息配置 参数名称
参数说明
任务名称
自定义任务名称,例如:maven_yml_build。
代码源
选择“Repo”。
代码仓
选择新建CodeArts Repo代码仓中创建的代码仓库名称“Repo01”。
默认分支
选择新建CodeArts Repo代码仓中创建的分支。选择默认“master”即可。
- 选择“空白构建模板”,单击“确定”,进入配置构建步骤页面。
- 单击“代码化”页签,可查看到导入的构建脚本,如图3所示。
- 单击“保存并执行”,执行编译构建任务。
查看并验证构建结果
- 查看上传的软件包。
- 查看推送的镜像。
- 进入容器镜像服务SWR。
- 在容器镜像服务页面,单击导航栏“我的镜像”,在组织中筛选创建build.yml文件时代码中填写的“组织名称”,如:codeci_gray。
- 在筛选结果中单击创建build.yml文件时代码中填写的“镜像名称”,如:maven_demo,如图5所示。