您的位置:首页 > 编程语言 > PHP开发

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

2016-10-20 16:29 621 查看
由于项目使用Git进行源代码管理,并且每次发布的时候并不是全布打包进行发布,而是只发布与上次发布版本之后所修改的文件。考虑到每次发布的时候会有新增的文件、修改的文件以及删除的文件,在网上看了不少资料,都是通过用git diff --stat base_branch_name current_branch_name --name-only这样的方式去做的,本来也想用这种方式去做,但是发现这种方式只能列出增加跟修改的文件,对于删除的文件就需要自己额外去写个脚本去列出哪些文件被删除了,然后在发布的时候用脚本支删除这些文件。

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

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



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

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这个分支的文件差异,然后可以根据这个文件差异生成用于发布的增量包以及要删除的文件列表。

对于发布的部分会在后续部分陆续补上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: