norsys/rothenberg

一款允许开发者轻松创建或维护Symfony应用或bundle的工具,无需在工作站上安装任何东西

安装次数: 9,172

依赖者: 3

建议者: 0

安全性: 0

星级: 24

关注者: 14

分支: 14

开放问题: 6

类型:项目

1.1.0 2018-12-13 16:23 UTC

README

Rothenberg 允许开发者轻松创建或维护Symfony应用或bundle,无需在工作站(Mac或PC,目前不支持Windows)上安装任何东西。
它不是一个独立的项目,因此必须在另一个项目的上下文中使用。

TL;DR

您必须拥有UNIX操作系统、dockerGNU make以及互联网访问权限才能使用Rothenberg

要开发或维护Symfony应用,请在终端中执行以下命令

wget -O - https://github.com/norsys/rothenberg/raw/master/install.sh | sh

或要在Symfony bundle的上下文中使用它,请执行以下操作

(export TARGET=bundle; wget -O - https://github.com/norsys/rothenberg/raw/master/install.sh | sh)

Rothenberg 在安装过程中会使用docker镜像。为确保使用最新版本的镜像,请在上述命令之前添加docker pull norsys/rothenberg

docker pull norsys/rothenberg && wget -O - https://github.com/norsys/rothenberg/raw/master/install.sh | sh

但是…在执行这些命令之一之前,也许您应该阅读以下信息!

功能

以下假设在path/to/project目录中执行了make install命令。

Docker和docker-compose配置

Rothenbergpath/to/project目录中创建了一个包含预配置服务的docker-compose.yml文件和一个空的docker-compose.override.yml文件(如果该文件不存在)。
如果您想覆盖一些服务的配置,请使用docker-compose.override.yml

Docker镜像管理

Rothenberg 通过make startmake restart(见下文了解更多关于这些命令的信息)拉取每个docker镜像的最新版本。

这些镜像包括

  • nginx ;
  • php-fpm ;
  • php-cli ;
  • composer ;
  • node .

您可以通过.rothenberg.config文件禁用此功能。

CLI和FPM的默认PHP配置

Rothenberg 分别在path/to/project/env/php/clipath/to/project/env/php/fpm中提供了CLI和FPM的php.ini文件。

隐藏dockerdocker-compose的帮助程序

Rothenbergpath/to/project/bin中提供了几个帮助程序,以隐藏dockerdocker-compose的复杂性。
因此,即使在后台使用docker的情况下,也可以像传统方式一样运行path/to/project/bin中的所有脚本。
例如,要更新PHP依赖项,只需执行bin/composer update

Atoum配置

Rothenbergpath/to/project中安装了path/to/project/.atoum.php文件、一个atoum运行程序和一个基础测试类在path/to/project/tests/units

自动nginx虚拟主机管理

Rothenberg 通过make变量VIRTUAL_HOST提供自动nginx虚拟主机管理。
要定义项目的虚拟主机,请在包含./env/Makefile之前定义其值(有关更多信息,请参阅下文)

VIRTUAL_HOST := foo.bar

include env/Makefile

网络

Rothenberg 允许您在多个项目或任何其他服务之间共享nginx-proxy docker服务。
为此目的,它创建了一个名为make的ROTHENBERG_NETWORK变量值的网络,其默认值为rothenberg
如果您想覆盖其值,在项目的 Makefile 中,只需在包含 env/Makefile 之前添加 ROTHENBERG_NETWORK := yourNetworkName 即可(有关更多信息,请参见下文)。

环境管理

Rothenberg 允许您使用 make 变量 ENVSYMFONY_ENV 在多个环境中安装项目。
ENV 的默认值是 dev,而 SYMFONY_ENV 的默认值是 ENV
因此,要使用 dev Symfony 环境在 prod 环境中安装项目,只需这样做:

# make install ENV=prod SYMFONY_ENV=dev

默认情况下,Symfony 调试模式已启用,但您可以使用 make 变量 SYMFONY_DEBUG 来禁用它。

# make install SYMFONY_DEBUG=false

私有 PHP 包管理

Rothenberg 可以处理通过 composer 访问一些私有 PHP 包所需的 SSH 密钥。
默认情况下,它将使用 $(HOME)/.ssh/id_rsa 密钥,但您可以使用 make <target> SSH_KEY=/path/to/your/ssh/key 来覆盖它。您的密钥永远不会被 Rothenberg 复制。

默认 Makefile

如果项目在安装期间没有 MakefileRothenberg 将为其提供一个默认的 Makefile
此外,它在 path/to/project/env 中提供了一个带有一些有趣目标的 Makefile(请参见下文)。
Makefile 已经包含在 Rothenberg 提供的默认 Makefile 中。
如果项目在 Rothenberg 安装之前已经有一个 Makefile,则将其添加到其中以使用 Rothenberg 目标。

项目管理

Rothenberg 允许您使用 make 来管理项目,以下是一些 make 目标:

  • install 本地安装 docker-composephp-(?:cli|fpm)composernodenpmnginx 并进行配置;
  • reinstall 重新启动项目;
  • uninstall 卸载项目;
  • start 启动网站所需的全部服务(nginxphp-fpm...);
  • stop 停止项目所需的全部服务;
  • restart 重新启动全部服务;
  • status 显示每个服务的状态;
  • security 检查 PHP 依赖项的安全性;
  • check-style-php 根据 env/php/check-style.xml 检查 PHP 编码约定;
  • fix-style-php 根据 env/php/check-style.xml 修复 PHP 编码约定;
  • unit-tests 运行所有单元测试;
  • rothenberg/update 更新 Rothenberg(请参见下文的“更新”部分);
  • help 显示有关每个可用的命令的简要说明。

其中一些目标仅在您使用 rothenberg 开发应用程序时才可用。
使用 make help 了解根据您的项目类型可用的目标。

Git 配置

Rothenbergpath/to/project 目录中安装了具有默认值的文件 .gitignore.gitattribute
此外,它还安装了一个 pre-commit hook,通过 make check-style 检查编码约定。

资源监视器

Rothenberg 通过 bin/watchodg 提供了一个资源监视器,它通过 make startmake restart 自动启动。

安装

对于应用程序

您可以在新项目或现有项目中安装 Rothenberg
例如,如果您的项目位于 path/to/project 的应用程序

  1. cd path/to/project ;
  2. 执行 wget -O - https://github.com/norsys/rothenberg/raw/master/install.sh | sh

安装完成后,如果已经有一个 ./Makefile,只需将其中的 include env/Makefile 添加到其中即可使用 Rothenberg 的目标。
您也可以在包含 env/Makefile 之前定义 VIRTUAL_HOST 变量(请参见上文了解更多信息)。
此外,您可以通过编辑./docker-compose.override.yml来添加特定的docker服务或网络。
最后,执行make start来下载PHP依赖并启动服务。

对于包

  1. cd path/to/project ;
  2. 执行(export TARGET=bundle; wget -O - https://github.com/norsys/rothenberg/raw/master/install.sh | sh)

安装完成后,如果已经有一个 ./Makefile,只需将其中的 include env/Makefile 添加到其中即可使用 Rothenberg 的目标。
此外,您可以通过编辑./docker-compose.override.yml来添加特定的docker服务或网络。

应用和包的常见步骤

安装完成后,您可以在您的项目中添加和提交所有新文件(是的,真的,在项目中提交它们)

  1. git add . ;
  2. git commit -m "<WHATEVER YOU WANT>" ;
  3. git push.

项目的配置

dockerdocker-compose的配置

如果您的项目需要一些额外的docker服务,请在./docker-compose.override.yml中定义它们。
例如,要添加mysql,编辑./docker-compose.override.yml并在services部分添加以下内容

mysql:
	image: mysql:5.6.31
	volumes:
		- ./var/mysql:/var/lib/mysql

如果您想将mysql服务链接到php-fpm,在services部分添加以下内容

php-fpm:
	links:
		- mysql

如果您想了解Rothenberg定义的所有服务,请执行make rothenberg-docker-services
有关./docker-compose.override.yml的更多信息,请参阅其官方文档docker-compose文件参考

make的配置

您可以添加由Rothenberg定义的目标的先决条件。
例如,如果您想通过make创建var/mysql目录,请在./Makefile中在包含./env/Makefile之后添加

vendor/autoload.php: | var/mysql

uninstall/var: uninstall/var/mysql

var/mysql:
        $(MKDIR) $@

此示例中定义了一些特殊的Rothenberg目标

  • vendor/autoload.phpcomposer通过composer安装vendor的触发器;
  • uninstall/var是用于清理path/to/project/var目录的目标;

此外,目标uninstall/var/mysql由模式规则uninstall/%处理,该规则删除由通配符%定义的任何文件或目录。

如果您想为Rothenberg定义的所有目标添加先决条件,只需执行make rothenberg-targets
有关make的语法和功能的更多信息,请参阅其官方文档

PHP的配置

您可以在CLIFPM上下文中自定义PHP的配置。
要为此上下文执行,请编辑path/to/project/env/php/cli/php.ini(或为FPM编辑path/to/project/env/php/fpm/php.ini),然后执行make restart。有关PHP配置的更多信息,请参阅其官方文档

检查样式

默认情况下,Rothenberg通过path/to/project/env/check-style.xmlmake check-style提供PHP样式检查,但您可以为其他语言添加样式检查。例如,要使用eslint添加JavaScript的样式检查,请在path/to/project/Makefile中添加以下内容

check-style: check-style-js

check-style-js: | bin/node ## Check coding conventions for JavaScript.
	bin/node eslint -c .eslintrc --ignore-path .eslintignore ./src

更新

要在一个项目中更新Rothenberg,只需执行

  1. make rothenberg/update ;
  2. git add . ;
  3. git commit -m "<WHATEVER YOU WANT>" ;
  4. git push.

休斯顿?我们遇到问题了!

首先,不要慌张。如果您正在使用Fedora并且make install命令出现问题,请使用make install ENV=dev代替。然后执行docker system prune -f以清理Docker环境,并尝试重现问题。
如果问题消失了,感谢甘道夫,并享受吧!
但如果问题始终存在,请打开一个工单帮助我们改进rothenberg
如果您打开工单,请精确描述您的问题,并尽可能提供您的环境信息

  • 操作系统;
  • docker版本,执行docker --version以获取它;
  • docker-compose版本,执行docker-compose --version以获取它;
  • make version,执行make --version以获取它;
  • 提供docker ps -a的输出;
  • 提供docker network ls的输出;

此外,如果在安装过程中遇到问题,请使用以下命令重新执行:(export WITH_DEBUG=yes; wget -O - https://github.com/norsys/rothenberg/raw/master/install.sh | sh),并将输出添加到您的工单中。
如果在执行make命令时遇到问题,请使用以下命令重新执行:make <YOUR TARGET HERE> WITH_DEBUG=yes,并将输出添加到您的工单中。
最后,您可以在IRC网络freenode上的频道##rothenberg加入。

  1. 下载一个IRC客户端;
  2. 使用您的个人信息配置它;
  3. 使用它连接到freenode网络
  4. 执行/j ##rothenberg
  5. Hello!

贡献

关于工作流程

我们使用拉取请求来引入新功能和错误修复。
请尽量在提交信息中明确

  1. 解释为什么进行更改;
  2. 解释技术实现(您可以提供任何相关票据、文章或其他资源的链接)。

您可以使用以下模板

# If applied, this commit will...

# Explain why this change is being made

# Provide links to any relevant tickets, articles or other resources

要使用它,只需将其放入一个文本文件中(例如,您的家目录)并将其定义为模板

# git config --global commit.template ~/.git_commit_template.txt

关于测试

有一些make目标用于测试Rothenberg,特别是安装和更新包和应用程序。
要运行它们,只需执行make tests
请务必在实现新功能或修复错误之前更新测试。
要更新测试,只需更新references目录的内容。

语言和工具

历史

Rothenberg的原始版本诞生于法国里昂的Norsys的PHP业务单元。
它是用爱制作,以工业化为基于Symfony的PHP开发。
这个项目取得了成功,因为我们现在可以在几分钟内启动一个项目或集成一个团队,开始开发一些功能或修复一些错误。
因此,我们决定开源它,因为我们认为这种工具必须与PHP社区共享。

为什么是Rothenberg

David Rothenberg是一位书籍作者和歌曲作曲家,他曾经用鲸鱼🐳制作音乐。
该项目使用docker,其标志是一只🐳,composerdocker-compose来设置Symfony环境。
因此,Rothenberg似乎是一个不错的选择作为名称;)。