[英]how can i get only modified and new files only from dropbox with dropbox php sdk
[英]How to deploy only modified/new files GIT+Jenkins+PHP?
我正在尝试将Jenkins CI服务器用于我的PHP应用程序。 因为我们正在使用我们的Git存储库所以我使用jenkins的git插件从中央仓库获取文件。
目前,当我的jenkins作业运行时,它从git repo获取文件并进行构建,但该构建包含所有文件。
根据我目前的情况,我只想在该build中修改+新文件。所以我只能部署它们而不是整个文件。
这有可能......或者它在构建环境中是根本错误的吗?
您需要两件事:先前构建的提交,然后是上一个构建提交和当前HEAD之间的已更改文件。
第一种:可能有办法通过REST API从Jenkins中找到提交(因为它在构建页面中显示它。但是我认为如果你将git提交放入一个文件并将其存档为一个文件会更容易然后你可以使用Copy Build artifacts插件从上一个版本中获取文件。
对于第二个:也许你可以使用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
在后构建操作中,配置作业以归档文件commit_id。
没有什么“根本错误”,但至少你的发布版本应该是“干净的完整”版本(而不是增量版本)。
至于“如何”这样做......你必须自己做。 没见过像这样的插件。 为什么? 因为在大多数编译的“构建”中,源文件和相应的编译文件之间没有一对一的关系。 系统如何知道哪些新文件产生了哪些新工件? (在PHP中,很明显,在其他语言中,不是)
你必须编写自己的构建脚本,它将:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.