Jenkins+Git+PHP生成构建PHP项目的changelog以用于生成增量或减量打包发布

因为项目使用Git进行源代码管理,而且每次发布的时候并非全布打包进行发布,而是只发布与上次发布版本以后所修改的文件。考虑到每次发布的时候会有新增的文件、修改的文件以及删除的文件,在网上看了很多资料,都是经过用git diff --stat base_branch_name current_branch_name --name-only这样的方式去作的,原本也想用这种方式去作,可是发现这种方式只能列出增长跟修改的文件,对于删除的文件就须要本身额外去写个脚本去列出哪些文件被删除了,而后在发布的时候用脚本支删除这些文件。php

因为Jenkins对Java有增量构建的支持,因此想看一下可否用于PHP,在调查的过程当中发现Jenkins在/home/your_user_name/.jenkins/jobs/job_name/builds/job_id这个目录下会生成一个changelog.xml的文件,虽然这个文件的扩展名是.xml可是文件内容并非xml格式的,而是文本的。git

因此想利用一样的方式为PHP项目构建也生成一个一样的changelog.xml文件, 用于生成当前分支/版本与production的分支/版本的文件差别的changelog,通过用以下方法的尝试成功将dev_0.1这个分支与master分支的文件差别生成到了changelog里,以下方式只是一个参考,使用时须要替换成本身的分支信息,本文只列出Jenkins Source Code Management的配置部分:ui

用如上配置配置好以后,点save保存,而后build,在build完成后能够到/home/your_user_name/.jenkins/jobs/your_project_name/buids/build_num目录下查看changelog.xml文件,会列出以下的信息:3d

commit b2b9b4bbfdac01cf8bd0c6aa47b60dc49c93d394
tree 2a3e8dcc4fff7da69efb4e4de1bcda1485a98e95
parent 54cfd7edc7c7701239646642b1375c8dd78d78d8
author david 2016-10-20 15:56:32 +0800
committer david 2016-10-20 15:56:32 +0800

    delete 1.txt and change readme.md



:100644 000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0000000000000000000000000000000000000000 D    1.txt
:100644 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 d00491fd7e5bb6fa28c517a0bb32b8b506539d4d M    README.md
commit 561d13e93281b4c33d2100bad660e8f3a0c7bf44
tree 9a33f5747dd96d06ea58fb1782bee97134b21d19
parent 05dd2d0ac1428e1f2f1bfac5ea7ecbe79e45481f
author david 2016-10-20 11:48:16 +0800
committer david  2016-10-20 11:48:16 +0800

    add another one index1.php



:000000 100755 0000000000000000000000000000000000000000 d8cc407a0837159695d504b65da93fe78d4386f3 A    index1.php
commit 05dd2d0ac1428e1f2f1bfac5ea7ecbe79e45481f
tree 57dfe6fb18d4fe7f619920736260170dedc259ab
parent 2feb40bb7c164bccc6cb11d3476df396f1a0660e
author david 2016-10-20 10:34:39 +0800
committer david 2016-10-20 10:34:39 +0800

    add one new index.php



:000000 100755 0000000000000000000000000000000000000000 d8cc407a0837159695d504b65da93fe78d4386f3 A    index.php
commit 2feb40bb7c164bccc6cb11d3476df396f1a0660e
tree 38f9b68f0cea144a7af56e2f40c1ce1583d7ca02
parent 676272fd23d796e925e0d91bea5c972f3dbec77b
author david 2016-10-19 16:01:34 +0800
committer david 2016-10-19 16:01:34 +0800

    git info script



:000000 100644 0000000000000000000000000000000000000000 a9bf588e2f88457fdf73ac7361ef1d596fb81453 A    git_diff_info.sh



根据这个changelog.xml文件咱们能够看到咱们的开发分支与master这个分支的文件差别,而后能够根据这个文件差别生成用于发布的增量包以及要删除的文件列表。code

对于发布的部分会在后续部分陆续补上。
xml