Pee*_*ush 5 php git deployment jenkins
我正在尝试将Jenkins CI服务器用于我的PHP应用程序。当我们使用我们的Git存储库时,我在使用jenkins的git插件从中央存储库获取文件。
目前,当我的jenkins作业运行时,它从git repo中获取文件并进行构建,但是该构建包含所有文件。
按照我目前的情况,我只想要该版本中的经过修改的新文件,因此我只能部署它们而不是整个文件。
这是否可能以某种方式出现?或者在构建环境中根本上是错误的?
您需要两件事:先前构建的提交,以及先前构建提交和当前 HEAD 之间更改的文件。
对于第一个:可能有多种方法可以通过 REST API 找到来自 Jenkins 的提交(因为它确实在构建页面中显示它)。但我认为如果将 git 提交放入文件并将其存档为构建工件。然后您可以使用复制构建工件插件从先前的构建中获取文件。
对于第二个:也许你可以使用 git diff --name-status HEAD
将所有这些联系在一起:
将构建设置为从上次成功构建的同一作业中复制工件。
假设存储提交 id 的文件名为“commit_id”,设置一个构建步骤来运行如下内容:
git diff --name-status `cat commit_id` HEAD |
while read status file; do
case $status in
D) echo "$file was deleted" ;; # deploy (or ignore) file deletion here
A|M) echo "$file was added or modified" ;; # deploy file modification here
esac
done
# record this commit to be archived
git describe > commit_id
Run Code Online (Sandbox Code Playgroud)
在构建后操作中,配置作业以归档文件 commit_id。
| 归档时间: |
|
| 查看次数: |
4431 次 |
| 最近记录: |