步骤1 编写Dockerfile文件,内容如下:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS http://+:80
# env
ENV TZ=Asia/Shanghai
ENV ASPNETCORE_ENVIRONMENT=$ASPNETCORE_ENVIRONMENT COPY src/OrchardCore.Mvc.Web/app .
ENTRYPOINT ["dotnet", "OrchardCore.Mvc.Web.dll"]
步骤2 在代码库中将Dockerfile修改为上述内容,如图:
步骤3 在构建任务中添加“制作镜像并推送到SWR仓库”步骤。
----结束
18 Maven 多模块构建
背景
为方便使用,DevCloud编译构建服务提供了默认的Maven构建命令,可以解决大部分 项目构建场景。但在部分大型Maven项目中,存在多个子模块,使用默认命令会构建 所有模块,耗时较长,影响开发效率。本文目标即为演示在多模块构建场景下,如何 优化构建速度,提高开发效率。
项目说明
本文使用的演示项目为GitHub拉取的开源项目,其中包含1个父pom与7个子模块,项 目结构如下:
目录结构
模块依赖关系
说明
为演示方便本例中假设hope-framework与hope-core为工具模块(构建产物仅作为jar包供其 他模块使用),其余皆为业务模块(构建产物需要部署到服务器节点)。
优化策略
1. 直接构建hope-core,构建报错,提示找不到hope-framework依赖。
2. 为解决1的问题,需要再给hope-framework建立单独的构建任务,将framework 发布到私有依赖库,导致大量构建任务的建立。
3. 开发A修改并发布了hope-framework,hope-core由开发B独立维护,没有同步更 新,最终使用了老版本产物,导致变更不同步。
因此,在调整构建任务之前,需要梳理各个模块之间的依赖关系,根据各个模块的类 型针对性优化。由项目说明到模块依赖关系不难得出以下结论:
● 7个子模块全部依赖父POM hope-boot。
● 子模块hope-admin依赖hope-core、hope-core依赖hope-framework,即:
hope-admin、hope-core、hope-framework,这三个模块需要依次构建。
● 子模块hope-sso-server、hope-generator、hope-quartz、hope-flyway相互独 立,互不影响,可以独立构建。
步骤2 根据依赖关系确定各模块构建命令
● hope-boot(父pom):一般改动较少,直接手工上传到私有依赖仓库即可。
● hope-framework:mvn deploy -pl hope-framework -amd ,其中,-pl 表示此 次构建hope-framework模块, -amd 表示要同时构建依赖hope-framework的所 有模块,deploy表示将framework发布到私有依赖库。
● hope-core:mvn deploy -pl hope-core -amd
● hope-admin:mvn package -pl hope-admin,此处admin为业务模块,无需发 布到私有依赖库,使用package打包后上传到软件发布库即可。
● hope-sso-server:mvn package -pl hope-sso-server
● hope-generator:mvn package -pl hope-generator
● hope-quartz:mvn package -pl hope-quartz
● hope-flyway:mvn package -pl hope-flyway 步骤3 使用构建任务参数化功能精简构建命令
DevCloud编译构建服务提供了参数化功能,可以把构建任务中的命令、代码仓库分支 等参数化,此处借助此功能,将构建的模块名等参数化,以达到精简构建命令/任务数 的目的。
在步骤2中,得到了构建命令列表如下:
mvn deploy -pl ${moduleName} -amd mvn package -pl ${moduleName}
即最终只需建立两个构建任务分别如下:
发布工具模块到私有依赖库:
构建业务模块:
构建任务建立完成后,任意模块有变动,执行对应构建任务即可。
----结束