我正在寻找一种工具,脚本或方法来将代码(一旦开发过程完成)从Git远程存储库传输回我的Oracle数据库。目前,我只知道一种写入yaml文件的方式,该文件列出了我想推回到数据库中的存储库中的每个文件。
目前,我的实际代码如下(数据库连接名称为示例):
阶段:-建立
建立:阶段:建立
script:
- "sqlplus abc/cde@//OracleDevelop@abc_packages/WAREHOUSE1.plsql"
- "sqlplus abc/cde@//OracleDevelop@abc_functions/WAREHOUSE1_NG.plsql"
- "sqlplus abc/cde@//OracleDevelop@abc_procedures/COPY_PACKAGE.plsql"
- "sqlplus abc/cde@//OracleDevelop@abc_types/NUMLIST.plsql"
现在,我不想列出需要返回数据库的每个文件。我想要某种机制来使其自动化。最好的情况是使用GUI,以便开发人员可以运行一个脚本,通过该脚本,他可以通过拖放来决定要将哪些文件还给数据库。
显然,有一种购买已经实现了这些功能的商业版本控制系统的方法,但是我的公司希望基于外壳脚本本身来开发GUI。
是否有人可能具有正常运行的脚本或界面,或者知道如何简化此操作?
几个月前,当我有能力将Git的版本管理引入没有版本的数据库开发公司时,我问了这个问题。由于我已经解决了这个问题,所以我想与有同样问题的人分享我的步骤...
最初,我不知道如何找到一种在Oracle数据库,不同的编辑器(SQL Developer,VS Code等)和GitLab之间创建流畅的开发圈的方法。
最终目的是使开发人员在开发过程中尽可能轻松地对数据进行版本控制,记录和存储。因此,需要从数据库中提取/导出代码,将其带到GitLab,进行编译和构建,然后再带回到(不同的)数据库,例如dev和prod数据库。
基本上,我的步骤是
yaml文件中最重要的一行是用于构建在最近5分钟内推送的代码并将其带回到数据库中的命令。
-"git diff --stat ('git diff --stat @{5.minutes.ago} --name-only') do sqlplus xyz"
xyz需要替换为你的Oracle数据库凭据,例如SCHEMA / password @ /// instance / name
如你所见,我们使用yaml和Jenkins来寻址两个不同的数据库。这是有意的,因为我们同时具有开发数据库和生产数据库。因此,我们希望能够单独解决它们。yaml脚本应该在每次落实提交时触发,并立即更新开发数据库。以后,当文件被视为完成(不需要进一步开发)时,高级工程师可以继续使用Jenkins将该文件传输到生产数据库中。