你的下一套CI/CD工具何必是Jenkins- Spug:"没错,就是我"

1,046 阅读6分钟

003350DhBuN.jpg

引入spug官网对其的描述:Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。

特性

  • 批量执行: 主机命令在线批量执行
  • 在线终端: 主机支持浏览器在线终端登录
  • 文件管理: 主机文件在线上传下载
  • 任务计划: 灵活的在线任务计划
  • 发布部署: 支持自定义发布部署流程
  • 配置中心: 支持 KV、文本、json 等格式的配置
  • 监控中心: 支持站点、端口、进程、自定义等监控
  • 报警中心: 支持短信、邮件、钉钉、微信等报警方式
  • 优雅美观: 基于 Ant Design 的 UI 界面
  • 开源免费: 前后端代码完全开源

接下来我们一起来探索spug的cicd世界吧,掘金关于spug大多都是关于前端的自动部署,本人后端仔,所以接下来的都是有关后端代码部署的相关操作, 请大家看到后面, 在你的安装或使用过程中可能会出现的各种问题,我都会给出解决办法供大家参考,原创不易,多多点赞

安装

安装部分其实没什么难度,但是使用者需要有Linux基础命令自由的要求, 官网提供了docker 安装部署,具体安装步骤也比较简单, 按照官网的安装步骤来就可以, 前提是宿主机中有docker 环境,没有的可以参考该文档进行部署-linux上安装Docker(非常简单的安装方法) - 腾讯云开发者社区-腾讯云 (tencent.com)

  • 开始安装(安装部分不做过多赘述)

    按照官方的安装步骤进行安装: (Docker安装 | Spug)

  • 安装过程中如果小伙伴想使用自己的(Mysql 5.6+)来管理数据,[请参考这里](安装相关问题 | Spug), 但是有一个大大大坑, 会导致你的数据库无法链接, 造成此原因的问题是官方的自定义配置中缺少了一个关键参数数据库端口号, 具体如下

官网提供的配置参数

DATABASES = {
  'default': {
          'ATOMIC_REQUESTS': True,
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'spug',
          'USER': 'spug', # 修改为外部数据库的用户
          'PASSWORD': 'spug.dev', # 修改为外部数据的用户密码
          'HOST': 'localhost', # 修改为外部数据的ip
          'OPTIONS': {
          'unix_socket': '/var/lib/mysql/mysql.sock', # !!!删除该行
          'charset': 'utf8mb4',
          'sql_mode': 'STRICT_TRANS_TABLES',
          }
      }
  }

正确的配置参数应该是这样的, 多添加一个PORT 参数

  DATABASES = {
    'default': {
            'ATOMIC_REQUESTS': True,
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'spug',
            'USER': 'spug', # 修改为外部数据库的用户
            'PASSWORD': 'spug.dev', # 修改为外部数据的用户密码
            'HOST': 'localhost', # 修改为外部数据的ip
            'PORT': '3306',
            'OPTIONS': {
            'unix_socket': '/var/lib/mysql/mysql.sock', # !!!删除该行
            'charset': 'utf8mb4',
            'sql_mode': 'STRICT_TRANS_TABLES',
            }
        }
    }
  • 安装完成并初始化之后就可以进行登录了

这里也有个问题, 官方为了考虑到系统安全性,进行了Ip限制, 如果小伙伴的出口ip不止一个的话在访问过程中就会出现, 校验失败,请重新登录

如果出现了上述问题也不要慌, 该问题是由于同一个token是有不同的ip携带访问, 系统内处于安全考虑,回使当前token立即失效导致的, 同学们可以使用手机网络或者正常网络登录后,在系统管理 -> 系统设置 -> 安全设置 中关闭登录ip绑定,即可正常进行访问, 如下图

image.png

官网处于安全考虑,不建议大家关闭, 所以看小伙伴的取舍, 如果关闭后担心系统安全,可以开启登录MFA(两部)认证, 具体开启方法可以参考功能下方的描述

应用发布

进入发布配置-点击新建

image.png

新建完成后点击新建发布, 有两种发布方式

image.png

常规发布: 由spug进行主流程控制, 再各个阶段提供了钩子函数, 小伙伴可以利用钩子函数进行一系列自定义操作 自定义发布: 完全有用户提供脚本进行自定义发布

接下来我只讲常规发布相关操作, 点击常规发布

image.png

有三个必填参数:

  1. 发布环境: 可以在配置中心 -> 环境管理新建
  2. 目标主机: 在主机管理进行添加后可选择要步数的主机
  3. Git仓库地址: 如果是私有仓库,请点击下方的私有仓库? 配置用户名及密码

填写完整后点击下一步, 即到了配置钩子函数的地方

image.png

有一个文件过滤规则和两个钩子函数

  1. 文件过滤规则: 后端项目如果是微服务部署的话, 只需填写你要发布的jar包全名即可,规则选择包含
  2. 代码检出前执行: 也就是spug拉取代码前需要执行的脚本函数
  3. 代码检出后执行: 也就是spug拉取代码后需要执行的脚本函数

配置完成后继续下一步

image.png

这些元素我会一一解释

  1. 部署路径: 应用最终在主机上的部署路径,为了数据安全请确保该目录不存在,Spug 将会自动创建并接管该目录,可使用全局变量,例如:/www/$SPUG_APP_KEY
  2. 存储路径: 此目录用于存储应用的历史版本,可使用全局变量,例如:/data/repos/$SPUG_APP_KEY
  3. 版本数量: 早于指定数量的构建纪录及历史版本会被删除,以释放磁盘空间。
  4. 应用发布前执行: 一般会使用脚本结束该java程序
  5. 应用发布后执行: 一般会在此钩子函数执行启动jar包的命令

我之所以没写,是因为该模块是个基础依赖模块,不需要启动jar包.

java服务发布可以参考官网提供的示例[:](Java项目配置 | Spug)

记个坑

发布Maven的java项目时一定要在容器中安装 Maven 和 jdk. 注意! 是在容器中, 宿主机安装了没用, 要在容器中也安装才可以

官网容器安装jdk和Maven的方法

# 自行至 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载jdk
# 把已下载的压缩包拷贝进容器
docker cp jdk-8u251-linux-x64.tar.gz spug:/
docker exec -it spug bash
tar xf jdk-8u251-linux-x64.tar.gz -C /opt

# 安装maven
curl -o apache-maven-3.6.3-bin.tar.gz http://apache.mirrors.pair.com/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar xf apache-maven-3.6.3-bin.tar.gz -C /opt/
echo -e 'export JAVA_HOME=/opt/jdk1.8.0_251\nexport PATH=$PATH:$JAVA_HOME/bin:/opt/apache-maven-3.6.3/bin' > /etc/profile.d/java.sh

# [可选]配置阿里云镜像加速下载,在159-164行(<mirrors\>标签内)添加以下内容
vi /opt/apache-maven-3.6.3/conf/settings.xml

    159     <mirror>
    160       <id>aliyunmaven</id>
    161       <mirrorOf>*</mirrorOf>
    162       <name>阿里云公共仓库</name>
    163       <url>https://maven.aliyun.com/repository/public</url>
    164     </mirror>

# 退出并重启容器
exit
docker restart spug
  • 以上准备工作就绪之后,就可以进行项目构建啦,点击构建参数 -> 新建 -> 选择环境 -> 选择构建

image.png

开始构建,构建成功

image.png

以上就是Spug的安装使用过程以及避坑指南, 如果有帮到你可以点关注哦, 这是我的第一篇文章, 写的不好请指出,本人一定积极采纳改正