开箱即用的流水线
内置自动化工具
使用Jenkins流水线实现DevOps
持续交付平台是基于云原生的PaaS平台,核心功能是提供以应用为中心,从代码管理、构建、镜像管理、部署、运行管理,贯穿整个CI/CD流程的开发运维管理平台。通过自动化的软件交付流程,使得构建、发布软件更加的快捷、频繁和可靠。
团队
1.平台通过团队来管理应用,此应用所属的团队拥有此应用的操作权限
2.团队拥有者可以对团队进行管理,包括团队成员管理与团队的注销与移交
应用
1.一组提供完整功能的程序的集合,如国铁商城、持续交付平台,可能是一个组件、或前端、后端、数据库等多个组件组成
2.一个产品可能由一个或多个应用组成
组件
1.团队自研的独立的可运行程序,研发运维的最小单元,如一个微服务、一个前端页面。
2.一个组件有一个完整的CI/CD流程,一个应用可能包含一个或多个组件
集群
1.集群(cluster)是由多台物理机或虚拟机组成的有机整体,主要用于资源管理和服务部署运行
2.集群属于企业的一种资源,需要被添加到企业内才能够使用。企业可以拥有任意数量的集群,例如创建两个集群,分别用于开发测试和生产部署
环境
1.环境是应用的一个逻辑概念,每个应用都有开发、测试、和生产三大环境。三个环境可以共享一个集群也可以单独拥有一个
2.资源预算充足的情况下,建议每个环境独占一个集群。至少生产环境应该独占一个集群
URL:https://devops.dev.rdev.tech/
注册
1.首页点击【注册】
2.输入注册信息,点击【注册】完成注册
登录
用户输入注册好的用户名和密码,登录持续交付平台。
进入应用管理,通过
方式一: 创建应用
方式二:加入团队进而加入团队研发 的应用
两种方式进入应用
进入应用后,可以对应用的持续交付全流程管理,包括:
•代码管理(以组件为单位)
•流水线管理(以组件为单位)
•镜像仓库
•应用监控
•部署管理
•中间件管理
在创建应用时,可以为应用配置运行环境,一般分为开发环境、测试环境和生产环境
环境介绍:
开发环境:开发人员的调试环境,保证本地调试通过的代码在开发环境中没有问题
测试环境:与用户环境一致的用来测试系统的环境,经开发人员调试之后的代码构建部署至测试环境,供测试人员进行测试,保证应用各功能正常
生产环境:用户使用的环境,测试完成后正式上线的版本在这里部署,用户访问的应用运行在生产环境中
参数介绍:
集群信息:持续交付平台运行在K8S集群中,需要输入目标集群的IP和应用运行的namespace名称,应用部署后将运行在这个命名空间下
CD地址:一个集群对应一个CD工具,应用通过CD工具将镜像部署至目标环境中运行,在CD地址中输入此集群对应的CD工具地址
进入应用后,可以查看应用的概览信息,包括:
• 应用拓扑图,即应用包含的组件与中间件,以及依赖关系
• 应用近期的代码合并状态
• 应用近期的流水线构建情况
• 应用当日的持续交付工作统计
进入应用管理——应用组成——组件查看或创建组成应用的自研组件
每一个组件是一个独立的可单独运行的程序,可管理的内容有:
• 代码
• 代码分支
• 流水线
• 镜像
• 部署管理
• 运行环境
进入应用管理——应用组成——中间件查看或选择应用需要的中间件
中间件是指非团队开发的服务或工具,如apisix、mysql等
• 要求中间件已经在集群中部署
• 中间件已经在容器平台中申请部署的,可直接选择
• 中间件未在容器平台中申请部署的,通过集群中服务选择
• 应用中的中间件仅可查看基本信息和运行状态,操作请在容器平台中进行
进入应用管理——组件——代码仓对组件代码进行管理
在组件的代码仓中可对组件的代码进行常规管理,包括:
• 代码检出
• 文件预览
• 分支创建
• 分支合并
• 查看提交历史
进入应用管理——组件——流水线对组件流水线进行管理
在组件的流水线中可为组件创建流水线、查看运行状况及手动触发,具体包括:
• 提供流水线模板
• 支持添加Git webhook
• 内置Sonarqube代码扫描
• 实时查看构建情况
• 查看流水线构建日志
• 自动构建推送镜像至镜像仓库
进入应用管理——组件——代码质量查看组件代码质量报告
在组件的代码质量中可为查看组件代码质量扫描结果:
• 集成Sonarqube进行代码扫描
• 在构建过程中进行扫描,扫描不通过可终止构建
• 可查看不同分支的扫描结果
• 可查看历史扫描结果
进入应用管理——组件——制品管理查看组件不同版本的制品
在组件的制品中可为查看不同版本的组件镜像,可以下载和删除:
• 组件所有历史构建的镜像仓库
• 流水线构建完成后自动推送至镜像仓库,可在制品管理中查看
进入统计分析可以查看应用及其组件的图表化统计数据,帮助产品研发团队更好的掌握产品研发工作概况
可以通过切换查看不同的应用组件统计数据,可以查看的数据有:
• 组件近期代码的提交情况
• 组件最近几次的代码提交记录
• 组件代码最近的合并情况
• 组件的历史构建情况及最近一次构建时间
• 组件最近一次代码扫描结果概况
• 组件在不同环境的部署情况
1.在应用列表中点击【创建应用】
2.在创建应用页面输入相关信息。
3.点击【确定】完成应用创建
字段解释
应用名称:在应用列表中及应用内显示的名称,中英文都可
应用标识:应用唯一标识,此标识会成为当前应用在制品仓库、代码仓库的标识
集群资源:应用的运行集群环境,需要选择集群并输入命名空间,应用将会被部署在这些环境中运行
•应用概览中可以查看应用基本信息,包括
•应用所有组件流水线构建情况
•应用组件的近期代码合并情况
•应用当日的持续交付工作动态
•应用组成及其依赖关系
进入应用管理——应用组成——组件查看或创建组成应用的自研组件
每一个组件是一个独立的可单独运行的程序,可管理的内容有:
•代码
•代码分支
•流水线
•镜像
•部署管理
•运行环境
进入应用管理——应用组成——中间件查看或选择应用需要的中间件
中间件是指非团队开发的服务或工具,如apisix、mysql等
•要求中间件已经在集群中部署
•中间件已经在容器平台中申请部署的,可直接选择
•中间件未在容器平台中申请部署的,通过集群中服务选择
•应用中的中间件仅可查看基本信息和运行状态,操作请在容器平台中进行
在应用中点击选择制品库可以查看当前应用制品库中的全部制品,包括应用或中间件,所有被推送到该应用对应的仓库中的镜像都可以在这里看到,对应的制品仓库可以在应用设置中修改
点击某一镜像名称可以查看该组件/中间件下所有的镜像制品
一个应用由多个组件和中间件构成,一个版本的应用是由特定版本的组件和中间件构成。
在应用管理—部署管理可以查看当前应用在不同环境中部署运行的组件及其版本
基本信息
点击基本信息,可以修改应用的基本信息,包括应用名称、应用标识、负责人、研发团队(可以是多个团队共同研发)、状态以及描述
集群资源配置
点击集群资源配置,可以修改应用的集群资源配置,为应用设置不同环境下的命名空间,需要为不同的集群环境设置该集群对应的自动部署工具地址。
组件是指应用的自研程序,包括完全自主开发的程序和二次开发的程序,可以是单体应用、后端服务、前端网页以及移动程序。
1.在组件列表中点击【+创建组件】
2.在创建建页面填写基本信息,其中包括组件的开发语言、代码仓库地址及仓库组,CI工具(Jenkins)地址
3.点击【确定】完成组件创建
基于gitlab的代码管理
Gitflow工作流
•创建组件后自动Git中创建此组件的代码仓库
•通过git clone将代码仓拉到本地
•使用git add将文件及文件夹添加到工作副本的仓库目录中
•Commit到本地仓库
•通过git push推送到远程仓库
•仅修改文件内容使用commit——push将修改推送至远程仓库
工作区释义
工作区(working copy):平时写代码的地方
暂存区(index):写完代码后的待提交状态
本地仓库(Local repository):提交的代码在这里,进入代码本地管理
远程仓库(Remote repository):服务器中存储的仓库,可以供远程协作的成员下载。持续交付平台中看到的便是远程仓库
开发人员将代码拉到本地进行开发,并提交、推送以及分支操作。
在组件—代码仓—浏览中可以预览文件及在线修改
在产品开发中,通过Git的分支功能结合分支管理策略应对多人开发、版本迭代、版本发布、Bug修复等问题
方式一,按环境创建分支:
•主开发分支:日常开发提交在这里
•开发环境分支:开发人员需要线上调试的功能的分支
•测试环境分支:要部署到测试的代码合并到测试分支
•生产环境分支:需要上线的分支,需要保证合并到此分支上的功能都是经过测试的
方式二,主干开发:
•一个产品的所有开发人员共享一个trunk,开发人员可以拥有自己的私有分支,最后将修改合并到主干。在release上创建release branch
•基于主干的开发的优点是保证了所有用户看到的都是同一份代码的最新版本,避免了合并分支时的麻烦
•对开发人员和发布分支的维护人员的技术要求比较高
方式三:
•Master分支:只存线上的代码,只有确定可以上线时才合并到master上。并且在master的基础上打tag
•Develop分支:初次创建develop时,需要从master分支拉取,保持开发时代码和线上最新的代码相同。develop分支是在开发时的最终分支,具有所有当前版本需要上线的所有功能
•Feature分支:用于开发功能的分支,不强制提交到远程仓库,开发完成后合并到develop分支
•Release分支:当develop分支已经具备了本次上线的所有功能并且通过测试的时候,为发布版本从develop分支创建release分支,允许在release分支上做小的修改,准备发布所需的各项说明信息,不允许大的更改
•Hotfix分支:当线上出现bug需要紧急修复时,需要从master的上线版本派生分支,修改完成后合并回master和develop分支
•仅修改文件内容使用commit——push将修改推送至远程仓库
Git 的分支策略是非常灵活的工作流方式,各个开发团队可以根据自己的团队需求来定制自己的分支策略,没有最好只有最适合。每一种分支策略其实就是一个开发模式价值观的显性体现 。
在组件代码仓中点击分支进入代码仓分支管理
1.在页面中点击【创建分支】
2.在弹出的创建分支中输入分支名称,选择分支来源
3.点击【确定】完成分支创建
在组件代码仓中点击和并请求进入代码仓分支管理
1.在页面中点击【新建合并请求】
2.在新建页面选择目标/源分支,评审人,输入标题和合并描述
3.点击【确定】完成合并申请
在组件代码仓中点击合并请求——我评审的进入代码仓分支合并评审操作。
可做代码评审,CodeReview使用。
1.支持按发起者筛选合并请求
2.点击请求列表中的名称进入详情
3.同意该合并请求则点击通过
4.在可以合并时点击【合并】完成分支代码的合并
5.完成合并后根据实际情况可删除源分支
6.若不同意该合并请求,点击下的关闭合并请求
流水线是指按顺序连接在一起的事件或作业。
Stage(阶段)和Step(步骤)
1.阶段:一个包含一系列步骤的块,阶段可以命名为任何名称;用于可视化流水线过程
2.步骤:表明要做什么任务,步骤定义在阶段内
Jenkinsfile示例:
前置条件
要实现自动触发流水线,需要在组件设置中配置代码仓库webhook.
入口
在组件——代码仓/流水线中为当前分支新建流水线
方式一:
在代码仓库中,点击创建流水线。
方式二:
进入流水线,选择需要创建流水线的代码分支,点击页面中的创建流水线。
进入创建流程,若您对应分支的流水线Jenkinsfile,文件目录:./CI/{分支名}/Jenkinsfile,则需为您的组件选择一个流水线模板。模板在平台资产——流水线模板中查看。
如果您不需要使用平台提供的模板,您可以自己编写Jenkinsfile文件,并将其放在代码仓中:./CI/{分支名}/Jenkinsfile,则需为您的组件选择一个流水线模板。模板在平台资产——流水线模板中。
当您选择模板之后,或是代码仓中已包含对应分支的Jenkinsfile,则进入流水线配置文件确认页面:(仅预览,不可修改)
点击确定即可完成创建。
如需更换模板,请删除对应分支文件夹,再次新建时即可重新选择模板;
如需修改,需要您直接修改对应的Jenkinsfile文件。
•当流水线自动触发,可以在应用——组件——流水线中查看实时构建状态和历史记录
•点击【Jenkinsfile】可查看该分支的Jenkinsfile配置
•点击【变更记录】可查看该条流水线的变更记录
•点击【构建记录】可切换构建记录
•点击【启动新构建】可手动触发构建,若在也没面中看不到此按钮,尝试拖动页面下方的滚动条,将页面拉到最有边查看按钮
•【构建过程】中显示构建的各个阶段,点击可在下方显示选中阶段的日志
•点击【查看完整日志】可查看该次构建的完整输出
构建过程
构建过程中可查看历史构建日志
实时构建任务的状态会在页面中部的构建过程步骤中实时显示
若在页面中没有看到【立即构建】,尝试拖动页面下方的滚动条
点击页面右上方的【启动新构建】即可手动触发构建工作
点击【查看完整日志】可查看本次构建的完整输出
点击某一阶段,页面下方显示选择阶段的日志
代码检查可以有效的提高代码质量,并且可以深入到代码程序的逻辑检查,内存使用情况甚至更高层面的检查,很大程度影响了程序的功能和性能。
代码静态检查带来的好处
•帮助开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷
•帮助代码设计人员更专注于分析和解决代码设计缺陷
•显著减少代码在逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本
检测问题的准确性和全面性
1.可靠性:代码中存在的BUG
2.安全性:代码中存在的安全漏洞
3.安全评审:代码中存在的潜在安全风险及热点;
4.可维护性:检测代码中难以维护的问题;
5.覆盖率:测试代码的覆盖信息;
6.重复度:检测代码重复的块,文件等;
7.大小:检测代码中类的数量,代码行数量,注释行数量等;
8.复杂度:从圈和认知复杂度衡量代码的可读性。
在组件——代码质量查看该组件不同分支的代码扫描结果,支持按分支筛选扫描任务
•持续交付平台内置代码静态扫描工具
•与流水线无缝集成
•在为分支代码创建流水线时自动创建该分支的扫描任务
•构建过程自动扫描
支持20+编程语言,包括:Java, JavaScrіpt,C, C++, Obj-C, C#, TypeScrіpt, Ruby, Go, Scala, Flex, Python, PHP, HTML, CSS,XML,VB.NET, Swift, ABAP, T-SQL, PL/SQL
点击任务名称进入扫描任务详情,详情页可查看最近一次扫描结果及问题列表。
点击【质量报告】可查看最近一次扫描报告及是否通过。可查看bug数量、漏洞数量、以及历史扫描问题趋势。
点击【问题列表】可查看最近一次扫描问题列表,可以查看问题原因、问题代码所在文件以及对应的检查规则。支持按不同条件筛选问题。
流水线构建完成后,此次构建的镜像自动推送到制品仓库中,在组件——制品管理中可以看到该组件的所有版本的镜像。可以通过推送时间和tags区分不同版本的镜像,获取目标版本镜像制品。
在制品列表中点击某一版本制品,可查看该制品详情,制品最新状态数据显示在页面上半部分,页面半部分可切换基本信息和Tag(标签)列表。
版本描述中可以添加该版本制品的描述。点击【编辑描述】可以修改描述。
分支、提交ID、所属集群、创建人、创建时间为系统根据自动化运行数据自动生成。
版本列表中显示了该版本不同Tag的列表,每为该制品创建一个Tag便会增加一条记录。
列表中显示添加的Tag名称、推送Tag时间以及最后一次拉取时间。点击操作栏的删除图标可将该Tag删除。
有些镜像不需要被部署或长期保留,在镜像列表中将该版本的制品删除。
勾选需要删除的制品前的选择框,点击【删除】按钮即可删除该版本的镜像制品。
配置了自动部署的组件会在满足触发条件时将对应的组件镜像部署到配置文件中的目标环境中。在自动部署之外,持续交付平台提供手动部署的方式。
点击组件——部署中心可以查看当前制品在不同环境下的部署情况,可以在这里手动部署或更新制品。这里显示的环境是您在应用中设置的环境。
新建一次部署
在您希望部署的环境所在列中点击【通过制品快速创建】。
在弹出的选择页面中通过产生镜像制品的代码分支和制品ID选择部署镜像。
点击确定即可完成部署。
删除部署的制品
点击卡片中的【…】下的删除可将该部署任务删除。
更新制品
点击【…】下的更新,在更新制品弹框中选择需要更新部署的镜像制品。
在基本信息中可以修改组件的名称、类型、描述这些基本属性
组件的代码配置和CI工具地址在基本信息中修改
基本信息中可以为组件指定部署模板,模板可在平台资产——署模板中查看
组件在部署运行时需要的一些环境变量在这里配置
必须添加的参数是TARGET-PROT 。
TARGET-PROT是指组件定义的暴露端口,在集群中运行时将会被映射出来。
显示拥有该组件的成员,可添加或移除成员。
评审代码的权限在这里设置,拥有此权限的成员将将在代码合并中评审。
成员的角色与权限在系统设置中修改。
为代码仓库创建webhook,实现代码仓操作之后出发流水线自动构建。
分支设置
分支设置可为组件的某个分支设置/取消保护。
分支保护规则在页面中介绍。
已设置的分支在列表中显示。
一个完整的应用可能会用到非自研的成熟工具,直接部署,通过配置即可使用。在应用中,这些第三方的工具在应用中间件中管理。
在应用——应用组成——中间件查看当前应用不同环境中的中间件,如后端程序通常依赖的数据库。
添加中间件
1.点击【+中间件】可为当前应用添加一个已经部署完成的中间件实例(注意添加的环境)
2.在弹出的添加中间件页面中输入中间件名称(非工具名称,此名称是为要选择的中间件实例命名的名称)、需要选择一个已经在集群中运行的实例作为应用组成,通过集群的namespace-服务名称选择运行的中间件实例。
3.若当前应用的中间件为部署运行,请联系管理员将此应用的中间件部署并启动。
平台资产提供持续交付平台可提供的流水线模板、部署模板和内置代码仓库地址、构建工具地址、自动部署工具地址配置。
在平台资产中配置好CI、CD模板,企业内应用可直接选择模板创建对应的CI/CD配置文件,完成组件的持续交付配置,简化配置工作。
选择平台资产——流水线模板进入流水线模板管理。
平台中提供模板的在平台内置代码仓中,添加模板文件即可在流水线模板中增加对应模板。
点击模板可查看该模板对应的Jenkinsfile文件,在Jenkinsfile页面点击【编辑文件】可以修改模板。
如您的团队想添加新的模板,请联系管理员添加流水线模板。
选择平台资产——部署模板进入流水线模板管理。
平台中提供模板的在平台内置代码仓中,添加模板文件即可在流部署模板中增加对应模板。
点击模板可查看该模板对应的配置文件,在配置文件页面点击【编辑文件】可以修改模板。
如您的团队想添加新的模板,请联系管理员添加部署模板。
选择平台资产——参数配置为应用配置持续交付工具链的参数。
需要配置的工具:代码仓库、流水线、自动部署。
需要配置的内容有:工具地址,用户名及用户名对应的token。
1.在要配置的工具右侧点击【配置参数】
2.在配置参数页面输入地址、用户名、token
3.点击确定完成添加
1.在参数列表的操作栏点击删除图标
2.在弹出的确认弹框中点击【确定】即可删除该条配置
1.在参数列表的操作栏点击编辑编辑按钮
2.在编辑配置参数页面编辑您需要修改的内容
3.点击确定完成修改。
导航菜单中点击统计分析图标进入持续交付平台的数据统计分析 。
在页面左侧可以切换应用查看不同以应用统计数据
在页面右侧可以切换当前应用下的组件查看不同组件的统计数据
数据分析展示以下数据的图表化结果:
•代码近期提交概况,近期提交总次数和代码变动行数
•组件近期的代码合并状态
•组件近期代码提交记录,可点击【查看全部】获取历史提交记录
•组件近期的流水线构建情况
•组件最近一次代码扫描结果
•组件最近一次部署情况,可切换不同环境看部署情况
开发测试平台(容器平台暂不支持)的用户与角色是统一的,任何一个子平台中对用户的修改是等效的,包括注册与登录。
在页面右上角用户名处,点击用户信息并在团队名称后选择【切换】。
此时,您可在切换团队团队中选择切换进入的团队。
在页面右上角用户名处,选择团队管理,进入当前登录团队中进行团队管理。
页面左侧可切换【团队设置】、【成员管理】
•【团队设置】显示团队信息,拥有者可以修改,其他成员仅可查看团队信息团队拥有者可以注销本团队,点击【团队设置】-【确认注销】即可注销,当前所有团队成员从本团队中移除,团队在平台内删除
团队注销
团队拥有者可以注销当前团队,团队成员从当前团队中移出,团队被删除。
方式一
•【成员管理】显示当前团队成员,可以对团队成员进行管理
添加成员
1.点击页面中的【添加团队成员】
2.在弹出的添加团队成员中选择用户
3.添加团队成员页面树状展开当前系统用户,左侧为团队名称,右侧为该团队成员。若不知道被添加的用户所在团队,可在【全部人员中】找到该用户
移除成员
1.在目标成员操作栏中点击删除图标
2.在弹出的确认框中点击【确定】即可将该成员移除
方式二
从系统设置中进入。管理员用户可以查看平台内所有团队及成员,普通用户仅可以查看当前登录团队,如需查看其它所在团队,通过切换团队查看。
此处可对团队进行成员添加、删除,以及用户角色设置,并不能对团队的基础信息进行修改,需要设置团队基础信息,请使用方式一。
在系统设置中,通过选择某团队下的用户,对用户的角色进行更改。
点击用户角色中的小三角,在下拉菜单中选择目标角色。该角色对应的权限在【角色与权限】中。
点击【全部人员】可以查看开发测试平台中的全部用户,并为其修改角色。
选择系统设置——角色与权限进入权限配置。只有超管用户可以配置。
选择不同的角色,为其配置对应的权限,以适用不同的组织。