pagesjaunes/jarvis-ci

Vagrant、VirtualBox、Symfony 应用管理 PHP 开发栈:Nginx、PHP-FPM、Varnish。


README

管理虚拟机中 PHP 应用程序的最佳工具。

Jarvis 设计用于协助您开发 Symfony 应用程序,通过定义您在远程服务器上运行的常见任务。

Jarvis 旨在成为您的瑞士军刀,因此它采用模块化设计,具有多个子命令,以保持代码库易于管理和面向未来。

这是什么?

Jarvis 简化了使用 Vagrant 虚拟机开发 Symfony 应用程序。

开箱即用,应用程序可以执行许多出色的事情

composer

  • composer:self-update
  • composer:show

核心

  • core:container:cache-clear

编辑器

  • editor:config:install

项目

  • project:assets:build

  • project:assets:watch

  • project:composer:graph-dependencies

  • project:composer:graph-dependencies-pagesjaunes

  • project:composer:install

  • project:composer:update

  • project:composer:validate

  • project:config:add

  • project:config:show

  • project:cs:php

  • project:editor:open

  • project:git:clone

  • project:git:hooks:install

  • project:git:log

  • project:git:mergetool

  • project:git:pre-commit

  • project:git:status

  • project:git:update

  • project:lint:all

  • project:lint:php

  • project:lint:scss

  • project:lint:twig

  • project:lint:yaml

  • project:php:doc

  • project:php:metrics

  • project:symfony:cache:clear

  • project:symfony:debug:container

  • project:symfony:debug:event-dispatcher

  • project:symfony:debug:router

  • project:symfony:debug:translation

  • project:symfony:debug:twig

  • project:symfony:monitor:health

  • project:tests:all

  • project:tests:integration

  • project:tests:unit

vagrant

  • vagrant:build
  • vagrant:provision
  • vagrant:restart
  • vagrant:ssh
  • vagrant:start
  • vagrant:status
  • vagrant:stop

虚拟机

  • vm:php:extension:disable
  • vm:php:extension:enable
  • vm:service
  • vm:service:nginx:restart
  • vm:service:php_fpm:restart
  • vm:service:varnish:restart

如何开始?

您可以使用以下三种方式之一使用 Jarvis

作为 Phar(推荐)

您可以下载一个作为 Phar 的即用型 Box 版本

$ curl -LSs http://pagesjaunes.github.io/jarvis/installer | php

该命令将检查您的 PHP 设置,警告您任何问题,并将其下载到当前目录。从那里,您可以将它放置在任何更容易访问的地方(例如 /usr/local/bin),并将其更改为 755。您甚至可以将其重命名为 jarvis,以避免每次都要输入 .phar 扩展名。

$ jarvis —version

每当应用程序发布新版本时,您只需运行更新命令即可获取最新版本

$ jarvis self-update

作为全局 composer 安装

当您以这种方式安装其他工具(如 phpunit)时,这可能是最佳方式

$ composer global require pagesjaunes/jarvis-ci --prefer-dist

请确保将 ~/.composer/vendor/bin 目录放在您的 PATH 中,以便在终端中运行 jarvis 命令时找到 jarvis 可执行文件。

作为 composer 依赖项

您还可以将 Jarvis 作为您的 Composer 管理项目的依赖项安装

$ composer require --dev pagesjaunes/jarvis

(或)

{
    "require-dev": {
        "pagesjaunes/jarvis": "0.1"
    }
}

一旦安装了应用程序,您可以通过运行帮助命令来获取有关所有可用命令的详细信息。这是您获取关于如何使用Jarvis信息的首选位置。您也可能在维基百科上找到其他有用的信息。如果您偶然发现可能对他人有用的信息,维基百科对所有贡献者开放。

$ jarvis help

管理Symfony项目

要开始,您可以查看Jarvis准备管理的示例应用程序。您的项目结构完全由您决定。Jarvis所需的所有内容是在您的项目目录根目录下有一个名为jarvis.yml的文件。您可以通过查看构建命令的帮助信息来找到完整的配置设置列表。

$ jarvis help project:add

工作目录

如果指定了选项 --working-dir (-d),则使用给定的目录作为工作目录。

示例工作目录

$ tree -L 1
.
├── README.md
├── assets
├── bin
├── build
├── config
├── jarvis (facultative for extending)
├── jarvis.yml
├── projects
├── provisioning (facultative)
├── vagrant
├── var
└── vendor

示例内容文件 jarvis.yml

imports:
    - { resource: jarvis/config/services.xml }

parameters:
    app.name: pj-jarvis

    vagrant_directory: "%working_dir%/vagrant"
    projects_config_file_path: "%working_dir%/config/projects.json"
    local_projects_root_dir: "%working_dir%/projects"

    editor_project_external_folders_config:
        - { name: "bundles", path: "%working_dir%/projects/bundles", follow_symlinks: "false" }
        - { name: "assets_common", path: "%working_dir%/assets/common", follow_symlinks: "false" }

    command.project.enabled: true
    command.editor.enabled: true
    command.project.build.enabled: true
    command.project.cs.enabled: true
    command.project.editor.enabled: true
    command.project.git.enabled: true
    command.project.php.enabled: true
    command.project.composer.enabled: true
    command.project.symfony.enabled: true
    command.project.symfony.assets.enabled: true
    command.project.test.enabled: true
    command.project.lint.enabled: true
    command.vagrant.enabled: true
    command.vm.enabled: true
    command.composer.enabled: true

示例内容文件 config/projects.json

{
    "projects": {
        {
            "project_name": "symfony-distibution",
            "git_repository_url": "https://github.com/symfony/symfony-standard.git",
            "local_git_repository_dir": "%local_projects_root_dir%/webapps/%project_name%",
            "remote_git_repository_dir": "%remote_projects_root_dir%/webapps/%project_name%",
            "git_target_branch": "master",
            "remote_webapp_dir": "%remote_projects_root_dir%/webapps/%project_name%",
            "local_webapp_dir": "%local_projects_root_dir%/webapps/%project_name%",
            "remote_vendor_dir": "/home/vagrant/projects/%project_name%/vendor",
            "local_vendor_dir": "%local_vendor_root_dir%/%project_name%",
            "remote_symfony_console_path": "%remote_webapp_dir%/app/console",
            "remote_phpunit_configuration_xml_path": "%remote_webapp_dir%/app/phpunit.xml.dist"
        },
        "sylius": {
            "project_name": "sylius",
            "git_repository_url": "https://github.com/Sylius/Sylius.git",
            "local_git_repository_dir": "%local_projects_root_dir%/webapps/%project_name%",
            "remote_git_repository_dir": "%remote_projects_root_dir%/webapps/%project_name%",
            "git_target_branch": "master",
            "remote_webapp_dir": "%remote_projects_root_dir%/webapps/%project_name%",
            "local_webapp_dir": "%local_projects_root_dir%/webapps/%project_name%",
            "remote_vendor_dir": "/home/vagrant/projects/%project_name%/vendor",
            "local_vendor_dir": "%local_vendor_root_dir%/%project_name%",
            "remote_symfony_console_path": "%remote_webapp_dir%/app/console",
            "remote_phpunit_configuration_xml_path": "%remote_webapp_dir%/app/phpunit.xml.dist"
        }
    }
}

别名

示例

别名示例:alias example-jarvis="/usr/local/bin/jarvis --working-dir=/path/to/projects/socle"

自动完成

使用 core:autocomplete 命令启用 *~ / .bashrc* 中命令和选项的自动完成。

请注意,传递给 core:autocomplete 的参数用于指定要启用自动完成的别名。此外,自动完成取决于使用的工作目录。

source $(/usr/local/bin/jarvis core:autocomplete jarvis)

source $(/usr/local/bin/jarvis core:autocomplete --working-dir=/path/to/projects/socle example-jarvis)

许可证

根据MIT许可证许可。请参阅此处

贡献

您可以通过以下三种方式之一进行贡献

  • 使用问题跟踪器提交错误报告。
  • 在问题跟踪器上回答问题或修复错误。
  • 贡献新功能或更新维基百科。

所有拉取请求都应提交到develop分支,以便在合并到master分支之前进行测试。

代码贡献过程并不非常正式。您只需确保遵循symfony编码规范。任何新的代码贡献都必须伴随相应的单元测试(如果适用)。

构建状态

开发分支:Build Status

主分支:Build Status