fh/git-deployment

为git项目提供服务器端gitolite post-receive部署钩子。

1.0.5 2017-01-03 22:18 UTC

This package is not auto-updated.

Last update: 2024-09-22 07:11:11 UTC


README

此包提供了一个高度可定制的基于PHP的部署过程,旨在集成到gitolite服务器端post-receive git钩子中。它集成了处理常见部署任务的多项策略

  • 从头到尾完全可单元测试,包括所有部署前的行为策略。请参阅测试目录以获取广泛的单元测试。
  • 根据SemVer标准自动标记版本。
  • 根据给定的策略处理目标目录中本地修改的文件。
  • 部署后的任务,如将部署的引用自动合并到另一个分支。
  • 可定制的策略,您可以轻松修改和重新部署。

先决条件

此项目假设您已经安装了gitolite,并且您对如何使用服务器端git钩子有些熟悉,特别是post-receive钩子。如果您不熟悉gitolite,请阅读他们的文档并尝试一些示例。为自己设置一个gitolite服务器,并从您的存储库中推送到它以查看其工作方式。

如果您熟悉phar-composer以及一般phar文件的工作方式,那将很有帮助。尽管如此,这些知识不是必需的。

流程概述

此项目定义了一个由post-receive gitolite钩子启动的PHP可执行PHAR文件。下面定义了一个示例post-receive钩子文件。

当您的gitolite服务器接收到对您的项目的推送时,post-receive钩子将执行,并带有提交ID和人类可读的"ref"作为参数。ref类似于refs/heads/branchname或refs/tags/tagname。

默认部署策略不会部署不符合SemVer命名标准的任何ref。符合SemVer命名标准的ref示例可能是:3.0或3.0.1。如果您想部署不符合SemVer的分支或标签名,您需要创建一个新的策略。请参阅自定义

一旦收到推送并启动git-deployment,此包将通过读取环境变量以获取配置细节和目标目录,并遵循配置的部署行为策略。

所有执行命令及其输出都将输出到标准输出,这意味着当您推送时,远程将响应输出所有部署活动,这意味着您可以立即了解部署的进展情况以及过程可能遇到的问题。

开始使用默认功能

建议您全局安装git-deployment.phar可执行文件。有两种方法可以做到这一点

快速开始

注意:如果您已经安装了phar-composer,可以跳过步骤1

  1. 全局安装phar-composer
$ wget http://www.lueck.tv/phar-composer/phar-composer.phar
$ chmod ugo+x phar-composer.phar
$ sudo mv phar-composer.phar /usr/local/bin/phar-composer
  1. 全局安装git-deployment
$ phar-composer build fh/git-deployment
$ chmod ugo+x git-deployment.phar
$ sudo mv git-deployment.phar /usr/local/bin/git-deployment
  1. 配置您的服务器端gitolite post-receive钩子

以下是为示例项目安装的post-receive钩子的示例。

#!/bin/bash

# FILE NAME: post-receive

DEPLOYMENT_LEVEL="beta"
DEPLOYMENT_TARGET_DIR="/var/www/www.domain.org"
DEPLOYMENT_REMOTE_NAME="beta"
GIT_DIR="/var/www/www.domain.org"
LOCALLY_MODIFIED_FILE_STRATEGY="Fh\\Git\\Deployment\\Strategies\\ResetLocallyModifiedFileStrategy"
DEPLOYMENT_STRATEGY="Fh\\Git\\Deployment\\Strategies\\DefaultDeploymentStrategy"
TAG_STRATEGY="Fh\\Git\\Deployment\\Strategies\\AutoIncrementTagStrategy"
POST_DEPLOYMENT_SCRIPT="./deploy.sh"

dep=`which git-deployment`

while read oldrev newrev ref
do
    $dep $oldrev $newrev $ref
done

该文件应安装到您的gitolite ~/repositories/project.git/hooks目录下,并设置为可执行文件模式(其中project.git是您项目git仓库的名称)。有关gitolite的更多信息,请参阅gitolite文档。文件名应为"post-receive"。

行为定制

在定制此包时,通常有两种路径可走

1. 提交一个包含新策略或错误修复的拉取请求。

对现有策略集的错误修复总是受欢迎。

然而,在提交新策略或修改现有策略的行为时,首先问问自己这个新策略或行为对大多数其他部署过程是否有用,或者这是否是对您自己过程的特定定制,考虑使用分支代替。

2. 对此包进行分支以进行特定的定制。

如果您需要做出的策略更改特定于您的部署过程,我建议创建此包的分支而不是提交拉取请求。这样,您可以在保持此包作为通常有用的行为原始示例的同时,拥有最大的自由度来做出您想要的更改。

phar-composer的使用

了解如何使用phar-composer来安装此包对于您需要自定义特定部署的默认策略是有用的。此包不可能预见所有部署需求。如果您提交新策略或分支此包以创建自己的策略,您将需要重新编译git-deployment.phar可执行文件,并在您的机器上重新安装它。

$ wget http://www.lueck.tv/phar-composer/phar-composer.phar
$ chmod ugo+x phar-composer.phar
$ sudo mv phar-composer.phar /usr/local/bin/phar-composer

一旦您已全局安装phar-composer,您可以使用以下命令创建和安装git-deployment.phar包

$ phar-composer build fh/git-deployment
$ chmod ugo+x git-deployment.phar
$ sudo mv git-deployment.phar /usr/local/bin/git-deployment

注意:这是因为phar-composer将检查packagist.org上的fh/git-deployment项目,并将其下载到临时目录并安装。

安装您的分支

当分支此包时,您可能无法依赖packagist.org来安装您修改后的分支。私有仓库无法在packagist.org上注册。大量的部署工作往往被定制为特定的系统。

幸运的是,phar-composer程序支持以非常多样的方式创建新的phar。有关详细信息,请参阅他们的文档。但是,这里有一个快速示例

假设您将此项目分支到了名为/home/me/projects/git-deployment的目录中。

一旦您已经做出更改,更新了单元测试,并且您确信您已经准备好在实际部署中尝试,只需使用phar-composer重新构建您的项目并安装它即可

$ cd /home/me/projects
$ phar-composer build git-deployment/.
$ chmod ugo+x git-deployment.phar
$ sudo mv git-deployment.phar /usr/local/bin/git-deployment

综合所有内容

如果您经常进行定制,一旦您了解了这个过程,创建类似fh/git-hooks的项目就很有意义。该项目提供了一个示例post-receive钩子和Makefile,可以轻松安装和部署您的修改后的git-deployment phar。这样,您就可以在git-deployment项目和post-receive钩子中做出更改,并轻松测试和部署到您的gitolite仓库钩子目录进行进一步测试。

有关如何使用此项目的更多信息,请参阅fh/git-hooks项目。

这允许您快速轻松地访问进行更改,运行单元测试,并使用最新的定制重新部署git-deployment.phar和post-receive钩子到您的系统中。

贡献

有关是否要为此包做出贡献或创建自己的分支的指导,请参阅行为定制

如果您决定为此包做出贡献,请从功能分支提交拉取请求到主分支。

此项目的分支和标签策略

本项目的分支策略是,master 仓库包含最新的开发流。发布分支直接从 master 分支创建。标签则从各自的特性分支创建。

快乐编码!