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
似乎是一个不错的选择作为名称;)。