仅有50Mb大小的cli即可搞定大厂才能玩的CloudIDE丨SmartIDE

447af69d842e7f7dac8509db00dac272.gif

作者:

徐磊,开源云原生SmartIDE创始人、LEANOSFT创始人/首席架构师/CEO,微软最有价值专家MVP/微软区域技术总监Regional Director,华为云最有价值专家。从事软件工程咨询服务超过15年时间,为超过200家不同类型的企业提供过软件研发效能相关的管理和技术咨询工作。

原文地址:https://smartide.cn/zh/blog/20220919-meetup-s01e04/

关于SmartIDE

SmartIDE是一款 远程/云端工作区调度工具,其目标是从根源上解决软件环境问题。当前,SmartIDE主要采用容器技术,比如:Docker和Docker-Compose;以及容器集群编排技术,比如:Kubernetes,来解决软件运行环境的一致性,标准化,快速获取,可扩张性和可维护性问题。

54dc007f388647db0f57312f36ff4b97.jpeg

CLI是SmartIDE产品架构中与其他类似产品最大的差异。大多数CloudIDE都会提供CLI工具,但是这些CLI都是作为辅助性工具存在的,也就是说用户使用CLI连接到CloudIDE服务来完成类似端口转发,如果脱离的CloudIDE服务,这些CLI本身是无法单独使用的。

Smart Meetup已经在上周二(2022.9.13)重新启动,后续我们将在每周二晚8点30分和大家见面。Smart Meetup的目标是持续为大家输出云原生IDE相关的最佳实践,并不局限于介绍SmartIDE自己的特性和功能,而是希望能够从软件工程的角度为开发者提供帮助。以下是我们当前规划的一些方向,希望各位小伙伴多提意见和建议:

  • SmartIDE 特性介绍 - 按照我们的发版周期,每隔2周都会发布新版本给社区,我们会通过这个Meetup为大家介绍这些新特性,帮助大家尽快的将新功能用起来。

  • 开源项目推荐 - SmartIDE的一个重要特点就是帮助开源社区的小伙伴快速的体验新项目,我们会继续这个做法,为大家喜欢的开源项目适配 IDE配置文件,并在Meetup为大家展示这些项目的能力。之前我们已经适配过的项目包括:若依项目、Gin-Vue-Admin和飞致云的Metersphere。

  • 云原生相关技术分享 - 作为一款云原生IDE,SmartIDE不仅会利用云原生技术让开发者的工作变得更加简单高效,也同样在践行着各种云原生开发实践,比如我们之前就介绍过如何使用SmartIDE来开发调试Dapr应用。后续我们会继续这个方向的摸索,并将最棒的云原生开发实践推介给大家。

  • 敏捷/精益/DevOps/研发效能相关实践和案例分享 - SmartIDE的定位是成为DevOps和开发者的桥梁,那么我们的Meetup也同样会承载类似的职责。我们会不定期的邀请行业内的专家大咖来给大家分享各种最佳实践和案例。

另外,在每一期的活动上我会邀请一位观察员,从用户的角度给予一些反馈,提出一些问题,帮助我们打磨产品,拓展使用场景。

S01E03 回顾

a0b346097a8987abb7fbdc6273551aae.png

时间:2022.9.13 晚20:30

主持人:徐磊

观察员:施慧斌、FIT2CLOUD北区解决方案负责人

上周的Meetup距离之前的活动已经有了一段时间,因此我们首先对SmartIDE的一些进展给大家做了介绍,然后针对 Codespaces for Azure DevOps 插件进行了重点介绍。这次Meetup我们也邀请到了FIT2CLOUD北区解决方案负责人施慧斌作为观察员参与了整个演示。

CodeSpace for Azure DevOps 插件

SmartIDE产品定位于开发人员的的DevOps入口,基于这个定位我们在微软的DevOps平台Azure DevOps上进行了首次尝试。通过在Azure DevOps的电子看板,代码库,流水线和拉取请求的不同位置提供一键创建云端工作区的入口,为开发和测试人员提供快速稳定获取可用环境的入口。这个插件充分利用了SmartIDE的标准化环境编排能力,将原本静态的开发环境转变为随用随起,用完即焚的临时性环境,让原本很重的环境管理变成一键非常轻量而且便捷的事情。

bd27c1ec48c6c1ee48cf53433b08bfec.png

对于用户而言,可以利用以上能力解决一些日常开发协作中的问题:

  • 特性分支规范化: 特性分支是当前软件开发团队普遍使用的一种分支模型,要求开发人员根据不同的开发任务拉取独立的特性分支,并在这个分支上完成所对应任务的开发工作,起到聚合和隔离代码变更的作用。特性分支对于大型团队隔离不同特性之间的相互影响,做到灵活控制上线周期和发版方式来说效果非常明显。但是特性分支在企业落地中普遍存在几个问题:1)特性分支命令不规范,因为分支需要开发人员自己创建,经常会出现各种不规范的分支名称增高管理成本;2)代码夹带,很多开发人员认为特性分支操作太繁琐,经常会为了省事儿把多个特性在一个分支上一起开发,这样会造成后续发版过程中无法拆分清楚代码,造成未经审核的代码被夹带上线,严重的时候可能造成生产问题;3)操作流程复杂造成的误操作,特性分支要求开发团队具备非常严格的流程执行纪律,特性分支到发布分支再到主分支的合并过程不能随意跨越,但实际操作过程中很多团队并不能很好的执行这个流程,教育和培训成本都很高。这些问题的根源在于,git分支操作过于灵活并且可以在开发机本地完成,使得这个流程无法完全在线上闭环完成。使用云原生IDE之后,可是实现整个编码开发过程的线上化,不再依赖开发人员本地环境,实现完整的流程线上化闭环。

  • 测试环境独立化: 测试环境的获取一直都是软件测试流程中的一个难题,受限于企业资源和自动化能力问题,大多数的开发团队仍然依赖开发人员手工部署测试环境。对于测试来说,最好能够给每个测试目标都提供独立测试环境,比如:手工测试应该针对每个测试人员的每个测试轮次提供,自动化测试应该针对每个被测版本的每个测试轮次提供。考虑上测试环境被测试用例污染的问题,还需要提供快速重置测试环境的能力。传统模式下,以上这些问题都没有特别好的解决方案,关键问题在于2个环境标准化能力不足(IaC实践没有被引入到开发测试阶段)和资源限制(容器化实践没有被引入到开发测试阶段)。使用云原生IDE,随用随起,用完即焚的环境调度能力可以有效解决标准化的问题,VMLC能力可以有效应对资源限制问题。开发环境独立化问题得到完美解决。

  • 基于代码评审上下文的临时环境: 拉取请求时有效的代码评审机制,但是代码库所提供的拉取请求只能帮助评审者比较代码,无法帮助评审者从功能的角度验证代码的正确性。虽然CI/CD流水线中可以嵌入各种质量门禁,但是都无法让评审这从用户的角度了解应用行为的正确性。使用云原生IDE我们可以针对代码评审的上下文创建一个临时的让评审者可以直接进行操作,从用户的角度进行验证功能,辅助完成代码评审过程。

以下是本次Meetup的视频回访,Codespaces for Azure DevOps的演示部分在视频的43分钟开始。

274c1939b7be21f4dc77c6b158fd3467.jpeg

另外,以下视频中也对这个插件进行了完整的演示和介绍

23742415d2400235c1cb63238609288a.jpeg

S01E04 预告 - CLI 详解

346bccea89d5981607bfa03b445fa142.png

时间:2022.9.21 周三晚20:30 (本周特殊原因临时改在周三) 

观察员:衣明志,烟台易云网络创始人/资深.NET开发者/前微软最有价值专家MVP

主题:SmartIDE CLI 详解

本周的Meetup将围绕SmartIDE的使用场景展开,CLI是SmartIDE产品架构中与其他类似产品最大的差异。大多数CloudIDE都会提供CLI工具,但是这些CLI都是作为辅助性工具存在的,也就是说用户使用CLI连接到CloudIDE服务来完成类似端口转发,如果脱离的CloudIDE服务,这些CLI本身是无法单独使用的。

1f6e95fe4cd3967ddf6029e28a81fe8b.png

SmartIDE的CLI则不同,用户可以使用CLI直接创建、停止,删除,清理远程/云端工作,这个过程无需CloudIDE服务(SmartIDE Server)的存在。

这样设计的目的是为了方便个人开发者可以非常轻量的管理自己的远程/云端工作区,无需预先部署Server。这样,个人开发者可以在需要的时候使用一个 smartide start 指令即可在任何资源上启动远程/云端工作。

从开发和调试的角度来说,CLI工具的迭代速度是带有WebUI或者API类型的应用无法比拟的。因为CLI极度简单的操作方式,我们无需处理界面的布局,美观,操作体验,各种边界条件等问题,可以专注于业务目标的实现。这种快速迭代能力让我们可以更早的触达用户,验证产品核心功能并及时调整产品方向。在过去的6个月,CLI的发布速度是平均每天3.8个版本。

CLI封装了管理远程/云端工作区的所有能力,这让用户利用CLI来搭建自己的CloudIDE系统,实际上SmartIDE Sever 本身就是这样工作的,通过将 CLI 打包成 tekton流水线任务,SmartIDE Server 的所有工作区操作都不会直接调用虚拟机或者k8s集群,而是通过CLI来完成。借助CLI的快速迭代特性,我们的Sever开发人员可以更加专注于用户体验和企业级功能,而不用关心底层工作区调度问题。对于希望构建企业内部CloudIDE平台的组织来说,利用CLI的这种可集成特性,可以非常快速底层本的完整平台的搭建,不用去关注与虚拟机以及k8s集群进行操作的细节问题。

我们当前已经提供了gitlab-ci的集成示例,未来我们会提供更多各种类型的DevOps系统场景。

Meetup内容

本次Meetup将详细演示以下操作:

  • SmartIDE CLI 安装和基本操作

  • 使用 start 指令在本地,远程主机和k8s集群上启动远程工作区

  • 使用 host 指令将Linux主机注册为开发环境

  • 使用 list/start/stop/remove 指令管理远程工作区生命周期

  • 使用 new 指令从预制的开发环境模板启动新开发环境

  • 使用 init 指令对现有代码库进行初始化,自动完成 IDE配置文件 的生成和适配

  • 使用 login/logout/connect 为Server工作区提供端口转发支持

  • 辅助功能指令 config/version/reset/debug

  • 第三方系统集成:在 gitlab-ci 中集成smartide cli实现云原生IDE调度能力

报名方式

扫描海报中的二维码通过B站直播间预约

直播抽奖

一等奖1名:JetBrains全系列产品激活码(价值1500元)

二等奖2名:SmartIDE 文化衫

123f3b5bd3564dd1a3f9f625b6492c81.png

aff007551674aee544bab58db488786d.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea-spark-sbt 打包jar

1、打开idea下的terminal窗口 2、只打包部分项目 sbt insight-import/clean insight-import/assembly 这表示只打包主目录下的insight-import项目 ,先清理(clean)再打包(assembly)不能用package,这个不会打…

操作Checkbox标签

在前端开发中,少不了对Checkbox的操作。 常用的的方法有2个:.is()和.prop()方法。前者是判断 checkbox的状态,选不是未选。而后者为checkbox设置一个值,可以设置checkbox是true还是false。写个小例子,练习一下&#xf…

memcache在项目中的应用

一 安装memcache 具体流程这篇文章有写到: 点击 链接 二 在项目中应用memcache 为了减轻数据库的查询压力,所以我们把一些不经常变动的数据进行缓存,用户查询时,如果查询的要求是一样的,我们就memcache缓存中读取数据并返回去,如果查询要求变了,我们再到数据库中查询,并将查…

点击回退按钮刷新页面

浏览器用户返回上一步&#xff0c;自动刷新window.οnunlοadfunction(){} 这个最简单粗暴 方式一、<input type"hidden" id"refreshed" value"no"><script type"text/javascript">οnlοadfunction(){var edocument.getE…

Dapr 证书过期了怎么办? 别慌,有救!

一、背景Dapr 默认证书有效时间是1年&#xff0c;证书过期后就不能执行相关控制面和数据面的交互了&#xff0c;如下图&#xff1a;二、查看证书有效时间通过dapr mtls expiry 看到期时间&#xff0c;具体参见命令https://v1-7.docs.dapr.io/reference/cli/dapr-mtls/dapr-mtls…

python数据类型之间的转换

对python内置的数据类型进行转换时&#xff0c;可以使用内置函数&#xff0c;常用的类型转换函数如下 python常用类型转换函数函数格式使用示例描述int(x [,base])int("8") 可以转换的包括String类型和其他数字类型&#xff0c;但是会丢失精度 float(x) float…

js高级程序设计的笔记(一)

2019独角兽企业重金招聘Python工程师标准>>> 1.js中的 null : 如果只意在保存对象的变量还没有真正的保存对象之前&#xff0c;就需要先把该变量保存 null值&#xff0c; null代表空对象的指针 2.函数的参数对象 arguments的理解。 argument对象的length属性 实例 f…

Redis在PHP项目中的应用

一 运行redis服务端 出现上图的图形,就说明redis服务端开启成功,并且开启了密码功能(如果不加载配置文件,连接redis是不需要密码的,这样,会给我们的程序带来很大隐患) 密码的设置: 在redis配置文件中,搜索requirepass ,后面设置密码 比如 : requirepass G506myredis 则表示此…

Linux关机、重启命令

关机shutdown -h 0 #<O秒后关机shutdown -h now #<现在关机shutdown -h 10 #<10分钟后关机shutdown -h 23:20 #<23&#xff1a;20分关机shutdown -c #<取消shutdown关机命令init 0 #<立马关机&#xff08;切换运行级别为0&#xff0c;推荐使用&#xff09;ha…

Python 模块之 string.py

用法 字符串常量&#xff1a; import string print(string.ascii_lowercase) print(string.ascii_uppercase) print(string.ascii_letters) print(string.digits) print(string.hexdigits) print(string.octdigits) print(string.punctuation) print(string.printable)结果 abc…

md5和password_hash孰好孰坏

md5自不必说,想必所有phper都用过,但另一个加密函数不知道你见过没有 他就是password_hash(); 加密方式更全面.使用起来也比md5salt这种方式要简洁很多,最主要的是难破解,因为它每时每刻都在变动 它的使用方式大致是这样 1. 用户注册时提交过来密码,我们对用户密码进行加密…

Logstash 命令行参数

Logstash 提供了一个 shell 脚本叫 logstash 方便快速运行。它支持以下参数&#xff1a; -e意即执行。我们在 “Hello World” 的时候已经用过这个参数了。事实上你可以不写任何具体配置&#xff0c;直接运行 bin/logstash -e ” 达到相同效果。这个参数的默认值是下面这样&…

上汽拒绝HW符合商业逻辑

不久前&#xff0c;上汽董事长陈虹表示“与HW合作自动驾驶是不可接受的。这就好比一家公司为我们提供整体的解决方案&#xff0c;如此一来&#xff0c;它就成了灵魂&#xff0c;而上汽就成了躯体。对于这样的结果&#xff0c;上汽是不能接受的&#xff0c;要把灵魂掌握在自己手…

javac compiling error ( mising package)

javac 编译java源文件时&#xff0c;提示 package does not exist 的错误 Test.java import java.security.MessageDigest; import org.apache.commons.codec.binary.Hex;public class Test{public static void main(String args[]){boolean isAlarmed true;boolean aa isAla…

使用ffmpeg录音

官方教程&#xff1a;http://ffmpeg.org/ffmpeg.html 录音方法&#xff1a; 开始找到了这个方法&#xff0c;但是不行呀&#xff0c;好像是没有这个oss吧。 oss 是linux 下的声音相关的东西&#xff0c;与alsa 一样&#xff0c;不过oss 是商业的&#xff0c; 而/dev/dsp 是oss …

Mysql慢查询日志的使用 和 Mysql的优化

一、生成实验数据 原理&#xff1a;sql 蠕虫复制&#xff08;这种生成数据方式同样适用于数据表中有主键的情况&#xff09;。 insert into comic (name,pen_name,cover) select name,pen_name,cover from comic 二、慢查询日志设置 当语句执行时间较长时&#xff0c;通过日…

Oracle 12C CDB、PDB常用管理命令

--查看PDB信息&#xff08;在CDB模式下&#xff09; show pdbs --查看所有pdb select name,open_mode from v$pdbs; --v$pdbs为PDB信息视图 select con_id, dbid, guid, name , open_mode from v$pdbs; --切换容器 alter session set containerorcl1 --切换到PDBorcl1容器…

指定时间的月初和月末一天的写法

DateTime dt Convert.ToDateTime("2017-2");DateTime FirstDay new DateTime(dt.Year, dt.Month, 1);//本月初1號DateTime LastDay new DateTime(dt.AddMonths(1).Year, dt.AddMonths(1).Month, 1).AddDays(-1);//下月初1號減一天本月底 转载于:https://www.cnblo…

mysql数据表设计要点以及快门

一个sql表的设计首先要考虑的是字段 然后去考虑这个字段应该具有哪些特性, 最后,考虑哪些字段经常用于查询,设置为索引 下面是一个比较简单的例子,大概说明了怎么样去构造sql语句创建一个sql表 create table user_message( id int UNSIGNED not null auto_increment COMMEN…

分享实录|区块链技术与智能合约入门(开发实例)

1 什么是区块链 1.1白话讲解区块链 现在区块链特别火&#xff0c;可能大家都听说过区块链&#xff0c;听说过比特币&#xff0c;那到底什么是区块链&#xff1f; 前几天和一个朋友撸串&#xff0c;我给他安利区块链和比特币以及一些数字货币的知识&#xff0c;这个朋友也是一个…