乐趣区

关于github:DevStream-概览开源-DevOps-工具链管理工具

*
English version:《Hello, World》Author: @Tiexin Guo(郭铁心)
中文版:《你好,世界》作者:@胡涛(Daniel Hu)

不必尝试切换中英文版本看下我翻译的好不好,我就不是从英文版翻译过去的。
咱们的文章如果是双语公布,那就肯定是两次原创。尽管表白的主题一样,可能也只有主题一样了。*

(如果你违心深刻浏览本文,请点击文末“浏览原文”跳到网页版持续。毕竟我懒得排版)

本文不算短,然而我晓得你会读完。如果没读完,,不可能,相对不可能!

在第一篇博文里,我要讲些啥呢?如同我也没有想好。然而他们喊我写,那我就写了。
好,让咱们荡起双桨,不是,让咱们开始吧!

别别别划走,给我三分钟,还你一天好情绪!

别急,置信我,下文不会让你看着 ” 心力憔悴 ”,你能够笑着看齐全文,并且毫不费力地学到新姿态,不是,新常识,新常识!

很多时候,我像一个 ” 小白 ” 用户。(尽管我是,然而我晓得你们不信。)我怎么个 ” 小白 ” 法呢?

比方我喜爱用开源软件(白嫖谁不喜爱?),然而我相对懒得在遇到问题的时候上 GitHub 给对应的开源我的项目开一个 issue 来反馈我遇到的问题,更别提开一个 pr 来修复我遇到的问题了。

或者有一天我情绪大好,我会给一些 ” 反馈 ”,兴许是在用户群里,兴许是在其余中央。当然个别用着爽了,不可能开一个 issue 表示感谢。然而用着很不爽,或者我会忍不住开个 issue 问一句:

啥破玩意?就这?好意思开源?WTFFF!!!

我做着朝九晚五的工作,我不加班,我上班后不工作。

然而如果我遇到一个好玩的开源软件,或者上班后你会看到我还在参加某个开源我的项目,不论是写代码,还是参加社区例会。这不是我的工作,这是我的喜好,我的生存。

起初我就没那么 ” 小白 ” 了!而一个 ” 大白 ” 用户的涵养,就是学会了提提 issue,提一些小的 pr,参加一些社区活动,晓得开源我的项目的最新动静,逐步融入了开源社区。

说个笑话:我上班了不工作。我不感觉玩开源社区是工作。我喜爱没日没夜倒腾开源社区。而后老板给我的工作就是玩 ” 开源社区 ”!!!WTF!!!
老板催我写注释了。好吧,本文还是要介绍 DevStream 的,不能全文胡扯。

在这篇 ” 创世 ” 博文里,我筹备:

  • 向你介绍 DevStream 的工作原理(不要放心,不会波及到简单的原理,简单的我也不会);
  • 带你走读咱们的代码库(不要放心,不会波及到简单的源码,简单的我也不会);
  • 通知你如何开发自定义插件(不要放心,看完了你只会晓得一个大略,真想上手还是得看咱们的官网文档)。

如果你没有听过 DevStream,不焦急,请先花半分钟工夫浏览下 DevStream 的 README。

我想听到你的骂声

咱们在三月初公布了 v0.1 版本,总有人质疑咱们是不是太早 release 了。
其实不早。咱们必定也不是不小心 release。

咱们是成心的。没错,成心的。咱们其实能够躲着偷偷再开发几个月,实现更多的性能,反对更多的插件,把 DevStream 做的更完满再 release。

然而咱们放心的是 “ 咱们认为好的性能 ” != “ 你真正须要的性能 ”

咱们有很多的想法,咱们有很多想做的性能,但咱们不是最终的用户。咱们当初做的很多事件其实是在 ” 假如 ”,在猜用户想要什么性能。

既然是想要晓得 ” 用户 ” 想要什么性能,为什么不早点 release 进来,让用户来通知咱们还缺什么,让用户通知咱们哪里做的不好呢?

那就收回去吧,先 release,听听用户的骂声。咱们要做的,就是不给用户第二次骂的机会,以最快的速度反馈用户的反馈,解决用户的问题。

行,废话了这么多,如果你对 DevStream 有一些趣味,欢送关上咱们的 GitHub repo,看下 README 和 quickstart,体验一下 DevStream 的性能。

我置信你在第一次应用 dtm 命令的时候,必定心中会屡次燃起骂人的欲望:

什么破玩意!!!

没关系,关上咱们的 Issues 页面,畅所欲言!只有 GitHub 不 ” 谐和 ” 你,咱们必定不 ” 谐和 ” 你。

你违心骂我,就阐明你心里还是有我,哈哈,谢谢!我心里也有你!

当然,提 Issues 是一种社区奉献行为,没错,不只是 pr,Issues 也算。对于 ” 社区贡献者 ” 咱们会提供无比激情的帮忙(相对超过你的设想)。

你能够不信,那么你提一个 pr 试试。当然兴许你会说提不来,那你就提个 issue 通知我你想提 pr,而后,你就有了被我打动的机会了!

至于给社区贡献者的 ” 精力 ” 上或者 ” 物质 ” 上的处分,当然有,不过我临时不想走漏。如果你违心尝试成为一个 ” 社区贡献者 ”,那么置信我,你不会悲观。

好奇心来了?

Good!让咱们丢掉双桨,屏住呼吸,跳下去吧。深刻看下 DevStream!

架构

一张好图胜千言啊

(如果你感觉这个图不够好,请移步英文版,英文版作者绘制的这个图,和我没关系)

咱们用了 Go plugin. 这或者有很多值得探讨的点,然而这里咱们简略先聊几句:

  • 首先,咱们须要反对很多的 DevOps 工具,而后一种工具对应一个插件,听起来很天然;
  • 接着,如同有很多可选的 “core-plugin” 可选架构,咱们发现 Golang 的 Plugins 机制满足需要;
  • 而后,最初,这里如同还有些点须要列,然而,不好意思,我想不起来了。

状态

咱们把 DevStream (CLI 工具名字叫 dtm,别问我为啥,这是一个很长的故事,如果你感兴趣,能够看这里)
当作一个 “ 状态机 ”。

给一个输出,联合以后的状态,DevStream 会接着计算接下来该干什么。如果你对此感兴趣,那就跳到这里再看几眼。

目录构造

咱们的一个次要根据是 standard project layout。然而别去点这个链接,外面的内容太长了,或者不是你想看到的。看我的总结就行:

  • /cmd: 入口包,别放太多货色在外面。
  • /pkg: 或者其余我的项目能用失去的一些代码,次要是一些 util。
  • /internal: 我的项目内的次要逻辑,不能被其余我的项目 import。
  • /hack: 一些次要的工具脚本等。
  • /build: 打包相干的一些脚本等。
  • /docs: 这个不须要解释了。
  • /examples: 这里次要用来保留示例配置。

解释不动了,大家能够看看英文版怎么形容的。我说过我是 ” 小白 ”,我不懂的。不过这个目录构造应该 Gopher 看起来很容易了解,大家顾名思义吧。

Core / Plugin

  • Core 代码: https://github.com/merico-dev…
  • Plugins 代码: https://github.com/merico-dev…

dtm apply 命令背地的逻辑是啥?

  1. 从这里开始:/cmd/devstream/main.go.
  2. 接着 apply 命令在 /cmd/devstream/apply.go.
  3. 而后 引擎 /internal/pkg/pluginengine 运行所有的 apply 逻辑,
    在这里:/internal/pkg/pluginengine/cmd_apply.go.

而后,靠你本人去开掘其余细节了!

DevStream 发版太慢了!!!能不能快点???就问你能不能???

能,当然能!

首先装个 Go,如果你没有装好,能够参考官网文档。

git clone https://github.com/merico-dev/stream.git && cd streamgo install golang.org/x/tools/cmd/goimports@latest

#make sure your GOPATH/bin is in your PATH

#for example, run this:

export PATH=``go env GOPATH``/bin:$PATH

make build

#after you run "make build", you DO NOT need to run "dtm init" anymore

#run "dtm apply", "dtm delete" directly

#because "init" will try to download plugins from the internet,

#instead of using what you just builtdtm apply -f path_to_your_config.yaml

没看够?

祝贺你曾经走到这步了,要不要玩一点刺激的?比方尝试开发一个新插件?

每个插件都须要实现一些接口,定义在这些中央:

  • Create
  • Read
  • Update
  • Delete

能够参考一个曾经存在的插件,比方这个。

好好好,在你埋怨之前我想通知你一个秘密武器!开发一个新插件时须要复制粘贴很多的代码,创立反复的目录构造,这种事件让人感觉很不爽!

你感觉我会容忍这种不爽存在超过一天???

没错,不会,相对不会!

咱们开发了一个小工具,让你可能疾速生成一个新插件的骨架:

dtm develop create-plugin --name=my-pluing-name-here

好了。打完出工。兴许你还没看爽,然而我写累了。我要劳动了,I need a cup of coffee! now! bye!

* 最初,记得去看一下英文版,你会看到不一样的风光!
我不骗你哈,我是来搞笑的,你要谨严的常识,得去英文版看。
*

本文由博客群发一文多发等经营工具平台 OpenWrite 公布

退出移动版