rob*_*don 17 git deployment wordpress githooks
我想使用git将网站部署到测试服务器.我的网站是一个用gulp构建的wordpress主题,存储库看起来像
theme.git/
-- gulpfile.js
-- src/
-- build/
Run Code Online (Sandbox Code Playgroud)
我按照这里和这里解释的步骤,在服务器上设置了一个裸存储库,配置git工作树的位置,并写一个post-receive挂钩来检查repo到那个位置.
问题是我只想将build/文件夹移动或复制到服务器上的位置.我唯一的想法就是写一个post-receive hook将repo拉到一个工作树位置(因为我觉得我读过那个裸的repos通常都没有工作树),然后cp是build文件夹到wp-content/themes/
它似乎不必要地复杂,所以我想知道是否有更有效/更常见的方式来解决它.谢谢!
小智 5
您git如此广泛地用于部署的方法似乎有点奇怪,主要是因为 git 是主要的源代码管理系统,而不是部署工具。确实,您可以使用 git hooks 做许多奇怪的事情,但出于某种原因,我觉得这些东西会再次困扰您。
通常我会建议您使用某种持续集成工具来完成这项工作。我可以自己使用的一种可能的工作流程是
gulp build那里运行(或任何您的任务名称),因此您根本不必将build目录存储在 git repo 中。after_success挂钩中,您可以将构建目录复制到目标服务器,例如使用scp. 这是一个使用 FTP 做同样事情的例子。Travis 支持对敏感数据进行加密,因此您不必担心(至少如此)将用户名和密码存储在 git 存储库中。当您想在每次向 git 存储库提交内容时部署构建时,该流程非常有用。 顺便说一句,当你第一次使用它时,真的感觉很神奇:“我刚刚做了这个git push,现在我的服务器上已经有了变化。”
但是,您提到要将代码部署到测试服务器。确实,CI 工具(例如 Travis)可用于维护不同部署步骤之间的流程,其中许多是测试服务器。大型项目的一个示例流程可能是
development -> tests passing? -> release -> tests passing? -> integration -> tests passing? -> staging -> tests passing? -> production
...其中流程可以使用 CI 工具部分或完全自动化。
但是,您听起来好像在您的情况下部署构建是一种一次性的事情,有时您只想手动完成。(如果我误解了你,我很抱歉。)对于这些一次性任务,使用 shell 脚本或任务管理工具更合适。
您提到您已经在使用gulp. 这是一个非常方便的工具,特别是因为您可以轻松地组合不同的“任务流”。您可以有一个用于构建主题 ( gulp build) 的任务和用于测试服务器部署 ( gulp deploy-test) 的另一个build任务,这只是通过一个将文件复制到测试服务器的附加步骤来扩展任务。gulp-scp看起来像一个很好的任务插件(虽然我自己没有使用它,它只是谷歌的第一个搜索结果)。如果这不起作用,您可以随时scp使用gulp-shell或类似工具手动调用。
你甚至可以参数化的部署任务,所以你可以这样做:
gulp deploy --test和
gulp deploy --production
好了,这是您在devops 中的第一堂课。如果软件项目中的这种任务自动化听起来很有趣,那么有很多东西需要学习。
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |