git - 如何让 Jenkins 在远程服务器上执行删除

标签 git deployment jenkins continuous-integration

我正在尝试开始使用 Jenkins 进行自动构建过程。

到目前为止,我已经设法让 Jenkins 从 BitBucket 构建项目、运行测试并使用 Publish Over SSH 插件将文件上传到生产服务器。

当我从我的 git 仓库中删除文件时,我希望在远程服务器上删除这些文件。我已经考虑过几种方法。

  1. 删除生产服务器上的所有文件,然后上传最新的构建版本。

    • 对我来说这似乎是一个糟糕的解决方案,因为这会导致比我希望的更多的停机时间。
  2. 创建一个驻留在远程服务器上的脚本,以在新构建过程之后清理文件。我需要从 git(以某种方式?)找出该提交中删除的文件是什么。

  3. 不是让 Jenkin 使用通过 ssh 发布的插件,而是在生产服务器上安装 git,因此在成功构建之后,我们可以让 Jenkins(以某种方式?)将项目推送到 git 生产服务器。

这似乎是开发人员的一项常见任务,我觉得我在这里遗漏了一些东西。是否有任何标准做法。

最佳答案

部署前清理远程目录

我能够通过以下方式做到这一点:

  1. Build Environment部分的Job配置中,勾选Send files or execute commands over SSH before the build starts
  2. 删除远程服务器上以前版本的构建文件:
sudo rm -r /var/www/html/*

关于git - 如何让 Jenkins 在远程服务器上执行删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641610/

相关文章:

python - 为什么 Python 计算的 "hashlib.sha1"与文件的 "git hash-object"不同?

Git新手: Work flow for a one person project

git - 为什么 `vc-annotate` 的输出与 `git-blame` 的输出不同?

deployment - 为什么命令 'meteor deploy'会上传这么多数据?

Jenkins 'Trigger/call builds on other projects' 与当前项目版本

git - git show <tag> 应该给我一个完整的补丁吗?我怎样才能把它关掉?

ruby-on-rails - 如何在 digital ocean 上一键部署rails app?

linux - Ansible 执行脚本不起作用

jenkins - 如何使用 Jenkinsfile 更好地可视化大型构建步骤的工作?

deployment - 最佳的 Drupal 部署策略是什么?