devshop/yaml-tasks

一个插件,可以从YML文件中运行命令并将其传递给GitHub提交状态API。

安装次数: 4,981

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

开放问题: 1

类型:composer-plugin

1.8.0-beta3 2023-02-10 01:58 UTC

This package is auto-updated.

Last update: 2024-09-04 12:07:24 UTC


README

之前名为 Yaml Tests

Yaml Tasks是一个简单的composer插件,它使得使用YML定义和运行一组命令变得尽可能简单。

它提供了一个composer命令和一个可执行脚本,该脚本简单地读取YML文件并逐行运行每个命令。

此外,它还与GitHub的提交状态API集成。如果指定了GITHUB_TOKEN,则每个命令的状态将发布到GitHub.com,以显示在拉取请求上。

输出以易于阅读的方式呈现,如果单个进程失败,则返回正确的退出代码。

开始使用

  1. 将YamlTasks添加到您的项目中。

     cd my-composer-project
     composer require devshop/yaml-tasks
    
  2. 创建一个类似以下的tests.yml文件

     myproject/php/lint: find src -name '*.php' -print0 | xargs -0 -n1 php -l
     myproject/php/cs: 
       description: CodeSniffer
       command: bin/phpcs --standard=PSR2 -n  --colors
     myproject/debug/environment: |
       env
    
  3. 运行yaml-tasks composer命令或yaml-tasks bin脚本

     composer yaml-tasks
     bin/yaml-tasks
    

    或者

     composer y
    

全局安装

composer global require devshop/yaml-tasks

为了确认命令已安装,请求帮助

composer yaml-tests --help

或者运行bin/yaml-tasks命令

bin/yaml-tasks

GitHub集成

如果您向YamlTasks传递GitHub令牌,它将发送测试结果作为“提交状态”指示器。

有三种方法将GitHub令牌传递给YamlTasks

  1. 使用--github-token命令行选项。不要在CI中使用此选项,否则您可能会在日志中暴露您的GitHub令牌。

  2. 设置GITHUB_TOKEN环境变量。这在Docker中很简单,但如果您的任务在不同的环境中运行,可能会是一个挑战。

  3. 建议:在您的仓库或用户的家目录中创建一个.env文件

    GITHUB_TOKEN=abcdefg
    

    此目录中有一个.env.example文件,您可以使用它作为示例。

编写任务

创建tasks.yml文件

默认情况下,composer yaml-tasks命令在项目根目录中查找tasks.yml文件。您也可以使用--tasks-file选项传递路径。

tasks.yml文件被读取为一个简单的命令集合。键可以是任何字符串,只要它在测试套件中是唯一的。

test/dir: pwd
test/environment: env

您还可以在列表中包含命令

lint:
  - find src -name '*.php' -print0 | xargs -0 -n1 php -l
  - find web/modules/custom -name '*.php' -print0 | xargs -0 -n1 php -l
  - find tasks/src -name '*.php' -print0 | xargs -0 -n1 php -l

您还可以为每个测试包含描述,例如

debug: 
  command: env
  description: Current Environment

tasks.yml中的命令

Yaml Tasks的工作方式类似于Composer Scripts:如果您的项目在composer.json中设置了config.bin-dir,那么当运行脚本或其他命令时,Composer会自动将该目录添加到PATH中。

例如,您可以在composer scripts或tasks.yml中包含PHPUnit并调用它,而无需指定完整路径。

composer.json:

{
    "config": {
        "bin-dir": "bin/"
    },
    "require": {
        "devshop/yaml-tasks": "^1.5",
        "phpunit/phpunit": "^8.1"
    },
    "scripts": {
        "test": [
            "which phpunit",
            "phpunit --version"
        ]
    }
}

composer.json中具有scripts.test部分会创建一个名为composer test的composer命令。

tasks.yml:

test/debug: 
  - which phpunit
  - phpunit --version

如果您只想维护一组脚本,您可以在tasks.yml中引用composer scripts。

tasks.yml:

test/debug: composer test 

运行任务

一旦tasks.yml文件就位,并且composer yaml-tasks命令可用,您就可以触发测试运行。

干运行与正常运行

此插件还设计为将任务作为“提交状态”传递到GitHub上。这使得我们可以将结果标记到特定的提交,成功或失败。

如果未设置环境变量GITHUB_TOKEN或命令行选项--github-token,则将强制使用--dry-run选项。

如果您设置了令牌但不想将测试结果发布到GitHub,请使用--dry-run选项。

运行composer yaml-tasks,或者,就像所有composer命令一样,您可以使用快捷方式如compose y

composer yaml-tasks

输出将类似于以下内容

Test Run

最后,您将得到如下这样的美好总结

Test Run

Yaml-Tasks可执行文件

现在有一个“bin”目录用于yaml-tasks,允许命令独立运行。

如果您需要devshop/yaml-tasks,您将在bin-dir中看到一个指向yaml-tasks的符号链接。