我正在尝试为我的 PHP 应用程序使用 Jenkins CI 服务器。由于我们正在使用我们的 Git 存储库,所以我正在使用 jenkins 的 git 插件从中央存储库获取文件。
目前,当我的 jenkins 作业运行时,它从 git repo 获取文件并进行构建,但该构建包含所有文件。
根据我目前的情况,我只想在该构建中修改+新文件。这样我就可以只部署它们而不是整个文件。
这是否有可能……或者在构建环境中从根本上是错误的……?
最佳答案
您需要两件事:前一个构建的提交,然后是前一个构建提交和当前 HEAD 之间更改的文件。
对于第一个:可能有一些方法可以通过 REST API 找到来自 Jenkins 的提交(因为它确实在构建页面中显示了它。但我认为如果将 git 提交放入文件并存档会更容易它作为构建工件。然后您可以使用 Copy Build artifacts 插件从以前的构建中获取文件。
对于第二个:也许你可以使用 git diff --name-status HEAD
将所有这些联系在一起:
将build设置为从同一作业复制工件,最后一次成功构建。
假设您存储提交 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
在后期构建操作中,配置作业以归档文件 commit_id。
关于php - 如何仅部署修改/新文件 GIT+Jenkins+PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190462/