如何将现有的外部代码库导入到猪齿鱼中

本文介绍了如何将外部代码仓库如Gitlab和github上的应用导入到Choerodon猪齿鱼平台,以及应用市场导入和应用管理页面的导入流程。重点讨论了从gitlab导入应用的原因、过程和原理,强调了Choerodon平台与gitlab的紧密集成以及其带来的便利性。
摘要由CSDN通过智能技术生成

本篇将为大家介绍如何将应用导入到 Choerodon 猪齿鱼。Choerodon 平台上导入应用有两个入口,第一个入口在应用管理页签内,是从 gitlab/github 导入应用,第二个入口在应用市场中,可以在其它平台的应用市场导出后再导入。

为什么要从外部代码管理平台导入应用

Choerodon 平台最开始发布的版本中只有应用市场的导入功能,后来在版本迭代中,越来越多的用户开始搭建并使用了 Choerodon 平台,其中包含了很多其他软件公司。而且这些软件公司有一个共同点,在了解 Choerodon 平台之前,他们的日常开发,产品的迭代已经使用上了 gitlab,所以他们的代码仓库都存在已有的 gitlab 上。

由于 Choerodon 平台与 gitlab 的高度耦合,Choerodon 平台的组织、项目、用户等都和 gitlab 的组、用户等资源一一对应的。Choerodon 的数据库中存了大量两者的中间关系表。所以 Choerodon 一般不建议直接将已有的 gitlab 迁移到 Choerodon 的 gitlab,一方面,gitlab 版本不一致,可能导致迁移失败;另一方面,中间会缺少很多关键数据,严重影响后续的其他功能。在 Choerodon 社区中也有很多用户自行写了脚本去迁移,或者直接迁移数据库,迁移的过程步骤很繁琐复杂,都或多或少出现了问题,出于此,Choerodon 才开发了从 gitlab 或者 github 导入应用到 Choerodon 平台的功能。

在介绍应用导入方法之前,先简单介绍一下应用的代码仓库组成。

Choerodon 代码仓库的主要组成

  1. 各种开发语言或者开发框架的基础代码
  2. Chart 文件夹:Choerodon 持续交付中的应用部署用的是 K8S(开源的容器集群管理系统),helm 是 K8S 一个软件包管理工具,里面存放了大量的 chart 包,每个 chart 包可以定义各种应用部署所需要的 K8S 对象文件,Chart 文件夹就是用来存放打包成 chart 包的文件。
  3. DockerFile:用来打包应用到镜像中,容器化应用,在各种流行的系统中部署,例如 linux,windows 等。
  4. Gitlab-ci.yaml:gitlab-ci 文件是 gitlab runner 所执行的脚本文件,里面可以定义各种脚本,比如在 Choerodon 中各种应用的打包,以及镜像的生成与推送,chart 包的打包与推送都是放在 gitlab-ci 文件中实现。

应用市场中的应用导入

应用市场里面的应用导入,是指从其他 Choerodon 平台的应用市场中导出应用之后,再在自己的 Choerodon 平台中导入。导入导出的内容是一个 tgz 包,里面包含了应用的一个或多个版本对应的 chart 包,导入成功之后,会生成一个没有代码仓库的应用,同时给该应用生成指定的版本。但不能对该应用进行开发生成新版本,应用部署时只能部署导入应用的指定版本。

为什么应用市场中可以导入应用

在自己的平台中,如果开发者的一个服务依赖于 mysql,但是自身平台下并没有开发部署 mysql 的团队,若此时恰好另外一个平台开发了 mysql 应用,就可以在自己的本地下新建一个 mysql 应用,把另外一个平台的 mysql 代码仓库拷贝过来,然后生成版本部署供自己使用。

这个过程很麻烦很繁琐,而且在一段时间内,开发者不会对这个应用进行开发,只需要使用,除非有版本大的更新,这大大消耗了人力物力。Choerodon 的部署是基于 helm chart 的,部署应用只需要对应版本的 chart 包 ,如果提供一个上传下载 chart 包的途径,就能直接拿到 mysql 的 chart 包,然后上传到自己的 chartmusume 仓库中,就可以在本平台进行部署了 。基于这个原因,有了猪齿鱼应用市场以及应用的导出导入功能。

应用市场导入导出的原理

当其他 Choerodon 平台一个应用发布到应用市场之后,可以选择导出应用的一个版本或多个版本的 chart 包(从 chartmusume 仓库中下载下来)和应用的相关信息 json 文件,以及各应用版本的 docker 镜像信息,将其打包成一个 zip 文件。

然后在本 Choerodon 平台中,将之前导出的 zip 导入,此时会解压该 zip 包 ,将其中的应用以及应用版本信息存入数据库中,将其中的 chart 包上传到本平台的 chartmusume 中,将应用版本的 docker 镜像从其它平台的 harbor 库拉取下来,并推送到自己的 harbor 仓库中(如果其它平台镜像不是公开的)。

之后就可以在本平台对于该应用的特定版本进行部署了,简单示例图如下:

应用管理中的导入应用

应用管理里面导入的应用是指从外部代码管理平台(gitlab/github)导入已有的应用到 Choerodon 平台,根据导入时选择的模板类型生成对应的 dockerfile,chart 文件夹,gitlab-ci.yaml 文件。该应用有对应的代码仓库,可以在已有基础上进行开发,并能通过 gitlab 的持续集成生成各种版本,用作后续的部署。

外部应用导入步骤

第一步:应用导入需要填写来源应用的仓库地址,如果之前的代码仓库来源于 github 的仓库,或者 gitlab 的公开仓库,那么不需要填写授权 token,如果是 gitlab 的私有仓库(大部分)则需要填写具有 clone 仓库权限的用户 token。

第二步:填写好名称、编码,选择指定的模板(会根据指定的模板找到指定类型的 dockerfile,charts,gitlab-ci.yaml 文件嵌入到已有的代码仓库中)

第三步:选择特定项目成员或所有项目成员拥有该应用的权限,用于权限隔离

第四步:进行 harbor 仓库和 chart 仓库设置(如无特殊需求,使用默认即可),然后点击导入即可。

外部应用导入实现逻辑

首先将填写的源仓库地址使用 jgit,(jgit 提供了一套类似 Git 命令的 Java API,可以方便地在程序中进行 git 操作)克隆到本地缓存中,填写完仓库地址和 token 之后会校验填写的 token 是否有权限克隆,没有权限则会提示无权限。

然后根据填写的编码去 gitlab 对应的组下面创建一个空的 gitlab project(包含 webhook,以及 ci 需要的 token),再根据所选的应用模板类型去将 Choerodon 模板库克隆模板到本地缓存,并找到模板中的 dockerFile 文件,chart 文件夹,gitlab-ci.yaml 文件。

将找到的模板中的文件赋值到源仓库本地缓存的各个分支中(此过程会校验是否存在对应内容,有则不复制)。之后使用 jgit 操作每个分支,git add , git commit,,更换源仓库的远程 remote(远程 remote 地址为之前在 Choerodon 关联的 gitlab 创建的空 gitlab project 仓库地址)。

最后使用 git push 将合并到好代码推送上去,逻辑图大致如下:

应用导入成功之后,会将原来代码仓库所有的分支,以及分支所有的 commit 记录导入到新的 Choerodon 平台关联的 gitlab 中,并会在数据库中增加对应的记录,实现应用的无缝迁移。

更多 Choerodon 猪齿鱼持续交付相关文章 ▼

关于猪齿鱼

Choerodon 猪齿鱼作为开源多云应用敏捷全链路技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

更加详细的内容,请参阅Release Notes官网

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

本篇文章出自Choerodon猪齿鱼社区朱智阳。

作者:Choerodon猪齿鱼

Choerodon齿是一个开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。 Choerodon提供: 1、全面的工具链支持DevOps最佳实践,从计划,编程,构建,测试,发布和运营支持Scrum管理。 2、一套基于Spring Cloud的微服务应用程序框架,可帮助公司更快,更高效地进行微服务开发。 Choerodon的特征: 1、协作 -结合精益敏捷对业务需求、工作任务进行管理,打造高效协作生态。提供工作列表、故事地图、知识管理等协作工具,是贯穿开发、测试、部署的价值链,促进团队成员沟通交流,降低项目管理成本,提高沟通协作效率。 2、开发 -提供迭代规划和持续集成的流水线,帮助规范应用服务开发,实现快速迭代。以DevOps理念为指引,结合精益看板和Gitlab的分支管理,提供持续集成的流水线,缩短应用服务开发周期,同时提高团队效率,高效频繁向测试团队或者用户交付软件新版本。 3、测试 -敏捷化的持续测试工具,可以有效地提高软件测试的效率和质量。测试管理为用户提供敏捷化的持续测试工具,包括测试用例管理、测试循环、测试分析等,可以有效地提高软件测试的效率和质量,提高测试的灵活性和可视化水平,最终减少测试时间,让用户将主要精力放到软件功能构建上。 4、部署 -流水线式多环境一键部署。用户客户可以方便地使用部署功能管理各种使用Choerodon开发部署的应用服务,包括应用启停、状态监控,以及应用服务对应的版本控制、容器管理等,同时还包括应用服务涉及到的各种资源管理,例如网络、域名、数据服务、缓存服务等。 5、运营 -汇集辅助项目进行管理的各种报表,多维度展示项目进展详情和问题。包含了敏捷报表(累积流量图、燃尽图等)、DevOps报表(代码提交图、代码质量图等)、测试报表。 6、微服务框架 - 基于汉得微服务技术平台HZERO的微服务架构,使用此开发框架,用户可以轻松构建应用服务。 另外,您可以查看Choerodon的屏幕快照以最直观地了解Choerodon,还可以访问Choerodon的网站。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

待治愈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值