当前位置: 首页 > news >正文

域名到期网站快看小程序入口

域名到期网站,快看小程序入口,wordpress批量导入用户,下载天马行市民云app1#xff1a;什么是DevOps DevOps是十几年前#xff0c;在互联网比较火的词#xff0c;实际上就是ci/cd平台的另外一种说法#xff0c;核心是说打破研发#xff0c;测试#xff0c;运维的边界#xff0c;能够将整个产品开发的流程快速循环起来#xff0c;随时可发版什么是DevOps DevOps是十几年前在互联网比较火的词实际上就是ci/cd平台的另外一种说法核心是说打破研发测试运维的边界能够将整个产品开发的流程快速循环起来随时可发版随时可测试达到敏捷开发的目的。当然这里还牵扯到大量的线上发布自动化测试的手段。 记得在更早前研发桌面软件或者大型的ERP软件时并没有持续集成的概念那时测试不可能天天拿到最新的版本拿到可测试版本至少要一个月的周期。 转眼间互联网甚至移动互联网的风头已过芯片热兴起国内不少企业开始进入EDA软件的领域。那EDA软件的开发是否需要有DevOps或者说CI/CD平台呢实际上仍然是非常需要的甚至在某些场景它起到的作用非常之大。下面以我见到的案例讲解一下要研发一个大型的EDA软件桌面软件如何搭建一个CI/CD平台。 1.1EDA软件的开发流程 我们先来看一张图 上面这张图是对一个FPGA EDA软件开发流程的理解它本身就是一个需要快速循环的过程。谁的周转率快谁就能在软件中占得先机。 行内人会知道要研发一款全链的EDA工具不光是在某些环节有很高的难度它的规模实际上也是不小的。中等规模可能是 100人的研发团队在Xilinx曾经有超过1000人的软件团队针对一款工具进行研发。所以要协同好大家的工作保证软件快速的持续更新必须要有Ci/Cd平台。 在早期的CI/CD平台大家的理解就是 GitLab Jekins Build Tool Pipe Line 当然这仍然是核心但要真正让这个平台有用还有非常多的细节。 1.2EDA软件的功能 首先我们还是来看一下一款EDA工具它本身是做什么的。 我们仍然以FPGA的EDA工具为例上图可以非常清楚看到软件提供了编写逻辑电路综合映射布局布线生成位流烧录到芯片的全过程。 1.3EDA软件的技术架构图 要完成这个软件我们来看看它的技术架构见下图 我们今天不是讲FPGA的EDA软件是如何实现的只需要看到它的复杂度即可。从上面的图可以看到一款EDA软件需要多个模块组成会严格分为 架构器件GUI综合技术映射布局布线时序功耗位流生成软件集成TCL支持测试等……非常多的模块而这些模块的技术实际上有很大的差别需要一个比较庞大的团队来支撑。而要将这些模块串到一起必须要有一个CI/CD平台。好的我们终于讲到正题了。 1.4EDA CI/CD 平台的架构 所以我画一下CI/CD平台的流程如下后面我们会按照这张图来介绍CI/CD平台需要完成的事情并不会讲实现的细节哈 2开发环境搭建 EDA 软件一般是采用C来开发因为需要极致性能这方面 C 是王者。当然对于GUI有可能会使用其它语言。今天我们以全C的开发语言为例。 因此我们可以认为这个EDA工个由多个子模块组成每个开发人员都身处在每个模块中。 由于EDA软件会有非常强的安全要求所以一般公司会将代码放到物理隔离的红区而且也不允许大家跨组查看其它组的代码。但是又需要随时获取最新代码来完成集成和测试。这差不多是开发环境的基本需求。 于是代码仓一定是多个首先需要搭建多仓的开发环境。 2.1多仓开发环境 EDA软件本身是一个非常庞大的工程需要有多个领域的开发人员参与模块众多为了开发效率和代码安全分成多个代码工程使用 Git 管理代码Gitlab作为管理平台完成代码储存、版本控制、代码权限控制等。 注意git仓禁止 force push切记切记 考虑不同模块和角色的人拥有的权限不同使用google 提供的 Repo 进行多仓管理为不同角色的开发者生成不同的manifest获得不同的代码工程的组合。对于repo的使用一般不会用到 git仓的权限需要通过公司的流程申请获得。原则上按最小权限授予。 如何获取最新代码呢 一般会给开发提供一个快速的命令比如 repo_xxx_clone:基于个人权限拉取工程到开发者本地目录依次将有权限的git工程clone到本地。对于每个仓的权限管理当然是使用gitlab的权限管理工具。 如何更新代码环境 一般会封装一个 xxx_update命令 获取最新工程代码如果权限有变更将追加新授权的工程或删除收回权限的工程。这里的好处就是可以将权限集成到这里。不需要用户去关注自已到底有哪些工程的权限。 2.2开发环境设置 获取代码后需要对开发环境进行设置。 【环境设置】 设置软件的主目录——XXX_HOME设置为当前目录并设置一些与主目录相关的环境变量注意这个 XXX_HOME是必须的因为后续有大量的路径都是基于此。 设置git提交时的用户配置——username useremail 会取当前用户 装载git commit的拦截程序  这是一种本地检查代码的方法。 好了这里讲到最关键的点如果我不能获得全部源代码我如何进行编译连接对了我们会将你没有权限的模块的编译产品so,dll以及相应的.h放入到一个特殊的预置仓你可以随时拉取最新的预置库通过链接SO的方式来完成程序的构建。 当然初期也可以存在全源码的构建方式但一般随着软件的成型一般不再允许有人拥有全部代码的权限这样很不安全。 2.3三方依赖库管理 这里注意一下我们一定存在直接引用的三方仓库但是在引用前一定要做安全准入审查保证它是合法的不会有license上的问题哪果公司有法务可交给法务判断。一般对于MITAparch, LGPL等协议可以安全使用商务无需开源发布。如果对于三方库来源不信任可能还需要做一些安全扫描。 依赖的三方仓一般会有几种用法 动态库引用这是最常见的用法。 基于三方开源代码允许修改需要做少量的修改和维护。 商业购买的三方代码这各可以按自研源码处理。 头文件使用三方库只有头文件直接在源码仓中引入使用。 静态库方式使用。 这里要注意一点为了保证三方仓的代码可以溯源一般最好是建立三方仓的源码仓库自行按需编译生成相应的动态库这样可以保证我们产品出问题可以找到相应的源码进行调试。 2.4多分支协同开发规范 一般是创建main分支作为主干用于存储完整的最新代码。 所有正式的对外发布版本会创建一个对应的发布分支。 实际开发时各开发小组自行创建开发分支当然也可以统一建议特性开发分支这个一般不做强行要求看项目的复杂度了。 对分支需要有相应的管理一般来说main分支原则上只能通过MergeRequest合入并且只有Leader可以有最终的Merge权限。 发布分支一般有更严格的合入要求因为是要正式发版的在正式发布前的某个时间点会锁定分支集体评审后专人合并保证代码质量。 开发分支一般可以不做管控创建权限管理销毁由各开发小组自行管理。原则上是在开发分支完成基本模块的开发和测试然后合并到main分支或者发布分支。所有合并到发布分支的内容原则上都应该在main分支中存在。 注意代码入主干和发布仓会触发门禁和冒烟如果不成功无法入仓这样用来保证代码质量。这是最关键的如何做到后面会讲。 3代码质量 代码质量如何保证最容易想到是单元测试然后就是各种静态动态检查工具。 3..1单元测试 要选定单元测试框架推荐使用 google test 框架。 这里的单元测试代码会作为入仓前的冒烟用例用来守护代码的质量。 3.2代码检查 对于提交的代码一般会进行一些检查某些情况会拦截某些情况给出提示。 建议的检查项如下只是建议 检测项检查规则动作备注FileType检测提交文件类型检查是否非代码文件拦截不能直接提交编译后的产物无法保证找到原码。FileName检测提交文件名字检查是否重名文件拦截会有编译错误CopyRight检测提交文件内容是否有CopyRight声明提示不合规FuncLen检测提交文件内容函数的行数超100提示过于复杂的函数Cpplintcpplint检测提交文件内容存在error的文件拦截是否出现error每个工程有不同的配置MVG检测提交文件圈复杂度默认拦截超过最大圈复杂度的提交拦截逻辑过于复杂分支过多 3.3代码静态检查 CppLint cpplint是最常用的检查项目非常多可以自行网上搜索。 Cloc 主要用于做代码的统计。 Cppncss 主要用于代码非注释的统计。 Flawfinder 寻找代码潜在的安全漏洞主要用于CC代码。 pmd_cpd 检测代码中可能重复复制粘贴的代码去除冗余提升代码质量。 Simian 查找分析重复或者相似的代码。 Cccc 专注代码复杂度代码统计。 代码统计代码行数包括注释行空白行代码行用于估计代码规模 代码复杂度圈复杂度衡量代码逻辑的复杂性。 代码质量评估类的耦合性类之间的继承分析 对代码进行增量检测或定期扫描注意需要在流水线中设置定期检查。 在开发初期大家代码质量不太行可以适度放宽检查比如建立一个配置表让各小组自行选择此阶段要检查的项目。 3.4 代码动态分析 通过测试用例在运行时统计代码覆盖率用于覆盖率分析。 gcov 代码覆盖率分析查找未被测试覆盖的代码。 执行频率分析代码行执行次数发现热点代码和冗余代码。 分支覆盖率测试条件判断分支是否补充分测试。 3.5 代码内存分析 常用的两种方式ASAN方式Valgrind 方式 ASAN方式 使用 构建的 ASAN版本添加可调试的符号运行用例 查看输出的报告。 Valgrind方式 使用普通的调试版本即可。但需要依赖 valgrind工具。无需要源码。 valgrind --leak-checkfull --track-originsyes ./program 3.6 检查策略 为了保证代码质量采用多种策略进行检查。 本地commit前检查拦截或提示 在本地代码执行 git commit 时可以挂钩自已的程序然后定制代码检查。 也可以定期生成报告输出质量报告查看质量。 4代码构建 好了开始讲最重要的代码构建下面以 linux的make方式构建为例 4.1make构建linux) 经典构建框架 Makfile.top Makefile.temp Makefile.com MakeFile凡是要参与构建的模块需要定义Makefile 解析顶层参数AllReleaseDebugASANCleanHeadListcheckHeads MODULES包含嵌套的需要处理的子目录模块 …… 可输出静态库动态库可执行文件的参数 …… Include Makefile.top 解析Modules完成向子模块传递构建。 Include Makefile.temp    Include makefile.com 定义通用的三方库的引用 解析编译输出参数完成核心构建 构建有如下的输出 子模块构建 在comp/子模块构建输出 .so 动态库或者.a 静态库 合并子模块构建 将多个模块合并成一个库这是常见的否则容易暴露产品的实现细节一般最后做一次合并。 构建可执行程序 在prog/子模块构建输出 .sh 可执行程序。 预置库的构建   本地缺失的源码使用 Prebuild_lib的动态库。这是开发端最常见的构建方式。   请注意请及时更新最新的Prebuild_lib中的动态库。可使用 update_api 全源码构建   通常在系统平台的流水线中的使用完成正式的构建。 清理构建输出物   清理构建的全部输出。 头文件依赖检测   检测头文件的依赖关系。 重要命令 xxx_build 配置debug / release / asan 模块all / gui / clean 预制库的更新 定时重新生成所有的动态库更新到 Prebuild_lib 仓库包括API头文件。 保证开发人员可以及时获取最新的Prebuild_Lib。 构建的定期检查 循环构建完成预制库的输出的同时保证代码可正常编译。如有问题及时报警。 构建加速 构建速度非常重要除了需要配置更好的物理资源也可做如下的优化。 增量编译 缓存处理 分布式编译 对于 cmkae 和 windows的构建这里就不讲了。 5代码入仓 5.1MR入仓 代码进入Main和 Release_XXX仓原则上不提倡直接Push(少数人也此权限而是建议采用MergeRequest入仓因为在MR前会有若干的处理可以对入仓的代码进行检查不符合要求将会被拦截。 触发流水线 通过配置 WebhooksMR时调用 Jekins提供的流水线 获取代码 将需要MR的代码和正式仓代码进行合并生成完整代码 门禁检查     尝试对源代码进行多种build检查是否可正常。 冒烟检查 运行预置的单元测试检查关键用例是否可正常执行。 Rebase处理 建议对代码进行Rebase这样保证可保留所有提交历史。 5.2门禁检查 调用全源码的构建这里并不输出结果只是借用构建查看代码是否正常 Liunx debug build Linux Release lbuild Windows build 任何一个构建失败整体门禁检查失败。 这是非常重要和关键的一个步骤可保证入仓代码的质量。 5.3冒烟测试 冒烟测试可提供配置文件让各模块的人员配置对应的单元测试。 [Basic]每次必须要执行的用例 这个理解为主流程 [模块名]匹配当前MR的工程模块匹配上的话就执行用例的shell脚本 返回 0 成功 5.4多仓联合提交 某些情况存在多仓提交需要采用多仓联合构建的方式。具体略需要将仓暂时进行锁定保证一致性。 5.5PrebuildLib 入仓 持续构建生成so定时提交仓库备用。 同时达成检测代码可用性的目标。这个很关键否则开发人员的工作无法进行。 6 打包输出 输出多种版本用于后续的测试或支撑继续开发。这是持续交付的关键可以让测试的流程快速闭环起来。 6.1 打包输出流程 建议流程如下打包输出流程主要定义为下面几个步骤可定制。 pre_build 在build前的一些参数预置根据实际输出的需要进行设置 build 实际的build过程一般是先清理然后 make all pre_pack pack前的预处理可以交给各模块自行编写脚本插入。比如生成Primitive 的 HDL templates. Pack 可定制打包最后需要追加和忽略的文件。 Post_pack pack的后处理比如将tcl script 进行加密处理。 6.2 重要输出 输出的控制点 选用的代码不同可能是Main可能是某个Release分支。 支持哪些器件 是否进行License管控 是否提供内部feature parm的默认参数值 tcl命令开放列表 输出的所有版本 对控制点不同的配置形成多种输出 1内部测试版本——用于内部的开发测试 2软件部的外部测试版本——给到软件部以外的部门如市场validation回片 进行测试 3面向客户的版本——给到正式客户的版本。 4合作商的版本——提供给我们的集成商的特殊版本比如给到 mentor的合作版本 5DFT测试版本——提供给DFT测试的版本 输出的周期 这个按需提供。可能是每日定点每周…… 重要的输出流程 这个看公司的需求成熟度不同的阶段会有不同的测试粒度。 7安装包发布 7.1 制作安装包 分为Linux版本和Windows版本的打包。 完成安装包文件的SHA验证码 安全检查 提供发版文件提供安装手册。 上架发布可能是网站或者其它方式 7.2License处理 提供浮动版和单机版License。 确定license申请和绑定的流程提供相应的审批流并记录背后的申领数据。 8工具平台支撑 8.1调度流水线 提供Jekins Pipeline 流水线按时间完成定时调度或主动触发可以定制完整的flow。 除了为各种输出提供流水线也为日常的测试提供调度配置。 比如DailyTestQoRTestRuntimeTestCustomerTestWeeklyTestGUITest。 8.2 监控预警 提供预警API用公司的协同工具完成消息推送。 预警点环境输出失败门禁失败打包失败…… 监控这里更多指的是必要服务的可用性监控或者说是质量的看护监控这个都需要自定义脚本来完成。 8.3 数据分析 代码质量看板 提供质量看板为测试组提供代码覆盖率、缺陷率、代码量的持续监控看板提高问题洞察效率。  Git仓授权检视 代码提交量统计 更多…… 注意这里需要选用一款报表系统进行可视化的展示。取数和加工根据实际情况进行开发。 8.4 安全加密 提供非对称密钥对公钥在代码内置私钥在打包时构建入代码。 加密工具可以将用户的代码进行加密然后只能在EDA软件中安全使用。这样可以保护用户和我司的代码。 用户也可以使用提供的加密工具对代码进行加密然后在EDA中使用。 这个很重要因为客户的代码是绝密的必须要想办法保护在交付三方时可以使用但不可见源码。 8.5 三方集成 CI/CD平台需要与 协同工具GitlabJenkins等平台进行集成比如Git自动授权代码权限审视代码仓锁库消息通知等。 8.6 现场调试 需要提供现场调试的能力因为某些情况只能在客户现场重现问题。 我们只能将某部分代码重编后在客户现场通过GDB来调试。 现关的实现。略。 以我的经验大概就讲这么多了也摘自之前的总结。
文章转载自:
http://www.morning.npxht.cn.gov.cn.npxht.cn
http://www.morning.caswellintl.com.gov.cn.caswellintl.com
http://www.morning.yqpck.cn.gov.cn.yqpck.cn
http://www.morning.hxpff.cn.gov.cn.hxpff.cn
http://www.morning.wbqt.cn.gov.cn.wbqt.cn
http://www.morning.ljcjc.cn.gov.cn.ljcjc.cn
http://www.morning.yrpg.cn.gov.cn.yrpg.cn
http://www.morning.mrccd.cn.gov.cn.mrccd.cn
http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.jxfmn.cn.gov.cn.jxfmn.cn
http://www.morning.gmyhq.cn.gov.cn.gmyhq.cn
http://www.morning.lqjlg.cn.gov.cn.lqjlg.cn
http://www.morning.flqbg.cn.gov.cn.flqbg.cn
http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn
http://www.morning.ldspj.cn.gov.cn.ldspj.cn
http://www.morning.qmzwl.cn.gov.cn.qmzwl.cn
http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn
http://www.morning.pbmkh.cn.gov.cn.pbmkh.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn
http://www.morning.ltpzr.cn.gov.cn.ltpzr.cn
http://www.morning.fznj.cn.gov.cn.fznj.cn
http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn
http://www.morning.wljzr.cn.gov.cn.wljzr.cn
http://www.morning.stmkm.cn.gov.cn.stmkm.cn
http://www.morning.rmlz.cn.gov.cn.rmlz.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.wgrm.cn.gov.cn.wgrm.cn
http://www.morning.brrxz.cn.gov.cn.brrxz.cn
http://www.morning.lksgz.cn.gov.cn.lksgz.cn
http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn
http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn
http://www.morning.cczzyy.com.gov.cn.cczzyy.com
http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn
http://www.morning.dmtld.cn.gov.cn.dmtld.cn
http://www.morning.kbkcl.cn.gov.cn.kbkcl.cn
http://www.morning.kjawz.cn.gov.cn.kjawz.cn
http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn
http://www.morning.nlqgb.cn.gov.cn.nlqgb.cn
http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn
http://www.morning.nzkkh.cn.gov.cn.nzkkh.cn
http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn
http://www.morning.nmqdk.cn.gov.cn.nmqdk.cn
http://www.morning.rjnm.cn.gov.cn.rjnm.cn
http://www.morning.hknk.cn.gov.cn.hknk.cn
http://www.morning.rkypb.cn.gov.cn.rkypb.cn
http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn
http://www.morning.bgnkl.cn.gov.cn.bgnkl.cn
http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.fllx.cn.gov.cn.fllx.cn
http://www.morning.mngyb.cn.gov.cn.mngyb.cn
http://www.morning.rzmkl.cn.gov.cn.rzmkl.cn
http://www.morning.rkbly.cn.gov.cn.rkbly.cn
http://www.morning.msgnx.cn.gov.cn.msgnx.cn
http://www.morning.yggdq.cn.gov.cn.yggdq.cn
http://www.morning.jkrrg.cn.gov.cn.jkrrg.cn
http://www.morning.qrdkk.cn.gov.cn.qrdkk.cn
http://www.morning.mnclk.cn.gov.cn.mnclk.cn
http://www.morning.hrkth.cn.gov.cn.hrkth.cn
http://www.morning.tslwz.cn.gov.cn.tslwz.cn
http://www.morning.zfcfx.cn.gov.cn.zfcfx.cn
http://www.morning.yxyyp.cn.gov.cn.yxyyp.cn
http://www.morning.qzdxy.cn.gov.cn.qzdxy.cn
http://www.morning.txnqh.cn.gov.cn.txnqh.cn
http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn
http://www.morning.lkkgq.cn.gov.cn.lkkgq.cn
http://www.morning.rzysq.cn.gov.cn.rzysq.cn
http://www.morning.jqhrk.cn.gov.cn.jqhrk.cn
http://www.morning.bchgl.cn.gov.cn.bchgl.cn
http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn
http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn
http://www.morning.xbzfz.cn.gov.cn.xbzfz.cn
http://www.morning.zqxhn.cn.gov.cn.zqxhn.cn
http://www.morning.qqhfc.cn.gov.cn.qqhfc.cn
http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn
http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn
http://www.morning.jpnw.cn.gov.cn.jpnw.cn
http://www.morning.jngdh.cn.gov.cn.jngdh.cn
http://www.tj-hxxt.cn/news/240822.html

相关文章:

  • 个人网站制作wordpressjoomla网站如何加入会话功能
  • 建设一个网站需要什么技术网站销售需要什么手续
  • 济南在线制作网站深圳市做网站
  • 获取网页 代码 做网站佛山网站建设联系电话
  • 做网站必须原创吗淘宝移动网站建设
  • 优化网站建设价格代做网站地图
  • 住房和城乡建设部网站登录怎么建立公司网站
  • 吉林市网站创意与建设wordpress添加cnzz
  • 网站出现转站怎么办找工作求职
  • 网站编辑超链接怎么做台州网警
  • 深圳市龙岗区做网站的公司酒店网站开发协议
  • 西安网站建设推荐q479185700上墙重庆百度推广优化
  • 大型大型网站建设方案wordpress改登录地址
  • 网络公司 网站建设wordpress翠竹林
  • 芜湖灵创网站建设网站右侧浮动广告
  • 企业网站源码 可去版权网页设计的一般流程
  • 网站活动模板天津放心站内优化seo
  • 模板网站与定制网站的区别一家做运动鞋的网站好
  • 注册网站邮箱格式怎么写做网站专题页的字大小是多少钱
  • 做的比较好看的国内网站网站建设 后台空间容量
  • 深圳网站设计价格表荆门做网站的公司
  • 网站路径改版如何做301重定向永久免费影视建站程序
  • 如何设公司产品购物网站陕西 建设工程有限公司网站
  • 河北邯郸做移动网站谷歌收录网站
  • 软件毕设代做网站湖南网络公司网站建设
  • 网站建设服务标准化张家明做网站
  • 建筑公司网站建设方案邢台123信息网
  • 网站开发是怎么开发的吉林seo刷关键词排名优化
  • html5单页网站模板泰州市住房和城乡建设局官方网站
  • 福建省建设厅网站首页住建部四库一平台