norsys / rothenberg
一款允许开发者轻松创建或维护Symfony应用或bundle的工具,无需在工作站上安装任何东西
This package is auto-updated.
Last update: 2024-08-28 09:03:51 UTC
README
Rothenberg 允许开发者轻松创建或维护Symfony应用或bundle,无需在工作站(Mac或PC,目前不支持Windows)上安装任何东西。
它不是一个独立的项目,因此必须在另一个项目的上下文中使用。
TL;DR
您必须拥有UNIX操作系统、docker、GNU 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配置
Rothenberg 在path/to/project目录中创建了一个包含预配置服务的docker-compose.yml文件和一个空的docker-compose.override.yml文件(如果该文件不存在)。
如果您想覆盖一些服务的配置,请使用docker-compose.override.yml。
Docker镜像管理
Rothenberg 通过make start或make restart(见下文了解更多关于这些命令的信息)拉取每个docker镜像的最新版本。
这些镜像包括
nginx;php-fpm;php-cli;composer;node.
您可以通过.rothenberg.config文件禁用此功能。
CLI和FPM的默认PHP配置
Rothenberg 分别在path/to/project/env/php/cli和path/to/project/env/php/fpm中提供了CLI和FPM的php.ini文件。
隐藏docker和docker-compose的帮助程序
Rothenberg 在path/to/project/bin中提供了几个帮助程序,以隐藏docker和docker-compose的复杂性。
因此,即使在后台使用docker的情况下,也可以像传统方式一样运行path/to/project/bin中的所有脚本。
例如,要更新PHP依赖项,只需执行bin/composer update。
Atoum配置
Rothenberg 在path/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 变量 ENV 和 SYMFONY_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
如果项目在安装期间没有 Makefile,Rothenberg 将为其提供一个默认的 Makefile。
此外,它在 path/to/project/env 中提供了一个带有一些有趣目标的 Makefile(请参见下文)。
此 Makefile 已经包含在 Rothenberg 提供的默认 Makefile 中。
如果项目在 Rothenberg 安装之前已经有一个 Makefile,则将其添加到其中以使用 Rothenberg 目标。
项目管理
Rothenberg 允许您使用 make 来管理项目,以下是一些 make 目标:
install本地安装docker-compose、php-(?:cli|fpm)、composer、node、npm、nginx并进行配置;reinstall重新启动项目;uninstall卸载项目;start启动网站所需的全部服务(nginx、php-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 配置
Rothenberg 在 path/to/project 目录中安装了具有默认值的文件 .gitignore 和 .gitattribute。
此外,它还安装了一个 pre-commit hook,通过 make check-style 检查编码约定。
资源监视器
Rothenberg 通过 bin/watchodg 提供了一个资源监视器,它通过 make start 或 make restart 自动启动。
安装
对于应用程序
您可以在新项目或现有项目中安装 Rothenberg。
例如,如果您的项目位于 path/to/project 的应用程序
cd path/to/project;- 执行
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依赖并启动服务。
对于包
cd path/to/project;- 执行
(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服务或网络。
应用和包的常见步骤
安装完成后,您可以在您的项目中添加和提交所有新文件(是的,真的,在项目中提交它们)
git add .;git commit -m "<WHATEVER YOU WANT>";git push.
项目的配置
docker和docker-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.php是composer通过composer安装vendor的触发器;uninstall/var是用于清理path/to/project/var目录的目标;
此外,目标uninstall/var/mysql由模式规则uninstall/%处理,该规则删除由通配符%定义的任何文件或目录。
如果您想为Rothenberg定义的所有目标添加先决条件,只需执行make rothenberg-targets。
有关make的语法和功能的更多信息,请参阅其官方文档。
PHP的配置
您可以在CLI和FPM上下文中自定义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.xml和make 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,只需执行
make rothenberg/update;git add .;git commit -m "<WHATEVER YOU WANT>";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加入。
- 下载一个IRC客户端;
- 使用您的个人信息配置它;
- 使用它连接到
freenode网络; - 执行
/j ##rothenberg; - 说
Hello!。
贡献
关于工作流程
我们使用拉取请求来引入新功能和错误修复。
请尽量在提交信息中明确
- 解释为什么进行更改;
- 解释技术实现(您可以提供任何相关票据、文章或其他资源的链接)。
您可以使用以下模板
# 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目录的内容。
语言和工具
- docker ;
- docker-compose ;
- atoum ;
- make ;
- Symfony.
历史
Rothenberg的原始版本诞生于法国里昂的Norsys的PHP业务单元。
它是用爱制作,以工业化为基于Symfony的PHP开发。
这个项目取得了成功,因为我们现在可以在几分钟内启动一个项目或集成一个团队,开始开发一些功能或修复一些错误。
因此,我们决定开源它,因为我们认为这种工具必须与PHP社区共享。
为什么是Rothenberg?
David Rothenberg是一位书籍作者和歌曲作曲家,他曾经用鲸鱼🐳制作音乐。
该项目使用docker,其标志是一只🐳,composer和docker-compose来设置Symfony环境。
因此,Rothenberg似乎是一个不错的选择作为名称;)。