云效(原RDC)如何构建一个基于Maven的Java项目
2017-10-26 00:00
627 查看
创建完应用后,进入【项目】–》【流水线】,找到刚才创建应用的【同名流水线】
点击流水线名称可以看到具体的流水线运行情况和对应节点,如下图:
可以看到有4个面板:构建、日常、预发、正式。
分别对应的是:构建打包、发布到日常环境、发布到预发环境、发布到正式环境。
RDC在创建应用时自动的为你生成了一个标准模板流水线,但是我们一般用不着,所以需要对流水线进行修改,去除无用的节点,添加我们自己的配置。点击界面上的【编辑流水线】按钮就可以进入修改界面。
我们先从构建开始,所以先暂时删除日常、预发、正式这3个部署节点,仅保留构建这一个节点即可。下面的配置暂时不进行调整。删除完毕后保存流水线即可,效果如下:
至此我们已经完成了基础的准备工作,下一步就开始进行代码的构建工作了。
在开始下一步工作之前,请重新git pull一下您的代码到本地,会看到一个由RDC服务自动生成的配置文件:xxx.release 这个文件相当重要,请注意,下面将会说明如何通过此文件完成个性化构建。
这里需要找到我们上一章节中提到的:xxx.release 文件,xxx代表你的应用名,所以我这里看到的文件名是:ms-autotags.release
这个文件的配置规范可以参考:https://help.aliyun.com/document_detail/59293.html
打开这个文件可以看到,已经有一些预先定义好的配置:
上面的配置是不能用的,我们需要将其修改为如下内容:
↓↓↓↓ 配置说明:
代表使用的是java作为代码语言类型。支持以下枚举(因为RDC经常更新,请以官方为准):
php5.6,php7.0,node6.x,node7.x,node8.x,oracle-jdk1.7,oracle-jdk1.8, oracle-jdk1.9,scripts
如果有使用过jenkins的同学,那么应该比较好理解,RDC的构建是通过Docker容器技术实现的,类似于配置好环境的jenkins构建机,RDC团队针对各种语言准备了不同的镜像作为构建宿主。
使用3.2.5版本的maven。
指明一个产出物,可以是目录也可以是具体的文件,比如jar包或者war包。如果执行完构建后此目录、文件不存在,则代表构建失败,无法进入工作流下一环。
简单maven项目不需要设置 build.command,除非你需要设置特别的maven打包参数或有多行打包命令。
我们已经完成了应用的创建+流水线的修改,那么我们运行一次构建试一下,只需要点击【运行流水线】按钮即可,运行后等几秒刷新一下页面,效果如下:
可以看到执行时间、版本号、日志、操作人等信息。
如果构建失败了,可以通过构建流程—-日志详情面板看到具体的错误原因,有日志排查起来不太难,但是RDC的构建还是偏向黑盒,所以尽量熟练或在本地先把相关命令跑通后再上传到xxx.release文件里去进行RDC构建。
可以看到初始的版本号是:v0.0.1-1,如果你的构建一直失败,版本号会变成v0.0.1-3、v0.0.1-8、v0.0.1-18、v0.0.1-N。
如果你的流水线全流程跑完了,则会自动叠加一个小版本号变为v0.0.2-1,所以这种构建方式清晰明了,还算好用。
相对于单纯的构建,如果需要生成Docker镜像则需要补充几个配置项,拆解说明如下:
指明dockerfile文件的位置和文件名,默认就是根目录下的Dockerfile文件。
指定你的docker镜像仓库,建议使用阿里云提供的仓库,免费,速度快,可以加速docker hub的内容,无缝对接RDC服务,地址是 dev.aliyun.com ,此处的xxx对应的是你的名称空间,abced对应的是你的镜像名称。
这里指定你的docker镜像的tag名,使用了环境变量进行拼接。
${PACKAGE_LABEL}代表的是包名,这个参数在流水线配置里可以改,默认是default。
${TIMESTAMP}代表的是当前时间戳,格式是:20171008224350 这种样子。
有的项目一份代码可能产生多个docker镜像就需要通过这种方式来动态生成tag名,防止覆盖,也便于回滚。
关于构建传参,可以参考这个文章: https://help.aliyun.com/document_detail/59297.html
那么此处最终生成的tag名是这样的: ci-default-20171008224350
结合仓库名和镜像名,最终会生成镜像tag地址为:
registry.cn-hangzhou.aliyuncs.com/xxx/abced:ci-default-20171008224350
输出成Docker镜像后,如何使用RDC部署到容器相关问题我会单独开一个文章来分享。
文章原文出处:qipangzi.com (个人博客)
点击流水线名称可以看到具体的流水线运行情况和对应节点,如下图:
可以看到有4个面板:构建、日常、预发、正式。
分别对应的是:构建打包、发布到日常环境、发布到预发环境、发布到正式环境。
RDC在创建应用时自动的为你生成了一个标准模板流水线,但是我们一般用不着,所以需要对流水线进行修改,去除无用的节点,添加我们自己的配置。点击界面上的【编辑流水线】按钮就可以进入修改界面。
我们先从构建开始,所以先暂时删除日常、预发、正式这3个部署节点,仅保留构建这一个节点即可。下面的配置暂时不进行调整。删除完毕后保存流水线即可,效果如下:
至此我们已经完成了基础的准备工作,下一步就开始进行代码的构建工作了。
在开始下一步工作之前,请重新git pull一下您的代码到本地,会看到一个由RDC服务自动生成的配置文件:xxx.release 这个文件相当重要,请注意,下面将会说明如何通过此文件完成个性化构建。
二、基于Maven的Java项目构建
因为java类项目一般都通过maven来维护第三方库,并且一般会通过maven来进行构建,所以在RDC构建时需要完成依赖下载及编译的相关工作。这里需要找到我们上一章节中提到的:xxx.release 文件,xxx代表你的应用名,所以我这里看到的文件名是:ms-autotags.release
这个文件的配置规范可以参考:https://help.aliyun.com/document_detail/59293.html
打开这个文件可以看到,已经有一些预先定义好的配置:
# 构建源码语言类型 code.language=scripts # 应用部署脚本 deploy.appctl.path=deploy.sh # Docker镜像构建之后push的仓库地址 docker.repo=registry.cn-hangzhou.aliyuncs.com/xxx/abced
上面的配置是不能用的,我们需要将其修改为如下内容:
# 语言类型,需要修改,否则无法调用对应的构建环境 code.language=java # JDK版本 baseline.jdk=jdk-1.8 # 构建打包所用的maven版本 build.tools.maven=maven3.2.5 #产出物 build.output=target/ms-autotags-1.0-jar-with-dependencies.jar # 应用部署脚本,先注释掉,暂时用不上 # deploy.appctl.path=deploy.sh
↓↓↓↓ 配置说明:
code.language=java
代表使用的是java作为代码语言类型。支持以下枚举(因为RDC经常更新,请以官方为准):
php5.6,php7.0,node6.x,node7.x,node8.x,oracle-jdk1.7,oracle-jdk1.8, oracle-jdk1.9,scripts
如果有使用过jenkins的同学,那么应该比较好理解,RDC的构建是通过Docker容器技术实现的,类似于配置好环境的jenkins构建机,RDC团队针对各种语言准备了不同的镜像作为构建宿主。
build.tools.maven=maven3.2.5
使用3.2.5版本的maven。
build.output=target/ms-autotags-1.0-jar-with-dependencies.jar
指明一个产出物,可以是目录也可以是具体的文件,比如jar包或者war包。如果执行完构建后此目录、文件不存在,则代表构建失败,无法进入工作流下一环。
简单maven项目不需要设置 build.command,除非你需要设置特别的maven打包参数或有多行打包命令。
我们已经完成了应用的创建+流水线的修改,那么我们运行一次构建试一下,只需要点击【运行流水线】按钮即可,运行后等几秒刷新一下页面,效果如下:
可以看到执行时间、版本号、日志、操作人等信息。
如果构建失败了,可以通过构建流程—-日志详情面板看到具体的错误原因,有日志排查起来不太难,但是RDC的构建还是偏向黑盒,所以尽量熟练或在本地先把相关命令跑通后再上传到xxx.release文件里去进行RDC构建。
可以看到初始的版本号是:v0.0.1-1,如果你的构建一直失败,版本号会变成v0.0.1-3、v0.0.1-8、v0.0.1-18、v0.0.1-N。
如果你的流水线全流程跑完了,则会自动叠加一个小版本号变为v0.0.2-1,所以这种构建方式清晰明了,还算好用。
三、如何输出为一个Docker镜像
我们已经完成了代码的打包编译工作,下一步我们需要把完整的代码封装成一个Docker镜像,我们需要对xxx.release文件做如下改动:# 语言类型,需要修改,否则无法调用对应的构建环境 code.language=java # JDK版本 baseline.jdk=jdk-1.8 # 构建打包所用的maven版本 build.tools.maven=maven3.2.5 #产出物 build.output=target/ms-autotags-1.0-jar-with-dependencies.jar # Docker 构建配置 docker.file=Dockerfile # Docker镜像构建之后push的仓库地址 docker.repo=registry.cn-hangzhou.aliyuncs.com/xxx/abced docker.tag=ci-${PACKAGE_LABEL} # 应用部署脚本,先注释掉,暂时用不上 # deploy.appctl.path=deploy.sh
相对于单纯的构建,如果需要生成Docker镜像则需要补充几个配置项,拆解说明如下:
docker.file=Dockerfile
指明dockerfile文件的位置和文件名,默认就是根目录下的Dockerfile文件。
docker.repo=registry.cn-hangzhou.aliyuncs.com/xxx/abced
指定你的docker镜像仓库,建议使用阿里云提供的仓库,免费,速度快,可以加速docker hub的内容,无缝对接RDC服务,地址是 dev.aliyun.com ,此处的xxx对应的是你的名称空间,abced对应的是你的镜像名称。
docker.tag=ci-${PACKAGE_LABEL}-${TIMESTAMP}
这里指定你的docker镜像的tag名,使用了环境变量进行拼接。
${PACKAGE_LABEL}代表的是包名,这个参数在流水线配置里可以改,默认是default。
${TIMESTAMP}代表的是当前时间戳,格式是:20171008224350 这种样子。
有的项目一份代码可能产生多个docker镜像就需要通过这种方式来动态生成tag名,防止覆盖,也便于回滚。
关于构建传参,可以参考这个文章: https://help.aliyun.com/document_detail/59297.html
那么此处最终生成的tag名是这样的: ci-default-20171008224350
结合仓库名和镜像名,最终会生成镜像tag地址为:
registry.cn-hangzhou.aliyuncs.com/xxx/abced:ci-default-20171008224350
四、后记
NodeJS构建 + Docker构建就说到这里,因为主要是为了介绍RDC,所以Docker部分就挑重点讲了,如何编写Dockerfile文件请自行学习。输出成Docker镜像后,如何使用RDC部署到容器相关问题我会单独开一个文章来分享。
文章原文出处:qipangzi.com (个人博客)
相关文章推荐
- 云效(原RDC)如何构建一个基于Maven的Java项目
- 用Maven如何构建一个基于Hibernate Annotation的web项目?
- RDC如何构建一个基于Composer的PHP项目
- RDC如何构建一个基于NodeJS的前后端项目
- 如何用Maven构建一个project(二)—创建Web项目
- 通过maven构建一个java项目
- Maven&Ant:Apache Maven一个潜在的基于java的apache ant的构建工具的替代者。
- intellijidal如何将一个普通的java项目转变成maven项目
- 【Maven】创建一个结构清晰基于Maven的JavaWeb项目
- 译:Apache Maven-简化java的构建过程--比apache ant更多(2) 创建一个简单的maven项目
- 如何使用IDEA15以及maven构建java web项目
- 如何用Maven创建一个普通Java项目
- 使用Maven构建一个JavaWeb项目
- 如何使用IntelliJ IDEA 创建基于Maven构建的Web项目的过程
- maven入门之如何构建maven 创建一个helloworld项目
- 如何构建基于maven管理的spring web项目
- Maven构建一个简单的Java项目
- Redhat上为java Maven项目构建基于Jenkins + Github的持续集成环境
- 如何把一个基于Maven项目所有的jar文件快速列出到Excel?