xiaofangl / hasan

一套python + vue 的 web平台

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

python + vue project

应用技术栈

vuejs2 django python gitlab-ci gitlab-runner nginx-proxy supervisor gunicorn nodejs apache rsync mysql redis vuex vue-router axios element-ui ansible-playbook ansible fabric

this project use python api process the data, with the separation of web page file;

run it

should run respectively python and web page; ** install ** install python depend, run it install Vuejs depend, run it

  • 2018-06-05
  • vue bus增加emit on 监听事件;
  • login中增加user_group 信息,存储入前端localStorage,通过父组件emit传递组信息,子组件on接收 验证用户permission;
  • 前端所有模块增加 permission的状态管理;
  • 后端deploy模块增加新的部署日志;

hasan

deploy desciption(hasan发布模块实现)

原理

通过监听 可控分支,实现自动构建 并部署到测试环境。(gitlab.yml),并将构建包同步到 HTTP发布服务器 生产环境通过 HTTP发布服务器 自行编写发布流程(Python、ansible palybook.yml、Vue前端 自动部署涉及了若干个角色,主要介绍如下:

GitLab-CI

GitLab自带的持续集成系统,你装的GitLab的那台服务器上就有,无需自行安装。GitLab-CI负责解析.gitlab-ci.yml

.gitlab-ci.yml

GitLab-CI使用YAML文件来管理项目配置,在git项目的根目录下创建此文件,文件中包含一系列的阶段和执行规则。GitLab-CI在push后解析它,根据里面的内容调用runner来执行。YAML配置语法

GitLab-Runner

这个是脚本执行的承载者, .gitlab-ci.yml的script部分就是由runner来负责的。GitLab-CI解析项目里的.gitlab-ci.yml文件之后,根据里面的规则,分配到各个Runner来运行相应的脚本script

搭建步骤:

基础服务环境

    • 服务器之间需要 开启免密传输(基础环境)
    • 要一套 Vue代码
    • 一个gitlab 服务器1
    • 需要在Vue代码中 加入 gitlab.yml 文件,和shell script 脚本,用来完成ci,实现监听分支 发布到测试的流程。
    • 一个 nodejs runner 服务器1
    • 一个存放 打包后文件的 服务器(构建好的包通过 rsync同步到 nginx 或Apache做发布目录中)1
    • 不少于两天的发布客户端服务器2(每个环境)
    • ansible 接口支持,hasan 上已有playbook接口 调用基于playbook.yml 封装使用。
  • 1)升级gitlab,支持gitlabci(已实现);

  • 2)安装gitlab-runner ,执行器是gitlab-ci.yml实际执行者,需安装gitlab-ci.yml定义的相关构建环境,并想gitlab服务器注册;(以实现)

  • 3)编写gitlab-ci.yml 及相关shell脚本,gitlab-ci.yml 是监听 触发工作的核心。在gitlab-ci.yml可定义 不通的job, 如 build、deploy_test等;将所需的手动触发的操作,编写为相应的job。(以实现

  • 4)Python hasan 生产环境发布 构建好的项目包(已实现部分 还需权限矩阵模块 应用及其他季节API,版本升级)

    1. 操作日志以存入MySQL数据库,可提供后续统计分析及故障分析

hasan(哈桑)——deploy 前端页面

image image image

image image image

About

一套python + vue 的 web平台


Languages

Language:CSS 77.4%Language:Python 12.4%Language:Vue 9.2%Language:JavaScript 1.0%Language:HTML 0.0%