本文以一个 Java + Maven + 一台 ECS 主机构建部署示例,教您如何快速使用云效流水线 Flow 发布一个项目。
前提条件
准备一台阿里云 ECS 主机实例或者其它主机实例,并且已安装Java环境,接入云效自定义的主机组,具体详情请参阅主机组管理。
步骤一:新建流水线
进入流水线 Flow,在我的流水线页面右上角单击新建流水线,打开选择流水线模板弹窗,选择开发语言查看默认模板,快速创建流水线。
单击 Java,选择 Java · 测试、构建、部署到阿里云ECS/自有主机模板,单击创建,进入流水线编辑页面。
步骤二:编排流水线
添加流水线源
进入流水线编辑页面,单击流程配置页签,打开添加流水线源,选择示例代码源,默认选中 Java 代码类型,自动填充代码仓库地址、默认分支、工作目录等。本例使用云效示例代码库 ,无需修改。
单击添加,流水线源区域便会出现已添加的流水线源。
配置Mavan单元测试
单击Maven单元测试,打开任务配置面板。
为了保证本教程中应用能够顺利完成部署流程,此处请暂时取消勾选测试用例失败时,停止流水线,以便即使单元测试失败,流水线仍可继续执行后续部署步骤。
重要本教程中“取消测试用例失败时,停止流水线”的配置仅用于演示和学习目的,旨在帮助您快速完成从构建到部署的全流程验证。实际生产环境中,建议保持勾选测试用例失败时,停止流水线。
选择构建集群
在流水线编辑页面,构建任务的构建集群为必填配置项。在构建任务配置面板的构建集群下拉框中选择构建集群:
云效默认构建集群:公共构建集群(北京、杭州、香港),无需额外配置。
云效托管 VPC 构建集群:在您的 VPC 中创建构建环境,网络更安全。
云效私有构建集群:专属构建集群。
如无可用构建集群,请前往构建集群管理创建。
配置Java构建任务
单击 Java 构建上传任务,打开任务配置面板。
查看 Java 构建步骤配置,可按需修改:确认 JDK 版本选择 JDK 1.8,Maven 版本选择 Maven 3.5.2,构建命令保持默认的 Maven 构建命令。
查看 构建物上传步骤配置,可按需修改。本例中,需要将
target/application.jar和deploy.sh两个文件打包到制品中:上传方式选择 归档至云效公共存储空间(供后续任务拉取并部署),制品名称为Artifacts_${PIPELINE_ID},打包路径填写上述两个文件路径,并勾选 制品中包含打包路径的目录。
配置主机部署任务
单击主机部署任务,打开任务配置面板。
配置如下表单:
制品:下拉选择上游构建阶段的产物。
主机组:选择待部署的主机组。如无主机组,具体请参见主机组。如需要多主机组部署可增加并行部署任务。
下载路径:该路径为构建上传步骤中打包的制品要被下载到您的主机上的路径。本例中为:
/home/admin/app/package.tgz。执行用户:填写执行部署脚本的用户,如
root或者admin等。本例中为:root。部署脚本:实际的部署脚本已经打包到了构建产出的压缩包中,因此部署脚本可以简单的进行解压和执行。填写如下部署脚本:
mkdir -p /home/admin/application tar zxvf /home/admin/app/package.tgz -C /home/admin/application/ sh /home/admin/application/deploy.sh restart
运行流水线并查看Java构建部署结果
上述配置完成,单击保存并运行,打开运行配置弹窗。默认 master 分支,单击运行即可触发流水线运行,进入流水线运行页。
流水线运行完成后,运行页面显示所有阶段(测试、构建、部署)均为 运行成功状态,可单击各任务卡片中的 日志查看执行详情。
流水线触发运行后,在 Java 构建步骤中可查看 Maven 构建日志,示例输出:
[executionStep begins at 2024-10-11 14:22:20] [INFO] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [14:22:20] [SUCCESS] 获取 Credential 成功 [14:22:20] [INFO] 使用工作路径/root/workspace/spring_boot_PP0D 加载用户自定义环境变量 USER_KEY=0.0.1 USER_KEY2=value2 [14:22:20] [INFO] 上下文初始化 [INFO] PIPELINE_ID=3597198 [INFO] PIPELINE_NAME=流水线 2024-10-11 [INFO] BUILD_NUMBER=3 [INFO] EMPLOYEE_ID=66a6f60e368d88cff5a513fc [INFO] WORK_SPACE=/root/workspace [INFO] PROJECT_DIR=/root/workspace/spring-boot_PP0D [INFO] BUILD_JOB_ID=253376730 [INFO] CI_RUNTIME_VERSION=jdk1.8 [INFO] 本企业启用了云效的maven私有仓库服务,默认的settings.xml会包含云效的私有仓库配置。如果你想在构建时使用自定义的settings.xml,可以联系企业管理员设置全局自定义settings.xml 或者 将settings.xml放置到代码库根目录,然后在maven构建命令中加入 -s settings.xml 即可。 [14:22:20] [INFO] 执行步骤 [14:22:20] [INFO]加载基础缓存 [14:22:20] [INFO]执行用户命令 [14:22:20] [User Command] + mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip [14:22:21] [INFO] Scanning for projects... [14:22:21] [INFO] [14:22:21] [INFO] ------------------------------------------------------------------------ [14:22:21] [INFO] Building spring-boot-hello-world 0.0.1-SNAPSHOT [14:22:21] [INFO] ------------------------------------------------------------------------ [14:22:22] [INFO] [14:22:22] [INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ spring-boot-hello-world --- [14:22:22] [INFO] [14:22:22] [INFO] --- jacoco-maven-plugin:0.8.5:prepare-agent (default-prepare-agent) @ spring-boot-hello-world --- [14:22:22] [INFO] argLine set to -javaagent:/root/.m2/repository/org/jacoco/org.jacoco.agent/0.8.5/org.jacoco.agent-0.8.5-runtime.jar=destfile=/root/workspace/spring-boot_PP0D/target/jacoco.exec [14:22:22] [INFO] [14:22:22] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ spring-boot-hello-world --- [14:22:23] [INFO] Using 'UTF-8' encoding to copy filtered resources. [14:22:23] [INFO] Copying 1 resource [14:22:23] [INFO] Copying 0 resource [14:22:23] [INFO] [14:22:23] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ spring-boot-hello-world --- [14:22:23] [INFO] Changes detected - recompiling the module! [14:22:23] [INFO] Compiling 3 source files to /root/workspace/spring-boot_PP0D/target/classes单击主机部署任务卡片上的部署详情可以查看部署单详情。部署信息包括:部署单 ID 为 50957834,主机失败率 0.00%,完成机器 1/1,部署耗时 8 秒,部署批次 1/1。下方主机列表中目标主机状态为 已完成即项目发布完成,可单击 日志查看该主机的部署日志。
配置运行时通知
如有需要,流水线中可配置消息通知,可以将流水线运行过程中的信息反馈给相应同学,便于快速定位和排查问题。