Git 如何通过SSH在CI构建成功上部署我的webapp?

Git 如何通过SSH在CI构建成功上部署我的webapp?,git,go,ssh,deployment,gitlab,Git,Go,Ssh,Deployment,Gitlab,我在GitLab中有一个CI管道,用于构建我的应用程序并将其放入文件夹中 发布它并在部署它的服务器上进行一些更改的正确方法是什么 我正在考虑一个“拉”方案:将构建的应用程序推送到一个专用的repo,然后在目标机器上克隆,并运行必要的脚本 我想我可以通过SSH从CI服务器“推送”应用程序,但不确定这是否正确 我如何以一种恰当而不过于复杂的方式来实现它 将构建的应用程序推送到一个专用的repo,然后在目标机器上进行克隆,并运行必要的脚本 这将通过在服务器上的裸回购协议上的集合来实现。钩子脚本将是:

我在GitLab中有一个CI管道,用于构建我的应用程序并将其放入文件夹中

发布它并在部署它的服务器上进行一些更改的正确方法是什么

我正在考虑一个“拉”方案:将构建的应用程序推送到一个专用的repo,然后在目标机器上克隆,并运行必要的脚本

我想我可以通过SSH从CI服务器“推送”应用程序,但不确定这是否正确

我如何以一种恰当而不过于复杂的方式来实现它

将构建的应用程序推送到一个专用的repo,然后在目标机器上进行克隆,并运行必要的脚本

这将通过在服务器上的裸回购协议上的集合来实现。钩子脚本将是:

git --git-dir=/path/to/project_root/.git --work-tree=/var/www/http/ checkout -f

您可以使用其他命令完成该脚本,以进一步修改部署。

您的CI应该测试您构建应用程序的方式是否良好。 构建并放入文件夹后,添加此应用程序的测试(功能测试,如果相关,则通过部署它,或者仅验证其完整性)。 然后,您可以选择合并(然后,如您所说,在目标机器上克隆回购协议);事实上,这可以由另一个CI管道来完成。
对我来说,推送应用程序既不是管道的一部分,也不是代码的一部分,因此它不应该集成在管道上。

Gitlab CI为您提供了大量自由,让您可以自由地部署应用程序。您可以选择使用docker、fabric、puppet、chef、ansible或简单的bash和ssh

我自己使用+docker