devshop / yaml-tasks
一个插件,可以从YML文件中运行命令并将其传递给GitHub提交状态API。
Requires
- composer-plugin-api: ^1.0 || ^2.0
- ext-json: *
- consolidation/robo: ^2
- devshop/power-process: @dev
- guzzlehttp/guzzle: ^6
- guzzlehttp/psr7: ^1.9
- http-interop/http-factory-guzzle: ^1.2
- knplabs/github-api: ^3.9||^1.0
- php-http/guzzle6-adapter: 2.x-dev
- teqneers/php-stream-wrapper-for-git: ^2.0
Requires (Dev)
- 2.x-dev
- 1.x-dev
- 1.8.x-dev
- 1.8.0-beta3
- 1.8.0-beta2
- 1.8.0-beta1
- 1.8.0-alpha1
- 1.7.x-dev
- 1.7.0-alpha4
- 1.7.0-alpha3
- 1.7.0-alpha2
- 1.7.0-alpha1
- dev-component/yaml-tasks/env-fixes / 1.6.x-dev
- 1.6.0-alpha4
- 1.6.0-alpha3
- 1.6.0-alpha2
- 1.6.0-alpha1
- dev-bug/local/docker-command
- dev-bug/bitbucket-builds
- dev-bug/bitbucket/integration
- dev-bug/build-fast
- dev-bug/composer-broke
- dev-bug/composer-install-fails-preserve-paths
- dev-bug/deploy
- dev-bug/deploy-apis
- dev-bug/destroyed
- dev-bug/docker-logs-artifacts
- dev-bug/docker/actions
- dev-bug/docker/hub
- dev-bug/everything
- dev-bug/failing-again
- dev-bug/fucked-containers
- dev-bug/full-stack-stuff
- dev-bug/github/actions
- dev-bug/last-passing-commit
- dev-bug/little-things
- dev-bug/no-drush
- dev-bug/provision-files
- dev-bug/queues
- dev-bug/remote-hosts
- dev-bug/reset
- dev-bug/sync
- dev-bug/tasks
- dev-bug/ubuntu-scripts
- dev-bug/unpreserved-paths
- dev-bug/updated-containers
- dev-bug/upgrade
- dev-bug/verify
- dev-bug/verify-fail-after-install
- dev-bugs/beta-blockers
- dev-bugs/contrib
- dev-bugs/various
- dev-component/devshop-behat-extension
- dev-dev/github/fixes
- dev-dev/stuff
- dev-feature/ansible-tweaks
- dev-feature/ansible/faster
- dev-feature/bitbucket-fixes
- dev-feature/commands
- dev-feature/development/lando
- dev-feature/devshop-control-in-root
- dev-feature/devshop-platform
- dev-feature/drupal-10
- dev-feature/hosting/default_hosting_settings
- dev-feature/hosting_docker
- dev-feature/linuxserver
- dev-feature/megamerge
- dev-feature/minor-ansible-improvements
- dev-feature/no-platforms
- dev-feature/php-81-default
- dev-feature/php-intl
- dev-feature/php/8.1-default
- dev-feature/platform-user
- dev-feature/reinstall
- dev-feature/release-docs
- dev-feature/remote-host-container
- dev-feature/site-audit
- dev-feature/ubuntu22
- dev-release-1.8.0-beta1
- dev-release-1.8.0-beta2
- dev-tests/docker/from-devshop-server
- dev-tests/failing-install
- dev-updates/2023-10
- dev-bug/github/settings-ui
- dev-bug/hosting-queue-runner-commands
- dev-feature/php/8.1
- dev-bug/ansible/detect-site
- dev-bug/docker/no-buildtime-tag
- dev-dev/install/platforms
- dev-feature/composer/git-traits
- dev-feature/docker/hub-publish
- dev-ops/ansible/default-project-vars
- dev-php81
- dev-bug/docker/build-again
- dev-bug/docker/removed-too-much
- dev-bug/scripts/fix-path
- dev-bug/sites/git-reset
- dev-feature/docker/build-run
- dev-feature/os/ubuntu20
- dev-feature/os/ubuntu2004
- dev-feature/php-8
- dev-feature/php/8
- dev-feature/php/8.0
- dev-feature/robo/cleanup
- dev-feature/docker/fix-it-all
- dev-feature/components/php-8
- dev-feature/php80
- dev-bug/composer-common-installable
- dev-bug/docker-compose-up
- dev-bug/pr655/tests-failing
- dev-bug/tests-and-local
- dev-feature/php-versions
- dev-feature/shape-up
- dev-feature/ubuntu20
- dev-ops/ansible/update
- dev-release-1.7.0
- dev-testing/php74
- dev-bug/git-split/composer-plugin-api-version
- dev-bug/ch586/main-branch-tests
- dev-bug/ch587/install-sh-forks
- dev-bug/components-ci-fail
- dev-bug/composer-ansible-fail
- dev-bug/composer-fail
- dev-bug/gh385/deploy
- dev-bug/gh656/protect-site
- dev-bug/hosting-queue-stop
- dev-bug/install-builder
- dev-dependabot/add-v2-config-file
- dev-dev/ux/task-site-urls
- dev-feature/ch475/better-install-sh
- dev-feature/ch584/better-dx
- dev-feature/ch86/deploy-component
- dev-feature/git-remote-monitor
- dev-pr/655
- dev-tests/control/pseudo-repo
- dev-feature/gh644/devshop-control-codebase
- dev-bug/chXYZ/yaml-tasks-bugs
- dev-bug/ch112/release-fixes
- dev-bug/ch118/uid-reset
- dev-bug/ch177/detect-hostname
- dev-bug/ch460/bad-1.x-builds
- dev-bug/ch460/scheduled-build-branch
- dev-bug/ch472/composer-devshop-control
- dev-bug/ch477/composer-tests
- dev-bug/ch477/lost-control
- dev-bug/ch479/simplify-ansible-inventory-generation
- dev-bug/ch504/1x-ci-fail
- dev-bug/ch505/ansible-role-vars
- dev-bug/gh642/disabled-sites
- dev-component/devmaster/task-line-numbers
- dev-dev/environment/classes
- dev-dev/support/fixes
- dev-feature/ch115/hugo-site
- dev-feature/ch256/devshop-developers
- dev-feature/ch534/github-actions-checkout
- dev-feature/gh644/path-devmaster-repo
- dev-bug/ch185/composer-2
- dev-bug/ch118/provision-release
- dev-bug/ch118/test-fails
- dev-bug/ch122/test-devshop-control
- dev-bug/ch185/composer-1
- dev-dev/ux/tasks
- dev-feature/ch121/links-to-domains
- dev-feature/ch139/ansible-cloud
- dev-feature/ch139/repos
- dev-ux/create/redirect
- dev-component/composer/devmaster
- dev-integration
- dev-bug/ch101/devshop-test-volumes
- dev-component/composer/deploy
- dev-feature/ch81/composer-devshop
- dev-feature/ch86/deploy
- dev-feature/ch87/rapid-tests
- dev-feature/ch87/rapid-tests-2
- dev-feature/ch89/core-values
- dev-feature/ch90/readme
- dev-ops/docker/dockerfiles
- dev-bug/ch17/test-assets-folder
- dev-bug/ch20/ansible-lint
- dev-bug/ch35/tests-passing
- dev-bug/ch36/little-bugs
- dev-components
- dev-feature/ch37/dev-environment
- dev-feature/test-composer-template
- dev-ci/install/devshop-tech
- dev-ci/makefiles/ci-makefile
- dev-component/composer/set-path
- dev-component/docs
- dev-composer/node/suggests
- dev-dev/devshop/docker-tools
- dev-install/get.devshop.tech
- dev-install/install-sh/ansible-pip
- dev-ops/os/centos8
- dev-pull/589
- dev-ci/github/actions-branches
- dev-ci/github/actions-fixes
- dev-component/github-api-cli/ssl-ignore
- dev-dependabot/composer/composer/composer-1.10.4
- dev-dependabot/composer/composer/composer-1.10.5
- dev-develop
- dev-component/common
- dev-component/github-api-cli/deployments
- dev-component/github-cli
- dev-component/yaml-tasks/output-options
- dev-dependabot/composer/drush/drush-10.2.2
- dev-development/drupalvm
- dev-ops/docker/fast-container
- dev-component/cli/remove-asm
- dev-component/composer/github-api
- dev-dependabot/composer/drush/drush-9.0.0-alpha1
- dev-component/yaml-tasks/bin-path
- dev-component/power-process/must-run-bug
- dev-dependabot/composer/drush/drush-9.4.0
- dev-infra/components/monorepo-testing
- dev-component/composer/power-process
- dev-component/composer/yaml-tasks
- dev-devshop-2020
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,以显示在拉取请求上。
输出以易于阅读的方式呈现,如果单个进程失败,则返回正确的退出代码。
开始使用
-
将YamlTasks添加到您的项目中。
cd my-composer-project composer require devshop/yaml-tasks
-
创建一个类似以下的
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
-
运行
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
-
使用
--github-token
命令行选项。不要在CI中使用此选项,否则您可能会在日志中暴露您的GitHub令牌。 -
设置GITHUB_TOKEN环境变量。这在Docker中很简单,但如果您的任务在不同的环境中运行,可能会是一个挑战。
-
建议:在您的仓库或用户的家目录中创建一个
.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
输出将类似于以下内容
最后,您将得到如下这样的美好总结
Yaml-Tasks可执行文件
现在有一个“bin”目录用于yaml-tasks,允许命令独立运行。
如果您需要devshop/yaml-tasks
,您将在bin-dir
中看到一个指向yaml-tasks
的符号链接。