社区,如果没有完成设置GitLab CI(持续集成)的过程,您是否知道我如何自动化流程如下所述?
在GitLab签到后,将签入的文件名添加到文本文件中或更新引用已签入文件的完整路径的bash脚本?
然后将使用bash脚本执行每个签入文件中的代码。
背景知识,文件是构建表/视图/包所需的SQL DDL文件。我希望我的DEV团队只担心更新DDL,并且有一个自动构建数据库对象的进程。
这里的想法是拥有一个bash / perl / ksh无论什么文件,它调用SQLPLUS并在每个文件中顺序执行DDL。
要清楚,我已经知道如何编写调用SQLPLUS的BASH代码并遍历文件列表..只需要一种方法来自动化文件名附加,只要GitLab签到一个。
欢迎任何想法......
答案 0 :(得分:1)
以下是两种方法。
这可以使用Git Hooks。 Git Hook 是在存储库中发生某些事件时执行的函数。它们是服务器端或客户端。
当你有人推送到存储库时,服务器端钩子会在你的情况下在GitLab上执行,而客户端钩子在客户端执行,例如在提交之前或之后。
在您的情况下,服务器端 post-receive 挂钩可能会起作用。查看有关Git Hooks的其中一个教程,了解更多详细信息,例如: here。您基本上可以编写脚本(正如您在问题中指出的那样),然后将其设置为服务器上的 post-receive 挂钩,以便在repo发生更改时执行。
虽然Git Hooks可能适用于这种情况,但这听起来像是{em>持续集成工具的用例,例如Jenkins,Travis CI或Bamboo。
这些工具用于在存储库中进行更改后触发构建。构建通常包含诸如编译源代码,运行单元测试,将应用程序部署到服务器,创建应用程序的可分发版本等内容。
在您的情况下,您将设置一个构建计划,该计划执行您在问题中描述的内容(提取更改,更新文本文件,运行数据库脚本,......)。
根据我的经验,我建议您研究一个持续集成系统。这是你问的事情的标准方式,你会发现当有人提交时你还想做其他事情。像CI这样的标准化流程将会有很大帮助。
Git Hooks可能会为此工作,但是难以维护并且不够灵活。