droath/project-x

管理项目开发工作流程。


README

Build Status

Project-X旨在缩短开发人员设置本地开发实例所需的时间。它通过自动化大多数设置任务来实现这一点,这些任务可以通过CLI执行。

Project-X从头开始采用可插拔概念。这将允许开发人员将构建工具塑造成符合项目需求。project-x的核心建立在Robo之上,这是一个现代的PHP任务运行器。这允许我们有巨大的灵活性和定制性,我们能够利用这些特性而不必重新发明轮子。

项目类型

目前我们只支持Drupal项目类型。我们计划支持其他流行的基于PHP的项目,例如Laravel、Symfony和Wordpress。在这些项目中,您可以使用应用程序架构的可插拔特性创建自己的项目类型。

环境引擎

Docker是我们的首选环境引擎。我们计划扩展这项支持,但我们正在等待看devopts今年会移动到何处。环境引擎是可插拔的,可以根据项目特定需求进行扩展。

功能

  • 支持Docker服务,允许在不编写一行代码的情况下交换不同的服务。
  • 支持开发构建过程和部署到GitHub仓库。
  • 快速设置CI服务,Probo CI和Travis CI。
  • 与GitHub集成,以改进开发人员的工作流程。
  • 将环境引擎和基础设施配置与项目一起使用。
  • 基于可自定义的预配置模板设置项目。
  • 轻松设置测试工具如behatphp-unit
  • 确保开发人员遵循代码规范,使用代码嗅探器。
  • 在核心命令运行前后执行项目特定命令。

Project-X在项目设置上试图采用极简主义方法。主要目标是保持项目配置膨胀最小。如果您不需要特定的功能,不要添加它,直到您真正需要它,因为所有功能都可以在项目后期添加。

入门

  • mkdir my-project && cd my-project
  • composer init
  • composer require --dev droath/project-x
  • ./vendor/bin/project-x init
  • ./vendor/bin/project-x project:setup

配置

命令钩子

所有Project-X命令都支持在核心命令执行前后运行项目特定命令。

将以下内容添加到项目根目录下的project-x.yml中。

command_hooks:
    project:
        up:
            after: 
                - echo 'Project is up!' 
            before:
                - echo 'Project is starting up!' 
        down:
            after: 
                 - echo 'Project is down!' 
                 - echo 'Do something else'
            before:
                 - echo 'Project is going down!' 
                 - { type: symfony, command: 'deploy:push' }

支持在命令钩子中调用project-x命令。这通过定义一个对象来完成。完整的语法如下

before:
  - { type: symfony, command: 'COMMAND_NAME', arguments: {'key': 'value'}, options: ['option'] }

Bash别名

如果您想避免每次使用project-x时都输入./vendor/bin/project-x,您可以将以下内容添加到您的bash_profile

function project-x()
{
  if [ "`git rev-parse --show-cdup 2> /dev/null`" != "" ]; then
    GIT_ROOT=$(git rev-parse --show-cdup)
  else
    GIT_ROOT="."
  fi

  if [ -f "$GIT_ROOT/vendor/bin/project-x" ]; then
    $GIT_ROOT/vendor/bin/project-x "$@"
  elif [ -f "$GIT_ROOT/../vendor/bin/project-x" ]; then
    $GIT_ROOT/../vendor/bin/project-x "$@"
  else
    echo "You must run this command from within a Project-X project."
    return 1
  fi
}