一、盘古介绍

盘古是javashop团队内部总结多年的部署经验推出的一款开源的devops工具, 致力于在提供简单、使用、高效的可持续集成服务。在目前流行的devops工具中缺少对机器、仓库、步骤、环境变量的明确定义、操作,盘古提供了上述的资源的管理,内置常见java,、PHP、nodejs、mysql、nginx等常见环境的执行器(直接编排为步骤),并提供了导出导入功能、一键复制流水线,极大方便了部署过程。通过环境变量和配置文件可以实现复杂的大型项目统一配置。未来计划支持k8s的流水线编排,感谢您的star,您的支持是我们不断完善的最大动力! 欢迎加入盘古交流群:最下方扫码进群。

二、特色功能与亮点

对比流行的devops工具(如jenkins、瓦力等),盘古汲取了他们的众多优点,并结合我们在实际使用中碰到的问题,尝试给大家提供一款更加简便易用的devops工具。

1、简易安装

基于Java+h2,一个jar包即可运行

开箱即用是盘古追求的第一目标,再使用jenkins、瓦力等等工具的过程,希望可以提供最简便的安装过程。

2、编排更容易

(1、盘古明确定义出步骤、依赖、检查等概念,希望提供极低的编排门槛

(2、内置git clone、安装jdk、安装maven、mysql、nginx、nodejs等等常见执行器,简化编排过程

(3、步骤可以暂停跳过、拖拽排序编排步骤,方便部署异常情况调试

(4、内置检查器,可检测编排步骤是否确认成功

(5、导出导入编排文件,一键复制编排

3、环境变量、配置文件支持

在大型的项目devops过程中,需要统一定义数据账号密码、秘钥、域名等等的配置文件,盘古抽象出环境变量、配置文件的概念来解决这类问题。统一定义如mysql密码、spring boot配置文件等

4、机器管理

提供机器管理、标签设置,按机器按标签,批量部署

5、仓库管理

提供仓库管理、方便部署编排

6、项目管理

按项目汇总配置文件、环境变量,简化编排过程

7、插件

插件式扩展、希望借助开源社区的力量, 提供无限可能

三、快速上手

1、安装盘古

请根据您的情况选择

基于docker安装

前置条件:安装docker,可参考这里:

https://pangu.javamall.com.cn/docs/#/docker

运行盘古

通过如下命令来运行盘古:

docker volume create pangudata
docker run --rm -d -p 8080:8080 --name pangu -v pangudata:/opt/pangu/database  registry.cn-beijing.aliyuncs.com/javashop-enation/pangu:1.0.0

访问 http://ip:8080是否启动成功

基于jar包安装

前置条件安装Java 请参考https://www.runoob.com/java/java-environment-setup.html

通过如下命令来运行盘古:

wget -P /home/ https://mirrors.javamall.com.cn/pangu/1.0.0/pangu.tar.gz
tar -xzvf  /home/pangu.tar.gz
cd  /home/pangu
java -jar ./pangu-1.0.0.jar

上述命令会独占当前窗口,您可以使用nohup来运行盘古:

cd  /home/pangu
nohup java -jar ./pangu-1.0.0.jar > /home/pangu/pangu.log 2>&1 &

注意:必须在当前目录执行启动命令否则无法登陆

基于源码安装

基于源码安装盘古命令如下:

git clone https://gitee.com/javashop/pangu.git
cd pangu
mvn clean install -DskipTests

2、完成您的第一个部署

完成安装后,访问:ip:8080,默认账号/密码是admin/admin

机器配置

您需要准备一台linux机器来体验盘古并在盘古中将机器配置好(我们将此机器命名为“测试机”)

部署的编排

我以安装docker,并部署一个mysql实例为例,体验部署的编排及执行。

首先需要您新增一个部署:

1、部署名字随意(比如mysql部署)

2、部署服务器:选择刚刚我们建立的“测试机”

3、环境变量:暂时可以先不选择

我们来编排这个部署,在盘古中内置了很多执行器,这些执行器是我们组织编排的核心

新增步骤

在这个步骤管理中,我们新增两个步骤:

第一个步骤:安装docker

如上图所示,执行器选择安装docker,步骤的名字命名为"安装docker"

第二个步骤:安装mysql

执行部署

点击“执行部署”跳转到执行界面,来体验基于盘古的第一次部署。

四、概念&功能

1、机器、标签

要执行部署操作的目标机器,部署时可以选择部署一台或多台机器,也可以将机器按标签来分类,然后按标签来部署。

2、部署与步骤

部署的编排核心是步骤,一次部署包含多个步骤,比如:

步骤1:克隆源码

步骤2:编译源码

步骤3:运行Jar

步骤是顺序执行的,只有上一个步骤执行成功后下一个才会被执行,否则整个部署将被终止。

盘古将步骤分为执行器和检查器两个部分(检查器是可选的),执行器执行具体的部署动作(比如安装mysql),检查器负责检查这个部署动作是否执行成功。

3、执行器和检查器

盘古内置了一些常用的执行器和检查器,如:“SSH命令执行”、“git clone”、“安装maven”、“端口检查器”等,详解下面的列表。

执行器名称

ssh命令执行

git clone

安装maven

安装mysql

安装redis

安装node

您可以通过安装插件来使用别人开发的执行器或检查器。您也可以通过开发插件来扩展执行器或检查器。

4、仓库

这里的仓库是指的git源码仓库,在"git clone"执行器中可以选择要clone的仓库

5、环境变量和配置文件

在部署的编排过程中,我们有这样的场景:

1、安装mysql时指定mysql的密码

2、将密码配置在程序相应的配置文件中

盘古是通过”环境变量“和”配置文件“实现上述过程的自动化的。通过定义一组环境变量,比如:那么在配置文件中就可以通过${mysql.username}这种语法来引用这个变量(遵循freemaker语法)

您需要编辑部署,使某个环境变量项目和部署关联才能使环境变量生效

配置文件需要使用”写入配置文件“这个执行器来将配置文件写入到具体的服务器某个位置

五、插件开发

盘古中的执行器和检查器是以插件的形式提供的,您可以开发自己的插件来拓展执行器和检查器。

插件开发插件包括一下几种:

插件类型

kind标识

说明

执行器

executor

在部署时被执行

检查器

checker

完成某个步骤时,对结果检测

1、插件开发

盘古的插件是用yml格式定义的:

#插件版本
version: 1.0metadata:#类型,必须#可选值:#1.executor:执行器#2.checker:检查器#3.deployment:部署kind: executor#定义插件名称,必须name: "git clone"#定义id,必须,不能有空格id: git_clone#定义插件描述,可以为空desc: git clone 插件#定义作者名字,必须author: javashop#定义作者的链接,可以为空author_url: "https://www.javamall.com.cn"#定义要传输到服务器中的文件
#source是本地文件路径,以classpath为根目录的相对路径
#target是远程目标路径,可以使用${worksapce}变量
copy:- source: executor/git_clone/git_clone.shtarget: ${workspace}/git_clone.sh#定义要执行的命令
command:#定义命令的类型,目前支持ssh 命令,必须type : sshexec :- "sh  ${workspace}/git_clone.sh"#插件的配置项,可以是多个配置项,可以为空
#每个配置项,会在配置界面展示
#客户输入的值在解析命令的时候会通过$ {变量名}解析出来
#type支持:
#1、input :单行文本
#2、textarea:多行文本
config :item:title: 源码目标路径name: dirtype: inputhtmlcss: "width:100px"

2、插件的存放

插件可以存放在两个位置:

1、源码的resources目录

2、打包后的jar同级plugins目录

子目录

目录

说明

executor 存放执行器yml文件
checker 存放检查器yml文件

插件可以是单独直接在相应的文件夹中,也可以自己独立一个文件夹存放,比如:

如上图所示,"plugin-one"直接存放在executor目录中,"plugin-two"单独在一个文件夹中,一般地是这个插件还存在除了yml文件以外的文件所以单独存在一个文件夹比较方便。

3、插件的书写与测试

首先您需要熟悉git fork

可以参考下面的文档:https://gitee.com/help/articles/4128#article-header0

Fork盘古插件仓库

请fork下面的仓库:https://gitee.com/javashop/pangu-plugin

建立插件文件

在您fork的仓库中:在resources目录中建立你的插件文件,如:/resources/executor/test.yml

编写插件

根据需求按规则编写yml文件,您可以参考这个示例插件

测试插件

使用如下代码测试插件:

@RunWith(SpringRunner.class)
@SpringBootTest()
@ComponentScan("com.enation.pangu")
public class PluginTest {/*** 插件业务类*/@AutowiredExecutorManager executorManager;/*** ssh客户端*/SshClient sshClient;/*** 环境变量*/Map env = new HashMap();//环境变量String workspace = "/opt/workspace/";/*** 测试前构建ssh client及 workspace* @throws IOException*/@Beforepublic  void init() throws IOException {env.put("workspace",workspace);//在这里定义测试机的信息sshClient = SshClientFactory.createSsh("root", "123456", "192.168.2.55", 22);//先创建workspacesshClient.exec("mkdir -p "+ workspace,text->{out.println(text);});}/*** 测试结束后断开ssh连接* @throws IOException*/@Afterpublic void clean() throws IOException {sshClient.disconnect();}/*** 执行器测试* @throws ScriptException*/@Testpublic void gitClone() throws IOException {//环境变量env.put("username", "2323");env.put("password", "2323");env.put("git_url", "https://gitee.com/javashop/pangu.git");//执行插件,第一个参数时插件id,第二个参数是插件类型,第三个参数是环境变量,第四个参数是ssh客户端boolean result = executorManager.runExecutor("git_clone",PluginType.executor, env, sshClient);out.println(result);}/*** 检查器测试* @throws IOException*/@Testpublic void checkerTest() throws IOException {//执行插件,第一个参数时插件id,第二个参数是插件类型,第三个参数是环境变量,第四个参数是ssh客户端      boolean result = executorManager.runExecutor("install_one", PluginType.checker, env, sshClient);out.println(result);}
}

注意:开发好的插件,需要在插件页面点击同步才会出现在相应的列表中

六、贡献你的插件

欢迎您将插件贡献给盘古,共享方式为需要您从自己的fork的仓库建立一个PR到如下仓库 https://gitee.com/javashop/pangu-plugin

操作方式参考如下文档:https://gitee.com/help/articles/4128#article-header0

创建pull request时需要您备注好插件的作用以及您的联系方式,或扫描计入盘古微信交流群,发送一个消息给我们,以便我们及时审核您的PR,如果我们审核通过后,就可以被其他人安装使用啦。

请先扫码并关注公共账号,可以自动加入盘古交流群:

可持续集成(devops)工具盘古入门指南相关推荐

  1. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  2. truffle (ETH以太坊智能合约集成开发工具) 入门教程

    truffle (ETH以太坊智能合约集成开发工具) 入门教程 前言 在你了解区块链开发之前,你有必要了解区块链的一些基础知识,什么是DApp,DApp与传统app的区别, 什么是以太坊,以太坊中的智 ...

  3. 持续集成(CI)工具-----jenkins

    1.jenkins 1.1. 什么是jenkins Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续.自动的构建/测试软件项 ...

  4. 持续集成-DevOps概念篇

    一.DevOps是什么? DevOps一词来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作, 通过自动化流程来使得软件构建.测试.发布更加快捷.频繁和 ...

  5. 持续集成部署工具jenkins简介

    1. Jenkins基本介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.现在企业一般使用 ...

  6. Jenkins持续集成部署工具

    目录 1 持续集成 1.1 软件开发生命周期 1.2 软件开发瀑布模型 1.3 软件的敏捷开发 1.4 什么是持续集成 1.5 持续集成的好处 2 Jenkins安装配置 2.1 Jenkins介绍 ...

  7. Jenkins 持续集成(CI)工具

    什么是Jenkins Jenkins是一个可扩展的持续集成引擎,是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 1.概念 Jenkins中文官网 w3cschool中文文档 Jenki ...

  8. 持续集成以及工具git/gitee/jenkins介绍

    持续集成 团队将自己的工作成果持续集成到一个公共平台的过程. 相关工具: 本地代码管理工具:git 远程代码管理:gitee(国内).github(国外).gitlab(公司私有服务器) (1)git ...

  9. 持续集成学习笔记-入门篇(1)持续集成基本概念

    今年7月份中下旬,笔者见过一个号称"资深开发者"的哥们(据说编程有十来年了),笔者问他:"你们平时用的持续集成工具都有哪些?"这哥们回答:"那些都是骗 ...

最新文章

  1. errors_impl.InvalidArgumentError: Input to reshape is a tensor
  2. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色...
  3. 微信发力了,一键部署网站后端!
  4. 飞鸽传书官方网站 创立黑马程序员训练营
  5. 提高tomcat的并发能力
  6. 微信支付curl: (60) SSL certificate problem: unable to get local issuer certificate 解决方法
  7. 简单类型视图状态应用
  8. dnsmasq-2.48没有ipset特性,安装dnsmasq-2.71来支持ipset
  9. [3]、Swagger——解决前后端打架问题
  10. Redhat开机丢失引导
  11. 意派导出html,三款专业H5工具评测:意派Epub360、ih5、mugeda
  12. 什么是IPS?如何对其进行调整?
  13. python 索引方法loc和iloc
  14. Creational.Builder建造者模式:构造流程和具体实现的分离
  15. 儿童摄影html代码源,HTML5织梦dede儿童摄影/影楼/写真/摄影工作室网站模板
  16. java框架技术路线 2019.10.3
  17. 【BZOJ5109】【CodePlus2017】大吉大利,晚上吃鸡!
  18. Java:从1循环到150,在每行打印一个值,另外在每个3的倍数行上打印出foo“,在每个5的倍数行上打印“biz“,在每个7的倍数行上打印“baz“
  19. NAACL2022-Prompt相关论文对Prompt的看法
  20. Pandas 中 Series 和 DataFrame 知识点

热门文章

  1. SysML图例-核聚变
  2. 【C语言内功心法】__weak -- 示弱也是一种强大
  3. Redis如何保存数组和对象
  4. java controller注解原理_SpringMVC运行流程与原理【Controller接口实现注解实现】
  5. python考证书-Python全国二级等级考试(2019)
  6. 由温度转换实例学习python基本语法元素
  7. OpenGL 图形学基础知识汇总
  8. 自定义圆形进度条的实现方式
  9. 法律法规与标准化知识
  10. 平阳县抖音平台直播运营主播带货第三期培训提升班开班啦!