qualitycode / phing-deploy
部署项目的简单工具
v1.0
2017-01-03 17:39 UTC
Requires
- ext-ssh2: *
- halleck45/phpmetrics: dev-master
- pear/archive_tar: ^1.3
- pear/versioncontrol_git: dev-master
- phing/phing: ^2.11
- phploc/phploc: ^2.1
- phpmd/phpmd: ^2.2
- phpunit/php-code-coverage: ^2.2@dev
- phpunit/phpunit: ^4.7
- sebastian/phpcpd: ^2.0
- sebastian/phpdcd: ^1.0@dev
- squizlabs/php_codesniffer: ^2.0@dev
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
工作原理
部署任务
- 本地
- 创建发布目录
- 克隆仓库
- 如果存在标签,则获取配置的分支的最新标签,否则获取传入的参数标签
- 获取composer.phar
- 复制特定于环境的配置文件
- composer install
- 执行项目 build.xml 文件中的 "package" 任务
- 创建包(tgz文件)
- 在远程服务器上
- 创建项目目录
- 复制包
- 创建部署目录
- 解压包
- 安装cron
- 执行项目 build.xml 文件中的 "deploy" 任务
- 更新current链接
- 清理旧部署
安装
#!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
您可以在这里覆盖所有参数