mattsqd / robovalidate
一组Robo命令,用于在本地环境或管道中运行各种验证任务
Requires
- php: >=8.0.17
- consolidation/robo: ^3.0.9 || ^4.0.1
Requires (Dev)
- composer/composer: ^2.5
- squizlabs/php_codesniffer: ^3.6
Suggests
- squizlabs/php_codesniffer: Recommended if wanting to validate coding standards.
This package is auto-updated.
Last update: 2024-09-06 17:26:30 UTC
README
一组Robo命令,用于在本地环境或管道中运行各种验证任务
- 编码标准(
validate:coding-standards
)- 使用PHPCS验证代码。
- Drupal项目无需配置。
- Composer锁定(
validate:composer-lock
)- 确保在执行
composer install
时不会出现此消息
- 确保在执行
警告:锁定文件未与composer.json的最新更改保持同步。您可能正在获取过时的依赖项。运行update来更新它们。
- 提交消息(
validate:commit-messages
)- 使用正则表达式验证提交消息。
- 分支名称(
validate:branch-name
)- 使用正则表达式验证分支名称。
- 注意:此命令有一个可选的单个参数,即分支名称,如果无法自动确定当前分支名称。
- 运行所有上述命令(
validate:all
)
安装
composer require mattsqd/robovalidate
用法
使用vendor/bin/robo
执行Robo任务。
配置
有两种方式来配置命令。
- 在运行命令时传递选项。
- 在你的根目录中创建(或更新)一个robo.yml文件,该文件包含选项。
第二种方式是最简单的,因为一些选项是数组,尝试在运行时传递数组会变得非常丑陋。
所有选项都位于robo.yml中的command.validate.options
命名空间下。
一些命令共享相同的选项,例如project-id。因此,更改它将影响所有命令,除非你将该键移到特定命令部分下。你可以通过'pattern'看到这个例子,它被用于两个命令。
如果你想要使用robo.example.yml中的内容初始化你的robo.yml,请使用以下命令
vendor/bin/robo validate:init-robo-yml
快速入门
快速入门假设
- 这是一个使用Drupal和DrupalPractice编码标准的Drupal项目。
- 你希望提交消息类似于:'ABC-1234: A short message',并且你正在将它们合并到origin/develop。
- 你希望分支名称类似于:main、develop、hotfix/3.3.1、release/3.3.0和feature/ABC-123-a-short-message。
- 你的composer.lock位于根目录中,而composer位于vendor/bin/composer。
这可以通过在你的项目根目录中创建以下内容的robo.yml
来配置
command: validate: options: project-id: ABC
然后运行vendor/bin/robo validate:all
如果上述任何一项不适用,你可以
- 调用单独的命令而不是
validate:all
,或者 - 按照robo.example.yml中的方式配置你的robo.yml。
请参阅robo.example.yml以获取显式配置的默认值的示例。
对于每个选项,你只需覆盖你想要更改的选项即可,不需要复制整个文件,尽管你可以。
在运行validate:init-robo-yml后配置robo.yml
项目ID
首先选择是否使用项目ID。项目ID用于验证提交信息和分支名称。如果您想使用项目ID,可以自行决定。项目ID是一个很好的参考,可以确保您提交到正确的项目,如果使用BitBucket,它也很方便,因为问题中包含项目ID。如果您不想使用项目ID,请从robo.yml中删除{$project_id}
。这个项目的robo.yml不使用项目ID,您可以作为示例使用。
分支名称
分支命名方案通常在不同项目间会有所不同,所以请确保您可能使用的所有分支名称在valid-branch-names
中都有相应的条目。例如
- 如果您使用
dev
而不是develop
,您可能需要更改条目。 - 如果您有一个
stage
分支,您可能需要添加另一个explicit|stage
条目。 - 如果您不希望使用
pattern
和custom-help
属性中使用的正则表达式匹配,只需从valid-branch-names
中删除custom|
条目即可。
提交信息
提交信息默认为BitBucket风格。GitHub使用一组特殊的单词来链接到问题。您可以查看这个项目的robo.yml来了解如何强制执行这些关键词。如果您使用项目ID,您需要将其添加回模式和帮助文本。
在持续集成中运行
该项目有一个可用的GitHub Action,如果您也使用GitHub Actions,应该可以将其复制到您的项目中。您可以在https://github.com/mattsqd/robovalidate/blob/1.x/.github/workflows/run-validation.yml找到它。
需要注意的是,vendor/bin/robo validate:commit-messages
需要一个目标分支,以便只检查当前分支之外的提交。默认情况下,这设置为develop
。如果开发人员合并到的分支不是develop
,您可以更改该值或传递与同一GitHub动作相同的值,传入仅在拉取请求事件期间可用的目标分支。这就是为什么有两个单独的步骤,而不调用vendor/bin/robo validate:all
。请注意,当前分支也被传递,因为在GitHub的PR中,它不会干净地检出当前分支。相反,您将留在一个新的哈希值上,这是当前分支合并到目标分支的合并提交。因此,所有提交都将被处理,最后一个提交可能不会通过验证,因为GitHub创建了一个提交。