README.exe 是的,你看错是EXE
作为开发者,拿到一个新的代码库的时候一般都会先去看README文件,通过这个文件可以知道这套代码所需要安装的环境,工具和操作方式。这件事情本来应该是一件很愉悦的事情,因为每一套新代码其实都是开发者的新玩具,拿到新玩具的心情那肯定是不错的。但是,当你阅读玩具说明书之后,发现这份说明书完全不配套的时候,那心里一定是一万匹草泥马在奔腾。当然,这也很容易理解,开发者不爱写文档,特别是那些没有用的文档。至少,README对写的人来说其实没啥用,因为写的人都已经清楚了文档中的内容,至于看的人感受如何,那就呵呵吧。
这个问题的根源在于README只能看,不能运行!如果我们能够让README活起来,从 README.md 变成 README.exe,那是不是就可以解决这个问题了呢?答案是肯定的!因为写的人自己也可以用这份文档来启动项目。这样,写文档的人有了动力,看(运行)文档的人也会很爽。
这就是SmartIDE的核心功能: IDE as Code能力。
神奇的IDE配置文件
SmartIDE最初始的设计灵感就是如何能够让README活起来?为了做到这一点,我们设计了一个 IDE配置文件 (默认文件名 .ide.yaml)文件格式。这个文件中完整描述了运行当前代码所需要的环境配置,包括 基础环境SDK,应用服务器,应用端口,配置文件,网络依赖以及所使用的IDE工具。有了这个文件,开发者就可以真正实现一键启动开发调试,而不会再听到:“在我这里工作呀,是你的环境问题!” 这种骇人听闻的抱怨。
有了这个文件,任何人都可以使用一个简单的指令来一键搭建一模一样的开发环境,指令如下:
Copy
smartide start https://github.com/idcf-boat-house/boathouse-calculator
这个指令会自动识别代码库中的 IDE配置文件,根据文件中对开发环境的描述完成获取开发者镜像、启动开发容器、克隆代码、运行初始化脚本等一系列动作,最终一个 完整可运行的环境 呈现在开发者的面前,下面这段视频展示了整个运行过程:
IDE配置文件详解
以上示例中所使用的 .ide.yaml
文件如下
Copy
version: smartide/v0.3
orchestrator:
type: docker-compose
version: 3
workspace:
dev-container: # 开发者容器设置
service-name: boathouse-calculator
ports: # 申明端口
tools-webide-vscode: 6800
tools-ssh: 6822
apps-application: 3001
ide-type: vscode #sdk-only | vscode | opensumi | jb-projector
volumes: # 本地配置映射,支持映射git-config和ssh密钥信息进入容器
git-config: true
ssh-key: true
command: # 环境启动脚本
- npm config set registry https://registry.npmmirror.com
- npm install
services:
boathouse-calculator:
image: registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-vscode:all-version
restart: always
environment:
ROOT_PASSWORD: root123
LOCAL_USER_PASSWORD: root123
volumes:
- .:/home/project
ports:
- 3001:3001
- 6822:22
- 6800:3000
networks:
- smartide-network
networks:
smartide-network:
external: true
这个文件内容非常通俗易懂,是个程序员应该都能看明白,不过我还是简单说明一下:
orchestrator
- 环境调度工具设置,用来制定调度容器环境的底层工具,这里我们使用的是 docker-composeworkspace
- 工作区配置,工作区 是SmartIDE中最重要的概念,包含开发者用来进行开发调试的所有环境信息dev-container
- 开发者容器设置service-name
- 开发者容器所对应的 docker-compose 服务名称ports
- 开发者容器对外暴露的端口ide-type
- 开发者容器所所用的IDE类型,支持:vscode, sdk-only, jb-projector (Jetbrains系列全家桶)和 opensumivolumes
- 配置映射,支持将开发者的git-config和ssh密钥导入容器commands
- 开发环境启动脚本,对环境进行初始化;比如以上脚本中就完成了2个关键操作:1)设置npm国内镜像源 2)获取npm依赖。这部分脚本开发者可以根据自己代码库的情况设置,SmartIDE会在环境启动后自动运行这些脚本,让程序处于开发者所希望的状态上。
services
- 开发环境内的服务列表- 这里其实就是一段标准的 docker-compose 配置文件
IDE as Code 重新定义IDE
这种做法称为 IDE as Code
也就是 “集成开发环境即代码”,将你的开发环境配置变成一个 IDE配置文件 的配置文件放置在代码库中,然后根据这个配置文件生成对应的自动化脚本,完成“集成开发环境” 的创建。因此,SmartIDE中的IDE不仅仅是一个开发工具,而是 包含了环境的IDE。
IDE as Code
的做法源自DevOps的核心实践 Infrastructure as Code
,也就是 “基础设施即代码” 简称 IaC
。其核心思想是将环境配置代码化,常见的k8s的yaml文件其实就是典型的基础设施即代码实现。在运维领域常用的工具比如chef/puppet/ansible,还有 HashiCorp 的 Terraform 也都是 IaC
的经典实现。IaC
的主要价值和目标就是将环境搭建过程标准化,让任何人在任何环境中都可以获得 一致、稳定、可靠 的环境搭建体验。SmartIDE所创造的 IDE配置文件 延续IaC了的使用场景,并将其基本思路应用到了开发测试环境中,这其实就是 SmartIDE 的产品核心能力。
基于 IDE as Code
的实现,SmartIDE在产品实现过程中一直秉承一个原则:能够让用户通过配置文件实现的东西,就不要通过代码实现。这个核心原则给予了SmartIDE非常强的灵活性,比如以下这段视频中所演示的 若依管理系统 项目
这个项目包括比较复杂的环境配置,包括:
- JDK 基础环境
- MAVEN 包管理工具
- MySQL 服务器
- Redis 服务器
- 可选:数据库管理工具 PHPMyAdmin
若依项目的官方文档用了整整2页的篇幅描述开发环境的搭建 (参考链接:环境部署 | RuoYi) 。使用了 SmartIDE 以后,开发者可以一个统一的指令 smartide start
来启动这个复杂的项目,不再需要去阅读这个文档。无论项目的代码是简单亦或复杂,smartide start
指令都可以进行适配,因为其背后的复杂配置已经全部通过 IDE配置文件 和代码保存在一起了。使用 IDE as Code
的另外一个好处是,由于配置和代码保存在一起,进行代码变更的开发者可以同步更新环境配置,并且一起提交进行评审,也就是说:你的环境也和代码一样是可评审,可审计的。
IDE文件配置就是README活文档。
当然,SmartIDE能做的绝不仅仅如此,我们已经发布了 SmartIDE Server 版,允许开发者在网页上即可完成开发环境的搭建和完整的开发调试过程。Server与CLI一样使用这个 IDE配置文件 来识别和搭建环境,与cli保持一致的体验。这一切的目的都是让开发者的日常工作变得简单,让开发者体验 #开发从未如此简单 的快乐。
如果你对云原生开发环境感兴趣,请扫描以下二维码加入我们的 SmartIDE社区早鸟计划
谢谢您对SmartIDE的关注,让我们一起成为云原生时代的 Smart开发者, 享受 开发从未如此简单 的快乐。
README.exe 是的,你看错是EXE的更多相关文章
- yii2框架安装运行init.bat报错php.exe不是内部或外部命令
在安装yii2框架的时候,遇到一个很纠结的问题.就是当我把安装包下载下来之后,在公司的电脑安装可以正常,当我回家用自己的电脑安装就报错,提示 php.exe 不是内部或外部命令,也不是可运行的程序.这 ...
- vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)
vs2010一运行就报错deven.exe assert failure 解决方法,卸载系统中.netFramework最新版本的(简体中文)
- pip3命令报错Fatal error in launcher: Unable to create process using '"d:\old_files\py3.6\python.exe" "E:\py3.6\Scripts\pip3.exe" list'
cmd输入pip3 list命令报错 Fatal error in launcher: Unable to create process using '"d:\old_files\py3.6 ...
- Python ——selenium报错 'chromedriver.exe' executable needs to be in PATH
from selenium import webdriver dr = webdriver.Chrome() 运行时报错: 问题分析: 1.没有下载chromedriver.exe 2.chromed ...
- go调用python命令行参数过量报错python.exe: The filename or extension is too long.的解决方法
当我们在调用python时,如果传入的参数数据量过大时会报错 python.exe: The filename or extension is too long. 这时候我们的解决办法是放弃传参,将想 ...
- wpf dll和exe合并成一个新的exe
原文:wpf dll和exe合并成一个新的exe 微软有一个工具叫ILMerge可以合并dll exe等,但是对于wpf的应用程序而言这个工具就不好用了.我的这方法也是从国外一个博客上找来的.仅供大家 ...
- exe文件打开方式(恢复EXE文件关联)
文件关联损坏常常是计算机病毒造成的,目前网络上有很多相关修复工具,相对来说,System Repair Engineer 支持的修复格式是比较齐全的,这个工具可以在http://www.kztechs ...
- Atitit.程序包装exe启动器 打包 发布 设计 -生成exe java
Atitit.程序包装exe启动器 打包 发布 设计 -生成exe java 1. 要实现的功能1 2. ahk是个好东东..能启动了...1 3. exe4j vs nativej1 4. 2 ...
- 是的 你没看错!!!用JAVA为MCU开发物联网程序?
是的 你没看错!!!用JAVA为MCU开发物联网程序? 一直以来,物联网设备这种嵌入式硬件,对于Java软件开发者来说,就是Black Magic Box,什么中断.寄存器,什么 ...
随机推荐
- 在Android中区分点击和滑动操作
转自:http://blog.csdn.net/do168/article/details/51587933 最近在写一个图片浏览安卓应用,想要弄成全屏显示,只在单击时显示工具栏和状态栏,在触摸滑动时 ...
- Makefile 简介
一.引例: #Makefile objects=test1.o test2.o main:$(objects) gcc -o main $(objects) clean: rm main $(obje ...
- 记一次使用git报错,解决Unable to negotiate with **** port 22: no matching host key type found. Their offer: ssh-rsa
windows电脑重装系统,去官网下载了最新的git安装,一路next下来,打开bash按老路子设置,生成公钥 git config --global user.name "yourname ...
- Ubuntu安装docker(摘自官网,自用)
在 Ubuntu 上安装 Docker 引擎(按照标红顺序执行命令) 预计阅读时间:11分钟 适用于 Linux 的 Docker 桌面 Docker Desktop 可帮助您在 Mac 和 Wind ...
- webpack打包学习
从上图我们可以看出,webpack 可以将多种静态资源 js.css.sass文件等转换成一个静态文件,以此可以减少页面的请求,从而提高浏览器响应速度 1.安装开发依赖包 npm install we ...
- 导入,导出excel
/// <summary> /// 导出数据 /// </summary> /// <param name="XMMC"></param& ...
- metasploit基本命令
一.核心命令 ? 帮助命令 banner 显示一个真棒metasploite横幅 cd 更改当前的工作目 color 切换颜色 connect 连接与主机通信 exit 退出控制台 get 获取特定于 ...
- Codeforces Round #742 (Div. 2) B. MEXor Mixup
题目链接 Problem - B - Codeforces 题意: 给出MEX 和 XOR(分别表示1. 本串数不存在的最小非负数 2. 本串数所有数异或后的结果) 求出这串数最少有几个数, 1 ≤ ...
- HCIE笔记-第七节-ICMP+ARP
ICMP重定向 作用:解决网络中的次优路径 触发:当某一个设备收到一个数据,进行转发时发现还要从该接口进行转发,于是触发ICMP重定向. 报文:Type=5,Code=0 ARP -- 地址解析协议 ...
- 【职场必备】6个免费良心网站&职场办公网站(收藏血赚)
1.随机自动生成头像的网站:https://www.tool22.com/Tools-SJTX.html2.迅捷PDF转换器:https://app.xunjiepdf.com/3.全网音乐下载:① ...