当前位置: 首页 > 后端技术 > Java

FlowvsJenkins实战对比,如何快速发布Java应用到ECS

时间:2023-04-01 17:21:24 Java

随着计算机技术和业务的不断发展,企业软件的规模越来越大,交付也越来越复杂。DevOps解决方案的持续交付逐渐深入人心,成为企业开发者研发模式的首选。市场上有各种各样的CICD工具,不同的工具有不同的特点。从开源的本地工具Jenkins和TeamCity,到免费的云工具TravisCI和GithubAction,再到云原生时代主打Kubernetes的ArgoCD和TektonPipeline。由于其开源特性和丰富的插件功能,Jenkins长期以来一直是中小企业构建CICD流程的首选。但Jenkins存在维护成本高、配置复杂等缺点,而云-效率流可以更好地解决这些问题。本文从部署Java应用到云服务器(ECS)的场景出发,对比了阿里云云效率流水线和Jenkins的两种构建部署方式,供大家参考。需求分析目前我们有一个存放Java代码的仓库,需要构建源代码,获取构建产品,并将构建产品部署到云服务器(ECS)群中。流程简单抽象如下:以Git仓库https://code.aliyun.com/flow-...SpringBoot项目为例,需要有提供java和maven构建指令的运行环境进行mvnbuild,并将生成的jar包同步到server组,执行应用启动命令(如/home/admin/app/deploy.shrestart)启动应用。ProcessSplittingEnvironmentPreparationFlowFlow作为SaaS服务开箱即用。用户只需要一个阿里云账号,即可开启持续交付之旅。在Flow平台登录阿里云账号后,即可创建新的流水线。JenkinsJenkins是一个开源的CI工具。用户需要提供机器资源来部署JenkinsMaster节点。如果需要在公网环境访问Jenkins页面,通过公网IP或者弹性IP暴露访问地址。以阿里云ECS(Centos8)为例,安装Jenkins的过程包括:#安装git、java基础工具yuminstallgitjava#修改Jenkins配置,如监听端口等vim/etc/sysconfig/jenkinsJENKINS_PORT="8081"#安装Jenkinssudowget-O/etc/yum.repos.d/jenkins.repohttp://pkg.jenkins-ci.org/redhat-stable/jenkins.reposudorpm--importhttps://jenkins-ci.org/redhat/jenkins-ci.org.keysudodnfinstalljenkinssudosystemctlstartjenkinssudosystemctlenablejenkinssystemctlstatusjenkins当Jenkins进程启动后,可以通过机器ip+port访问,登录Jenkins页面.主机组配置我们把最终运行java应用的服务器称为主机组的概念,可以包括n>=1台服务器。FlowFlow主机组支持两种类型,包括阿里云ECS和可以访问公网的阿里云主机。以阿里云账号登录ECS为例:进入主机组管理页面,进入“企业设置”*b中的主机组管理。单击创建按钮并选择阿里云ECSc。新建服务授权,选择ECS实例。这样就完成了主机组的配置,后面在管道部署节点中会用到。Jenkins以通过ssh私钥访问服务器为例。首先,我们需要在机器上生成一对rsa密钥。执行命令,一路回车。ssh-keygen-trsa-mPEM在~/.ssh目录下可以看到。key文件,复制id_rsa私钥内容[root@iZbp1614mku6kuzmrnyi6uZ.ssh]#ls-altotalusage16drwx-----2rootroot80May3014:26.dr-xr-x---.7rootroot233May3014:43..-rw-------1rootroot1574May3014:26authorized_keys-rw-------1rootroot2455May3014:26id_rsa-rw-r--r--1rootroot582May3014:26id_rsa.pub-rw-r--r--1rootroot173May3013:55known_hosts访问Jenkins添加Credentials配置页面,比如http://xxxx:8081/credentials/...访问远程主机配置页面,如http://xxxx:8081/configure,选择新建的凭证,测试连接连通性。至此,我们完成了一台主机的配置(注:Jenkins和Java服务器在同一网络下,服务器不需要开通公网访问,否则需要申请配置一个IP,即可从公共网络访问)。而Flow可以通过阿里云助手通道下发指令,减少配置公网IP或者弹性EIP。构建、部署和配置Flowa。选择JavaBuildanddeploytoAlibabaCloudECS/ownhosttemplateb.添加示例代码库(Java、SpringBoot)c.点击Java构建上传任务,可以轻松选择JDK和Maven版本,配置构建指令。d.在构建上传任务中,直接输入多个打包路径生成构建产品,如defaulte。在部署任务中,选择“下载产品”,勾选配置的主机组,选择下载产品路径,执行用户并执行命令,点击“保存并允许”,触发流水线实例运行。(Flow支持发布暂停、批量发布等部署策略,参考)f.在构建节点中可以看到,Flow默认使用http://maven.aliyun.com/仓库进行mvn构建,并使用m2缓存加速Build,省去每次从nexus仓库下载jar的耗时。G。在构建上传步骤可以看到mvn构建的工作空间中的jar包和deploy.sh被打包上传到远程存储中。H。您可以直接在流水线实例页面下载默认的产品包。我。点击部署任务可以看到部署详情,比如部署时间、日志等。至此,我们在Flow中已经完成了Clonegitrepo->MvnBuild->DeployToECS的流程。詹金莎。访问http://xxxx:8081/newJob开始新工作b.配置git仓库源地址c.配置mvn执行命令强烈建议生产环境隔离Jenkins、应用构建和部署机器)d.保存任务配置,触发任务运行,访问http://xxxx:8081/job/daily-de...任务日志详情页面,可以看到Jenkins会将代码库clone到/var/lib/jenkins/workspace/daily-deploy-test,执行mvnbuildanddeploy.sh脚本。至此,我们已经完成了Clonegitrepo->MvnBuildinJenkins->DeployToECS的流程。综上所述,我们可以看到Flow在软件持续交付的场景下做了很多有用的功能,让用户可以专注于业务逻辑本身。你的团队是如何做CICD的?欢迎分享查看实用文档快速上手:https://help.aliyun.com/docum...关于我们想了解更多云效应DevOps最新动态,可以搜索关注【云效应】公众号微信;复活节彩蛋:公众号在后台回复【攻略】,即可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》;看完后,如果对你有帮助,别忘了点赞、收藏和关注;