php - 如何仅部署修改/新文件 GIT+Jenkins+PHP?

标签 php git deployment jenkins

我正在尝试为我的 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/

相关文章:

php - 如何将 MySQL 查询转换为 Morris 图表可读的 json

git - Linux - 运行多个并行命令,打印顺序输出

git - 从 Git 存储库中 fork 一个文件而不克隆存储库

git - 如何从 GitHub 下载包

python - GoogleAppengineLauncher 登录失败

.net - .NET 3.5 SP1 客户端框架的 HttpUtility 的替代方案?

java - 部署带有图像的 jar 文件时遇到问题

php - cre 加载 6.4.1 管理

php - 在 php 中获取锁的最佳方法

php - 如何安排在Linux共享服务器上发送的不同消息