vue.js(element框架)+golang(beego框架)开发的运维发布系统,支持git,jenkins版本发布,go ssh,BT两种文件传输方式选择,支持部署前准备任务和部署后任务钩子函数

该项目已停止开发,不再新增功能,十分欢迎开发同学贡献PR。本项目适合有vue+go开发经验的同学作为二次开发框架,不适合小白用户使用,请慎重选择!

gopub(基于vue.js element框架+golang beego框架开发)是一个基于运维场景设计的企业级运维发布系统。配置简单、功能完善、界面流畅、开箱即用!支持git、jenkins版本管理,支持各种web代码发布,一键完成Golang,nodejs,PHP,Python,JAVA等代码的发布、回滚操作。

我们运维团队前期使用walle web部署系统进行发布操作,在此也感谢walle团队贡献的优秀开源项目.walle的web体验比较好,本次开源的gopub前台完全模仿walle前台,使用vue.js element框架重写.

gopub已持续运行近两年时间,在我们预发布和生产环境完成37000+次稳定部署,支持单项目100+台服务器部署110秒左右,支持2G+CDN静态资源发布传输30秒完成. 统计

代码地址

demo地址(Docker部署,账号admin 密码123456)

公网测试环境:http://140.143.85.18:8192/

使用框架

功能特性

  • Docker&k8s支持:Docker镜像仅60M,kubernetes编排文件一键部署运行
  • 部署简便:go二进制部署,无需安装运行环境.
  • gitlab发布支持:配置每个项目git地址,自动获取分支/tag,commit选择并自动拉取代码
  • jenkins发布支持:支持jenkins可选build history一键发布
  • ssh执行命令/传输文件:使用golang内置ssh库高效执行命令/传输文件
  • BT支持:大文件和大批量机器文件传输使用BT协议支持
  • 多项目部署:支持多项目多任务并行,内置grpool协程池支持并发操作命令和传输文件
  • 分批次发布:项目配置支持配置分批发布IP,自动创建多批次上线单
  • 全web化操作:web配置项目,一键发布,一键快速回滚
  • API支持:提供所有配置和发布操作API,便于对接其他系统 API使用example
  • 部署钩子:支持部署前准备任务,代码检出后处理任务,同步后更新软链前置任务,发布完毕后收尾任务4种钩子函数脚本执行

Docker 快速启动

#使用dockerhub镜像启动,连接外部数据库
sudo docker run --name gopub -e MYSQL_HOST=x.x.x.x -e MYSQL_PORT=3306  -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192  --restart always  -d   lc13579443/gopub:latest 

#使用dockerhub镜像启动,连接Docker数据库
sudo docker run --name gopub-mysql -h gopub-mysql  -p 3306:3306  -v /data/gopub-mysql:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456  --restart always -d mysql:5.7.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

sudo docker run --name gopub --link gopub-mysql:gopub-mysql -e MYSQL_HOST=gopub-mysql -e MYSQL_PORT=3306  -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192  --restart always  -d   lc13579443/gopub:latest 

Docker 镜像制作

# 使用multi-stage(多阶段构建)需要docker 17.05+版本支持
sudo docker build --network=host  -t  gopub .
sudo docker run --name gopub -e MYSQL_HOST=x.x.x.x  -e MYSQL_PORT=3306  -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192  --restart always  -d  gopub:latest 

Kubernetes 快速部署

# apiVersion: apps/v1需要kubernetes 1.9.0+版本支持
kubectl apply -f  gopub-kubernetes.yml

源码编译安装

编译环境

  • golang >= 1.8+
  • nodejs >= 4.0.0(编译过程中需要可以连公网下载依赖包)

源码下载

# 克隆项目
git clone https://gitee.com/dev-ops/gopub.git

# 编译前端,npm较慢可使用cnpm

cd vue-gopub
npm install
npm run build

#修改配置 数据库配置文件在 src/conf/app.conf

#编译,control需要给可执行权限,并修改go安装目录 export GOROOT=/usr/local/go
./control build

#执行数据库初始化
./control init

#启动服务 启动成功后 可访问 127.0.0.1:8192 用户名:admin 密码:123456
./control start

#停止服务
./control stop

#重启服务
./control restart

快速使用

下载项目二进制包,无需安装go环境和node环境

#给control和src/gopub给可执行权限

#执行数据库初始化
./control init

#启动服务 启动成功后 可访问 127.0.0.1:8192 用户名:admin 密码:123456
./control start

#停止服务
./control stop

#重启服务
./control restart
#安装系统服务
cp ./gopub.service /usr/lib/systemd/system/gopub.service
systemctl enable gopub.service
systemctl restart gopub.service

配置ssh-key信任

前提条件:gopub运行用户(如root)ssh-key必须加入目标机器的{remote_user}用户ssh-key信任列表

#添加机器信任
su {local_user} && ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_server

#need remote_user's password
#免密码登录需要远程机器权限满足以下三个条件:
/home/{remote_user} 755
~/.ssh 700
~/.ssh/authorized_keys 644 或 600

Getting started

1. 项目配置

项目配置

  • 项目名称:xxx.example.com (项目命名一定要规范并唯一)

  • 项目环境:现在只用到预发布环境和线上环境。

  • 地址:支持gitlab,jenkins,file三种发布方式.

选用Git在地址栏里面填入git地址,https方式需在地址中加入账号密码,ssh方式需保证gopub所在服务器有代码拉取权限.我们一般在gitlab创建一个public用户,将gopub所在服务器key加入public用户deploy-keys设置,并将public用户授权可拉取所有gitlab项目.

选用jenkins需要录入jenkins对于的job地址和账号密码,

宿主机

  • 代码检出库:/data/www/xxx (名称需要唯一)
  • 排除文件:默认不填写,可填写.git(tar打包忽略.git目录)等其他需要打包忽略文件

目标机器

  • 用户:www (目标机执行操作用户)
  • webroot:/data/htdocs/shell_php7 (目标机代码发布目录,软链目录)
  • 发布版本库:/data/htdocs/backup/shell_php7 (目标机代码备份目录,实体目录,* * * webroot软链到该目录下的对应发布目录)
  • 版本保留数:20 (发布版本库中保留多少个发布历史)
  • 机器列表:一行一个IP (复制粘贴ip的时候注意特殊字符)

高级任务

前面两个任务的执行是在管理机上,后面两个任务的执行是在目标机器上

  • 代码检出前任务:视情况而定(默认为空)
  • 代码检出后任务: 需要composer的项目需要添加:cd {WORKSPACE} && rm -rf composer.lock vendor && composer install --optimize-autoloader --no-dev -vvv --ignore-platform-reqs ,否则为空
  • 同步完目标机后任务:视情况而定(默认为空)
  • 更改版本软链后任务:视情况而定(默认为空)

2. 创建上线单

创建上线单

  • gitlab上线单 git配置
  • jenkins上线单 jenkins配置

3. 部署操作

选择上线单 部署

开发团队

  • 林超
  • 高传泽
  • 金阳
  • 赵连启
  • 张群烽

下个版本计划

  • 待定
Comments
  • docker版,tar命令无 --preserve-permissions参数

    docker版,tar命令无 --preserve-permissions参数

    cd /tmp/simu/go-test-20180410-101436 && tar --preserve-permissions -czf /tmp/simu/go-test-20180410-101436.tar.gz .

    执行结果: tar: unrecognized option: preserve-permissions BusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.

    Usage: tar -[cxtZzJjahmvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]...

    Create, extract, or list files from a tar file

    Operation: c Create x Extract t List f Name of TARFILE ('-' for stdin/out) C Change to DIR before operation v Verbose Z (De)compress using compress z (De)compress using gzip J (De)compress using xz j (De)compress using bzip2 a (De)compress using lzma O Extract to stdout h Follow symlinks m Don't restore mtime exclude File to exclude X File with names to exclude T File with names to include

    错误:exit status 1

    =============

  • 运行一段时间以后无法上线,报mysql错误。

    运行一段时间以后无法上线,报mysql错误。

    2019/01/18 15:58:48 [I] [base.go:353] [{0 127.0.0.1 cd /root/gopubfakegit/release/fakegit/  && rm -f /root/gopubfakegit/release/fakegit/*.tar.gz && rm -rf /root/gopubfakegit/release/fakegit/20190116-114418    2019-01-18 15:58:48.310589532 +0800 CST m=+594667.324144406 2019-01-18 15:58:48.326845324 +0800 CST m=+594667.340399867 <nil> }] 
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [  OK / db.QueryRow /     2.7ms] - [SELECT `id`, `user_id`, `task_id`, `status`, `action`, `command`, `duration`, `memo`, `created_at` FROM `record` WHERE `id` = ? ] - `1268`
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [  OK / db.QueryRow /     2.8ms] - [SELECT `id`, `user_id`, `task_id`, `status`, `action`, `command`, `duration`, `memo`, `created_at` FROM `record` WHERE `id` = ? ] - `1268`
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [  OK /     db.Exec /     5.9ms] - [UPDATE `record` SET `user_id` = ?, `task_id` = ?, `status` = ?, `action` = ?, `command` = ?, `duration` = ?, `memo` = ?, `created_at` = ? WHERE `id` = ?] - `3`, `67`, `1`, `0`, `cd /root/gopubfakegit/release/fakegit/  && rm -f /root/gopubfakegit/release/fakegit/*.tar.gz && rm -rf /root/gopubfakegit/release/fakegit/20190116-114418`, `0`, `[{"Id":0,"Host":"127.0.0.1","Command":"cd /root/gopubfakegit/release/fakegit/  \u0026\u0026 rm -f /root/gopubfakegit/release/fakegit/*.tar.gz \u0026\u0026 rm -rf /root/gopubfakegit/release/fakegit/20190116-114418","LocalFilePath":"","RemoteFilePath":"","Result":"","StartTime":"2019-01-18T15:58:48.310589532+08:00","EndTime":"2019-01-18T15:58:48.326845324+08:00","Error":null,"ErrorInfo":""}]`, `1547798328`, `1268`
    Number of records updated in database: 1
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [  OK /     db.Exec /     4.5ms] - [UPDATE `task` SET `enable_rollback`='0' WHERE`id` not in (67) and  project_id = ? and  `enable_rollback`=1 ] - `14`
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [  OK / db.QueryRow /     1.4ms] - [SELECT `id`, `user_id`, `name`, `level`, `status`, `version`, `repo_url`, `repo_username`, `repo_password`, `repo_mode`, `repo_type`, `deploy_from`, `excludes`, `release_user`, `release_to`, `release_library`, `hosts`, `pre_deploy`, `post_deploy`, `pre_release`, `post_release`, `last_deploy`, `audit`, `keep_version_num`, `created_at`, `updated_at`, `p2p`, `host_group`, `gzip`, `is_group`, `pms_pro_name` FROM `project` WHERE `id` = ? ] - `14`
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [FAIL /     db.Exec /     1.6ms] - [UPDATE `project` SET `user_id` = ?, `name` = ?, `level` = ?, `status` = ?, `version` = ?, `repo_url` = ?, `repo_username` = ?, `repo_password` = ?, `repo_mode` = ?, `repo_type` = ?, `deploy_from` = ?, `excludes` = ?, `release_user` = ?, `release_to` = ?, `release_library` = ?, `hosts` = ?, `pre_deploy` = ?, `post_deploy` = ?, `pre_release` = ?, `post_release` = ?, `last_deploy` = ?, `audit` = ?, `keep_version_num` = ?, `created_at` = ?, `updated_at` = ?, `p2p` = ?, `host_group` = ?, `gzip` = ?, `is_group` = ?, `pms_pro_name` = ? WHERE `id` = ?] - `3`, `g4Test-取消维护状态`, `2`, `1`, `20190118-155846`, `/root/gopubfakegit/fakegit`, ``, ``, `branch`, `git`, `/root/gopubfakegit/clonegit`, ``, `root`, `/root/gopubfakegit/deploy`, `/root/gopubfakegit/release`, `127.0.0.1`, `echo "代码检出前任务:"`, `echo "代码检出后任务::"`, `echo "同步完目标机后任务"`, `echo "更改版本软链接后任务::"
    /opt/soft/node/bin/node -v
    source ~/.bash_profile
    cd /data/wanba_bug/app/gong4-server/tools
    /opt/soft/node/bin/node ./sh.process.js type=maintainend
    `, `echo "版本发布发布完成后执行本地任务:::"`, `0`, `1`, `<nil>`, `<nil>`, `0`, ``, `1`, `0`, ``, `14` - Error 1210: Incorrect arguments to mysqld_stmt_execute
    [ORM]2019/01/18 15:58:48  -[Queries/default] - [  OK /     db.Exec /     5.2ms] - [INSERT INTO `task_err_log` (`task_id`, `err_info`, `create_time`) VALUES (?, ?, ?)] - `67`, `Error 1210: Incorrect arguments to mysqld_stmt_execute`, `2019-01-18 07:58:48.347229896 +0000 +0000`
    

    运行一段时间以后就会出现这个问题。 重启一下就好了。

  • 请问你们使用gopub 发布过golang 程序吗?

    请问你们使用gopub 发布过golang 程序吗?

    你好,请问你们使用gopub 发布过golang 的程序吗?现在我们使用gopub的工程中,遇到的问题是,我们所有的项目都在一个github地址下面,里面包含了多个小的golang 程序,发布的时候,不知道怎么处理?而且你们的程序里面没有golang 程序的编译部分,这个有没有已经写好的推荐脚本了?

  • 部署时报错

    部署时报错

    /data/web/gopub/src/github.com/astaxie/beego/tree.go:144:9: expected operand, found 'range' /data/web/gopub/src/github.com/astaxie/beego/tree.go:149:4: expected '{', found 'if' /data/web/gopub/src/github.com/astaxie/beego/tree.go:203:34: expected ')', found 'IDENT' string /data/web/gopub/src/github.com/astaxie/beego/tree.go:257:10: expected operand, found 'range' /data/web/gopub/src/github.com/astaxie/beego/tree.go:262:5: expected '{', found 'if' /data/web/gopub/src/github.com/astaxie/beego/tree.go:286:30: expected ')', found 'IDENT' string /data/web/gopub/src/github.com/astaxie/beego/tree.go:294:1: expected 1 expression /data/web/gopub/src/github.com/astaxie/beego/tree.go:294:30: expected ')', found 'IDENT' string /data/web/gopub/src/github.com/astaxie/beego/tree.go:295:2: expected ']', found 'if' /data/web/gopub/src/github.com/astaxie/beego/tree.go:295:5: expected ';', found 'IDENT' len /data/web/gopub/src/github.com/astaxie/beego/tree.go:389:45: expected operand, found ']' /data/web/gopub/src/golang.org/x/net/webdav/prop.go:110:40: expected '}', found ':' /data/web/gopub/src/golang.org/x/net/webdav/prop.go:171:2: expected declaration, found 'if' /data/web/gopub/src/golang.org/x/net/webdav/prop.go:182:2: expected declaration, found 'if' /data/web/gopub/src/golang.org/x/net/webdav/prop.go:230:2: expected declaration, found 'if' /data/web/gopub/src/golang.org/x/net/webdav/prop.go:353:3: expected declaration, found 'IDENT' xml /data/web/gopub/src/golang.org/x/net/webdav/prop.go:395:2: expected declaration, found 'IDENT' n

  • docker启动数据库是空的 lc13579443/gopub:latest版本

    docker启动数据库是空的 lc13579443/gopub:latest版本

    1、拉取了版本: lc13579443/gopub:latest

    sudo docker run --name gopub -e MYSQL_HOST=127.0.0.1 -e MYSQL_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=root -e MYSQL_DB=walle -p 8192:8192 --restart always -d lc13579443/gopub:latest

    数据库数据没有初始放进去。

    2、数据库中表不存在或者用户不存在的时候 点击登录按钮一直显示"正在登录中"

  • 使用docker安装完之后执行./control start报错

    使用docker安装完之后执行./control start报错

    ps: unrecognized option: p
    BusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
    
    Usage: ps [-o COL1,COL2=HEADER]
    
    Show list of processes
    
    	-o COL1,COL2=HEADER	Select columns for display
    gopub failed to start.
    
    

    你在src/agent/server.json文件中带有ip,引起上面那个端口占用的问题

  • 启动的时候一直报错,如下

    启动的时候一直报错,如下

    
    ListenAndServe:  listen tcp 0.0.0.0:8192: bind: address already
    1525399664652004292 [Error] Listen failed:listen tcp 10.205.142.27:1902: bind: cannot assign requested address
    1525399664652020021 [Error] Couldn't listen for peers connection: listen tcp 10.205.142.27:1902: bind: cannot assig
    2018/05/04 10:07:44 Starting http server 10.205.142.27:1901
    
    
  • Bump webpack-bundle-analyzer from 2.13.1 to 3.6.0 in /vue-gopub

    Bump webpack-bundle-analyzer from 2.13.1 to 3.6.0 in /vue-gopub

    Bumps webpack-bundle-analyzer from 2.13.1 to 3.6.0.

    Release notes

    Sourced from webpack-bundle-analyzer's releases.

    First test with Lerna monorepo

    th0r/webpack-bundle-analyzer#98

    Changelog

    Sourced from webpack-bundle-analyzer's changelog.

    3.6.0

    3.5.2

    3.5.1

    • Bug Fix
      • Fix regression in support of webpack dev server and webpack --watch (issue #312, fixed in #313 by @​gaokun)

    3.5.0

    • Improvements

    3.4.1

    • Bug Fix
      • Fix regression of requiring an object to be passed to new BundleAnalyzerPlugin() (issue #300, fixed in #302 by @​jerryOnlyZRJ)

    3.4.0

    3.3.2

    • Bug Fix
      • Fix regression with escaping internal assets (#264, fixes #263)

    3.3.1

    • Improvements

      • Use relative links for serving internal assets (#261, fixes #254)
      • Properly escape embedded JS/JSON (#262)
    • Bug Fix

    ... (truncated)
    Commits
    • 9eb7499 v3.6.0
    • 9c582cf Add changelog entry about readability improvement
    • ea074c1 Merge pull request #323 from lemonmade/fix-self-global-object
    • 2116b66 Allow self for globalObject in async chunks
    • f49796f Merge pull request #320 from lorenzos/font-and-tooltip-opacity
    • 84044cd Improved readability of translucent tooltips
    • df49b19 Fixed serif font when Verdana is not available
    • 7fd44c9 v3.5.2
    • c619d51 Merge pull request #317 from bregenspan/fix-checked-bundles-not-updating
    • 2b685ed Update changelog with checkbox fix
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • 增加若干特性:ldap用户认证支持、上线时对比版本差异、项目锁定禁止发布等等

    增加若干特性:ldap用户认证支持、上线时对比版本差异、项目锁定禁止发布等等

    之前使用walle很多,并进行了很多二开,在gopub上同步了之前的功能二开,包含: 1,增加基于ldap进行用户验证: 在ldap上创建用户账号相关,并加入到gopub开头的用户组中,首次在gopub上验证通过并登录时,会自动在gopub用户表中同步创建账号信息(不含密码),具体用户权限依然在gopub上进行 2,增加在上线时查看版本对比的功能 在上线,会显示当前上线版本与上次上线版本的文件差异,上线用户可以对变更的内容进行确认,防止误上线他人修改的文件 3,增加上线项目的锁定功能 主要针对测试环境部署进行,如A用户锁定了该上线项目,其他用户不能再进行上线操作。只有锁定用户或管理员可以进行解锁 4,为上线项目增加了标签属性,不过目前没有具体应用 5,增加了移动目录的上线方式 原系统只支持基于软链接的部署方式,即代码实际部署在release目录,通过软链接定位到wwwroot目录中,但在php开启opcache的情况下,此时需要重启php-fpm。帮增加本方式。 6,增加了基于jumpserver指定服务器分组上线 原系统基于ip列表进行,实际生产环境中,有些团队会使用jumpserver(https://github.com/jumpserver/jumpserver)管理线上服务器。所以增加了基于api获取服务器及对应服务器ip方式,指定部署目标服务器。当jumpserver的指定分组中增加或删除服务器时,代码部署不受影响。 目前jumpserver采用1.5.3版本,服务器分组采用node方式。 好像就这些。。

  • Bump axios from 0.16.2 to 0.19.0 in /vue-gopub

    Bump axios from 0.16.2 to 0.19.0 in /vue-gopub

    Bumps axios from 0.16.2 to 0.19.0.

    Release notes

    Sourced from axios's releases.

    v0.19.0

    Fixes and Functionality:

    • Unzip response body only for statuses != 204 (#1129) - drawski
    • Destroy stream on exceeding maxContentLength (fixes #1098) (#1485) - Gadzhi Gadzhiev
    • Makes Axios error generic to use AxiosResponse (#1738) - Suman Lama
    • Fixing Mocha tests by locking follow-redirects version to 1.5.10 (#1993) - grumblerchester
    • Allow uppercase methods in typings. (#1781) - Ken Powers
    • Fixing .eslintrc without extension (#1789) - Manoel
    • Consistent coding style (#1787) - Ali Servet Donmez
    • Fixing building url with hash mark (#1771) - Anatoly Ryabov
    • This commit fix building url with hash map (fragment identifier) when parameters are present: they must not be added after #, because client cut everything after #
    • Preserve HTTP method when following redirect (#1758) - Rikki Gibson
    • Add getUri signature to TypeScript definition. (#1736) - Alexander Trauzzi
    • Adding isAxiosError flag to errors thrown by axios (#1419) - Ayush Gupta
    • Fix failing SauceLabs tests by updating configuration - Emily Morehouse

    Documentation:

    • Add information about auth parameter to README (#2166) - xlaguna
    • Add DELETE to list of methods that allow data as a config option (#2169) - Daniela Borges Matos de Carvalho
    • Update ECOSYSTEM.md - Add Axios Endpoints (#2176) - Renan
    • Add r2curl in ECOSYSTEM (#2141) - 유용우 / CX
    • Update README.md - Add instructions for installing with yarn (#2036) - Victor Hermes
    • Fixing spacing for README.md (#2066) - Josh McCarty
    • Update README.md. - Change .then to .finally in example code (#2090) - Omar Cai
    • Clarify what values responseType can have in Node (#2121) - Tyler Breisacher
    • docs(ECOSYSTEM): add axios-api-versioning (#2020) - Weffe
    • It seems that responseType: 'blob' doesn't actually work in Node (when I tried using it, response.data was a string, not a Blob, since Node doesn't have Blobs), so this clarifies that this option should only be used in the browser
    • Add issue templates - Emily Morehouse
    • Update README.md. - Add Querystring library note (#1896) - Dmitriy Eroshenko
    • Add react-hooks-axios to Libraries section of ECOSYSTEM.md (#1925) - Cody Chan
    • Clarify in README that default timeout is 0 (no timeout) (#1750) - Ben Standefer

    v0.19.0-beta.1

    NOTE: This is a beta version of this release. There may be functionality that is broken in certain browsers, though we suspect that builds are hanging and not erroring. See https://saucelabs.com/u/axios for the most up-to-date information.

    New Functionality:

    • Add getUri method (#1712)
    • Add support for no_proxy env variable (#1693)
    • Add toJSON to decorated Axios errors to faciliate serialization (#1625)
    • Add second then on axios call (#1623)
    • Typings: allow custom return types
    • Add option to specify character set in responses (with http adapter)

    Fixes:

    ... (truncated)
    Changelog

    Sourced from axios's changelog.

    0.19.0 (May 30, 2019)

    Fixes and Functionality:

    • Unzip response body only for statuses != 204 (#1129) - drawski
    • Destroy stream on exceeding maxContentLength (fixes #1098) (#1485) - Gadzhi Gadzhiev
    • Makes Axios error generic to use AxiosResponse (#1738) - Suman Lama
    • Fixing Mocha tests by locking follow-redirects version to 1.5.10 (#1993) - grumblerchester
    • Allow uppercase methods in typings. (#1781) - Ken Powers
    • Fixing building url with hash mark (#1771) - Anatoly Ryabov
    • This commit fix building url with hash map (fragment identifier) when parameters are present: they must not be added after #, because client cut everything after #
    • Preserve HTTP method when following redirect (#1758) - Rikki Gibson
    • Add getUri signature to TypeScript definition. (#1736) - Alexander Trauzzi
    • Adding isAxiosError flag to errors thrown by axios (#1419) - Ayush Gupta

    Internal:

    • Fixing .eslintrc without extension (#1789) - Manoel
    • Fix failing SauceLabs tests by updating configuration - Emily Morehouse
    • Add issue templates - Emily Morehouse

    Documentation:

    • Consistent coding style in README (#1787) - Ali Servet Donmez
    • Add information about auth parameter to README (#2166) - xlaguna
    • Add DELETE to list of methods that allow data as a config option (#2169) - Daniela Borges Matos de Carvalho
    • Update ECOSYSTEM.md - Add Axios Endpoints (#2176) - Renan
    • Add r2curl in ECOSYSTEM (#2141) - 유용우 / CX
    • Update README.md - Add instructions for installing with yarn (#2036) - Victor Hermes
    • Fixing spacing for README.md (#2066) - Josh McCarty
    • Update README.md. - Change .then to .finally in example code (#2090) - Omar Cai
    • Clarify what values responseType can have in Node (#2121) - Tyler Breisacher
    • docs(ECOSYSTEM): add axios-api-versioning (#2020) - Weffe
    • It seems that responseType: 'blob' doesn't actually work in Node (when I tried using it, response.data was a string, not a Blob, since Node doesn't have Blobs), so this clarifies that this option should only be used in the browser
    • Update README.md. - Add Querystring library note (#1896) - Dmitriy Eroshenko
    • Add react-hooks-axios to Libraries section of ECOSYSTEM.md (#1925) - Cody Chan
    • Clarify in README that default timeout is 0 (no timeout) (#1750) - Ben Standefer

    0.19.0-beta.1 (Aug 9, 2018)

    NOTE: This is a beta version of this release. There may be functionality that is broken in certain browsers, though we suspect that builds are hanging and not erroring. See https://saucelabs.com/u/axios for the most up-to-date information.

    New Functionality:

    • Add getUri method (#1712)
    • Add support for no_proxy env variable (#1693)
    • Add toJSON to decorated Axios errors to faciliate serialization (#1625)
    • Add second then on axios call (#1623)
    ... (truncated)
    Commits
    • 8d0b92b Releasing 0.19.0
    • 3f7451c Update Changelog for release (0.19.0)
    • f28ff93 Add information about auth parameter to README (#2166)
    • 5250e6e Add DELETE to list of methods that allow data as a config option (#2169)
    • 6b0ccd1 Update ECOSYSTEM.md - Add Axios Endpoints (#2176)
    • 299e827 Add r2curl in ECOSYSTEM (#2141)
    • fd0c959 Unzip response body only for statuses != 204 (#1129)
    • 92d2313 Update README.md - Add instructions for installing with yarn (#2036)
    • ddcc2e4 Fixing spacing for README.md (#2066)
    • 48c43d5 Update README.md. - Change .then to .finally in example code (#2090)
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by emilyemorehouse, a new releaser for axios since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Add a caret and a dollar to emailPattern

    Add a caret and a dollar to emailPattern

    Hello, thanks for providing such a good system!

    I found emailPattern has no caret ( ^ ) and no dollar ( $ ) . It means this regular expression allows any character as a prefix or a suffix.

    Could you please accept this modification?

    Thanks!

  • 请问 这个是我版本太高导致的么?node    构建前端 老是不成功

    请问 这个是我版本太高导致的么?node 构建前端 老是不成功

    2 info using [email protected] 3 info using [email protected] 4 verbose run-script [ 'prebuild', 'build', 'postbuild' ] 5 info lifecycle [email protected]~prebuild: [email protected] 6 info lifecycle [email protected]~build: [email protected] 7 verbose lifecycle [email protected]~build: unsafe-perm in lifecycle true 8 verbose lifecycle [email protected]~build: PATH: /usr/local/lib/nodejs/node-v12.14.1-linux-x64/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/opt/gopub/vue-gopub/node_modules/.bin:/usr/local/lib/nodejs/node-v12.14.1-linux-x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/opt/gopub/bin:/root/bin 9 verbose lifecycle [email protected]~build: CWD: /opt/gopub/vue-gopub 10 silly lifecycle [email protected]~build: Args: [ '-c', 'node build/build.js' ] 11 silly lifecycle [email protected]~build: Returned: code: 1 signal: null 12 info lifecycle [email protected]~build: Failed to exec build script 13 verbose stack Error: [email protected] build: node build/build.js 13 verbose stack Exit status 1 13 verbose stack at EventEmitter. (/usr/local/lib/nodejs/node-v12.14.1-linux-x64/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16) 13 verbose stack at EventEmitter.emit (events.js:223:5) 13 verbose stack at ChildProcess. (/usr/local/lib/nodejs/node-v12.14.1-linux-x64/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14) 13 verbose stack at ChildProcess.emit (events.js:223:5) 13 verbose stack at maybeClose (internal/child_process.js:1021:16) 13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) 14 verbose pkgid [email protected] 15 verbose cwd /opt/gopub/vue-gopub 16 verbose Linux 3.10.0-1062.9.1.el7.x86_64 17 verbose argv "/usr/local/lib/nodejs/node-v12.14.1-linux-x64/bin/node" "/usr/local/lib/nodejs/node-v12.14.1-linux-x64/bin/npm" "run" "build" 18 verbose node v12.14.1 19 verbose npm v6.13.4 20 error code ELIFECYCLE 21 error

Bucket-ssh. A fuzzy ssh manager for managing and categorizing ssh connections.
Bucket-ssh. A fuzzy ssh manager for managing and categorizing ssh connections.

Bssh is an ssh bucket for categorizing and automating ssh connections. Also, with parallel command execution and connection checks(pings) over categories (namespaces).

Oct 25, 2022
Go driver for PostgreSQL over SSH. This driver can connect to postgres on a server via SSH using the local ssh-agent, password, or private-key.

pqssh Go driver for PostgreSQL over SSH. This driver can connect to postgres on a server via SSH using the local ssh-agent, password, or private-key.

Nov 6, 2022
🤘 The native golang ssh client to execute your commands over ssh connection. 🚀🚀
🤘 The native golang ssh client to execute your commands over ssh connection. 🚀🚀

Golang SSH Client. Fast and easy golang ssh client module. Goph is a lightweight Go SSH client focusing on simplicity! Installation ❘ Features ❘ Usage

Dec 24, 2022
Golang `net/rpc` over SSH using installed SSH program

Golang net/rpc over SSH using installed SSH program This package implements a helper functions to launch an RPC client and server. It uses the install

Nov 16, 2022
Build awesome Golang desktop apps and beautiful interfaces with Vue.js, React.js, Framework 7, and more...
Build awesome Golang desktop apps and beautiful interfaces with Vue.js, React.js, Framework 7, and more...

Guark Guark allows you to build beautiful user interfaces using modern web technologies such as Vue.js, React.js..., while your app logic handled and

Jan 1, 2023
The best HTTP Static File Server, write with golang+vue
The best HTTP Static File Server, write with golang+vue

gohttpserver Goal: Make the best HTTP File Server. Features: Human-friendly UI, file uploading support, direct QR-code generation for Apple & Android

Dec 30, 2022
Cleanv - Golang SDK for Vue Projects. It is able to structure a clean code/arch pattern
Cleanv - Golang SDK for Vue Projects.  It is able to structure a clean code/arch pattern

Cleanv - Golang SDK for Vue Projects Why? This project is part of my personal portfolio, so, I'll be happy if you could provide me any feedback about

Apr 24, 2022
Golang & vue web serve
Golang & vue web serve

go_web 本项目源自blog 目前主要功能为个人博客服务

Jan 29, 2022
Extended ssh-agent which supports git commit signing over ssh

ssh-agentx ssh-agentx Rationale Requirements Configuration ssh-agentx Configuration ssh-gpg-signer Linux Windows Signing commits after configuration T

Jun 29, 2022
This is a SSH CA that allows you to retrieve a signed SSH certificate by authenticating to Duo.

github-duo-ssh-ca Authenticate to GitHub Enterprise in a secure way by requiring users to go through a Duo flow to get a short-lived SSH certificate t

Jan 7, 2022
Ssh-lxd - A proof of concept for an ssh server that spawns a bash session inside a LXD container

SSH LXD A proof of concept for an ssh server that spawns a bash session inside a

Aug 16, 2022
Gsshrun - Running commands via ssh on the server/hosting (if ssh support) specified in the connection file

Gsshrun - Running commands via ssh on the server/hosting (if ssh support) specified in the connection file

Sep 8, 2022
one simple git ssh server (just for learning git over ssh )

wriet one simple git ssh server use golang write one simple git ssh server how to running starting service docker-compose up -d add authorized_keys i

Mar 5, 2022
Integrated ssh-agent for windows. (pageant compatible. openSSH ssh-agent etc ..)
Integrated ssh-agent for windows. (pageant compatible. openSSH ssh-agent etc ..)

OmniSSHAgent About The chaotic windows ssh-agent has been integrated into one program. Chaos Map of SSH-Agent on Windows There are several different c

Dec 19, 2022
YSHOP-GO基于当前流行技术组合的前后端RBAC管理系统:Go1.15.x+Beego2.x+Jwt+Redis+Mysql8+Vue 的前后端分离系统,权限控制采用 RBAC,支持数据字典与数据权限管理,支持动态路由等

YSHOP-GO 后台管理系统 项目简介 YSHOP-GO基于当前流行技术组合的前后端RBAC管理系统:Go1.15.x+Beego2.x+Jwt+Redis+Mysql8+Vue 的前后端分离系统,权限控制采用 RBAC,支持数据字典与数据权限管理,支持动态路由等 体验地址: https://go

Dec 30, 2022
Generate a modern Web project with Go and Angular, React or Vue in seconds 🚀
Generate a modern Web project with Go and Angular, React or Vue in seconds 🚀

Goxygen Generate a Web project with Go and Angular, React or Vue. Goxygen aims at saving your time while setting up a new project. It creates a skelet

Jan 5, 2023
beego 与 Ant Design Pro Vue 基础权限系统

beego Ant Design Pro Vue RBAC beego 与 Ant Design Pro Vue 基础权限系统 后端: http://beego.me ORM: gorm https://gorm.io/zh_CN/docs/ Ant Design Pro Vue文档: https:

Dec 2, 2022
mogutouERP 是一个前后端分离的微型进存销系统,采用 Gin + Vue 开发
mogutouERP 是一个前后端分离的微型进存销系统,采用 Gin + Vue 开发

mogutouERP 蘑菇头进存销管理系统 mogutouERP 是一个前后端分离的微型进存销系统,采用 Gin + Vue 开发。

Dec 29, 2022
基于 Goland + Gin + Logrus+ OpenCv 4 + WebSocket + YoloV4 + Redis + Vue 3 的直播流(支持RTSP、RTMP、FLV、HLS)在线场景智能识别系统
基于 Goland + Gin + Logrus+ OpenCv 4 + WebSocket + YoloV4 + Redis + Vue 3 的直播流(支持RTSP、RTMP、FLV、HLS)在线场景智能识别系统

基于 Goland + Gin + OpenCv 4 + WebSocket + YoloV4 + Redis + Logrus + Vue 3 + TypeScript 目前市面上AI在Go中的应用和相关使用较少,Go这门语言是我比较喜欢的;另外就是自己在AI部门从事多年该项工作,但是没有接触这块

Nov 29, 2022
快速crud开发框架,甚至于一行代码不用敲;自动根据数据库表结构自动生成crud代码;低代码开发框架;至少减少百分90%工作量;可快速把现有系统转成GfEasy版本;后端使用GoFrame开发;后台前端使用 cool-admin-vue;后台使用自适应布局,手机、PC完美使用。
快速crud开发框架,甚至于一行代码不用敲;自动根据数据库表结构自动生成crud代码;低代码开发框架;至少减少百分90%工作量;可快速把现有系统转成GfEasy版本;后端使用GoFrame开发;后台前端使用 cool-admin-vue;后台使用自适应布局,手机、PC完美使用。

GoFrame: GfEasy GfEasy So Easy 快速crud开发框架,甚至于一行代码不用敲 自动根据数据库表结构自动生成crud代码 低代码开发框架 至少减少百分90%工作量 可快速把现有系统转成GfEasy版本 后端使用GoFrame开发;后台前端使用 cool-admin-vue

Dec 28, 2022