Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitLab签入后自动附加到bash脚本_Git_Continuous Integration_Gitlab_Git Bash_Continuous Deployment - Fatal编程技术网

GitLab签入后自动附加到bash脚本

GitLab签入后自动附加到bash脚本,git,continuous-integration,gitlab,git-bash,continuous-deployment,Git,Continuous Integration,Gitlab,Git Bash,Continuous Deployment,社区,而不必经历设置GitLab CI(持续集成)的过程,你们中有人知道我如何自动化下面所述的过程吗 GitLab签入后,是否将签入文件名添加到文本文件或更新引用签入文件完整路径的bash脚本 然后将使用bash脚本在每个签入文件中执行代码 在后台,这些文件是构建表/视图/包所需的SQL DDL文件。我希望我的开发团队只关心DDL的更新,并且有一个自动构建数据库对象的过程 这里的想法是有一个bash/perl/ksh任意文件,它调用SQLPLUS并在每个文件中顺序执行DDL 要明确的是,我已经知

社区,而不必经历设置GitLab CI(持续集成)的过程,你们中有人知道我如何自动化下面所述的过程吗

  • GitLab签入后,是否将签入文件名添加到文本文件或更新引用签入文件完整路径的bash脚本

  • 然后将使用bash脚本在每个签入文件中执行代码

  • 在后台,这些文件是构建表/视图/包所需的SQL DDL文件。我希望我的开发团队只关心DDL的更新,并且有一个自动构建数据库对象的过程

    这里的想法是有一个bash/perl/ksh任意文件,它调用SQLPLUS并在每个文件中顺序执行DDL

    要明确的是,我已经知道如何编写调用SQLPLUS并迭代文件列表的BASH代码。。只要在GitLab发生签入时,就需要一种自动添加文件名的方法


    欢迎任何想法

    这里有两种方法

    Git挂钩 这可以使用Git钩子实现。Git钩子是在存储库中发生某些事件时执行的函数。它们要么是服务器端,要么是客户端

    在您的案例中,当有人推送到存储库时,服务器端钩子将在GitLab上执行,而客户端钩子则在客户端上执行,例如在提交之前或之后

    在您的情况下,服务器端post接收钩子可能会工作。有关更多详细信息,请查看Git挂钩上的一个教程,例如。您基本上会编写脚本(如您在问题中所指出的),然后将其设置为服务器上的post receive挂钩,以便在repo发生更改时执行

    连续积分 虽然Git钩子可能适用于这种情况,但这听起来确实像是一个连续集成工具的用例,比如,或

    这些工具用于在存储库中发生更改后触发生成。构建通常包含编译源代码、运行单元测试、将应用程序部署到服务器、创建应用程序的可分发版本等内容

    在您的案例中,您将设置一个构建计划,该计划将按照您在问题中描述的内容执行(引入更改、更新文本文件、运行数据库脚本等等)

    根据我的经验,我建议您研究一个持续集成系统。这是做你所要求的事情的标准方式,你会发现当有人做出承诺时,你还想做其他事情。有一个像CI这样的标准化流程将非常有帮助

    Git钩子可能适用于此,但更难维护,灵活性也更低