qualitycode/phing-deploy

部署项目的简单工具

v1.0 2017-01-03 17:39 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:09:15 UTC


README

部署权限

  • 创建部署包
  • 部署包
  • 代码静态分析

它可以管理

  • 多个项目
  • 多个部署环境
  • 每个环境下的多个服务器

先决条件

部署服务器

  • php >= 5.3
  • php-ssh
  • git
  • composer
  • 在需要部署的不同服务器上安装部署服务器的公钥
  • 在bitbucket和github上添加部署服务器的公钥

项目配置文件

项目配置文件必须为每个部署环境可用。

例如对于 parameters.yml => parameters.yml.production

工作原理

部署任务

  1. 本地
    1. 创建发布目录
    2. 克隆仓库
    3. 如果存在标签,则获取配置的分支的最新标签,否则获取传入的参数标签
    4. 获取composer.phar
    5. 复制特定于环境的配置文件
    6. composer install
    7. 执行项目 build.xml 文件中的 "package" 任务
    8. 创建包(tgz文件)
  2. 在远程服务器上
    1. 创建项目目录
    2. 复制包
    3. 创建部署目录
    4. 解压包
    5. 安装cron
    6. 执行项目 build.xml 文件中的 "deploy" 任务
    7. 更新current链接
    8. 清理旧部署

安装

#!bash
$ git clone git@github.com:QualityCodePhp/PhingDeploy.git
$ composer install

就是这样!

使用

  • ./vendor/bin/phing help > 显示此消息
  • ./vendor/bin/phing prepare -Dproject.name=test -Dstage.name=production > 准备服务器
  • ./vendor/bin/phing rollback -Dproject.name=test -Dstage.name=production > 回滚到以前的部署
  • ./vendor/bin/phing package -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 > 应用程序打包
  • ./vendor/bin/phing deploy -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 > 应用程序部署
  • ./vendor/bin/phing qa -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 > 运行qa工具
  • ./vendor/bin/phing deploy-with-qa -Dproject.name=test -Dstage.name=production -Drepository.tag=1.0 > 运行qa工具和部署任务

如果项目是bundle或library,部署没有意义,请考虑在项目配置文件中将deploy.enable设置为false。

结构

项目

.
├── build.xml                               => Taches de base et gestion des paramètres (deploy, help)
├── lib
│   ├── step
│   │   ├── history.xml                     => Déploiement sur les environnements distants
│   │   ├── package.xml                     => Création de l'archive
│   │   ├── remote.xml                      => Actions sur le(s) serveur(s)
│   │   ├── rollback.xml                    => Gestion du rollback
│   │   └── prepare.xml                     => Initialisation de la structure sur le(s) serveur(s)
│   └── tool
│       ├── composer.xml                    => Taches liées à composer
│       ├── git.xml                         => Taches liées à git
│       ├── cron.xml                        => Mise à jour des taches cron sur le(s) serveur(s)
│       └── qa.xml                          => Taches des outils de QA
└── properties
    ├── build.properties                    => Paramètrage général
    ├── projects                            => Définition des projets
    │   ├── project1.properties
    │   └── project2.properties
    └── stage                               => Définition des environnements
        ├── preproduction.properties
        ├── production.properties
        ├── recette.properties
        └── recette                         => Définition des spécificités des projets pour un environnement
            ├── project1.properties
            └── project2.properties

发布

.
└── releases
    └── project_name
        └── stage_name
            └── build_uniq_id
                ├── code
                ├── package
                └── report

远程

.
└── project_name
    ├── cache
    ├── logs
    ├── packages
    ├── releases
    │   ├── previous
    │   └── current
    └── shared

特定于项目的任务

如果需要执行特定于项目的任务,只需在根目录放置一个phing build.xml文件,包含3个目标

  • pre-package > 在创建存档之前(例如:压缩js和css)
  • post-package > 在创建包之后(例如:版本控制包,发送邮件)
  • pre-deploy > 在部署之前
  • post-deploy > 在部署之后
  • pre-rollback > 在回滚之前
  • post-rollback > 在回滚之后

如果任务需要在服务器上执行,需要通过deploy.tool.ssh目标执行

<phingcall target="deploy.tool.ssh">
    <property name="command" value="ma commande"/>
</phingcall>

设置cron

在项目中将cron放在

.
└── Ressources
    └── cron.d
        ├── project_name-__STAGE__-name1
        ├── project_name-__STAGE__-name2
        :
        └── ....

在cron文件中,脚本路径必须以__PATH__开头。

配置

参数及其推荐位置

properties/build.properties

properties/project/project_name.properties

properties/stage/stage_name.properties

properties/stage/stage_name/project_name.properties

您可以在这里覆盖所有参数