Warm tip: This article is reproduced from serverfault.com, please click

jenkins-甲骨文和GitLab

(jenkins - Oracle and GitLab)

发布于 2020-02-26 08:55:48

我正在寻找一种工具,脚本或方法来将代码(一旦开发过程完成)从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。

是否有人可能具有正常运行的脚本或界面,或者知道如何简化此操作?

Questioner
Sven Eschlbeck
Viewed
0
Sven Eschlbeck 2020-11-30 18:46:43

几个月前,当我有能力将Git的版本管理引入没有版本的数据库开发公司时,我问了这个问题。由于我已经解决了这个问题,所以我想与有同样问题的人分享我的步骤...

最初,我不知道如何找到一种在Oracle数据库,不同的编辑器(SQL Developer,VS Code等)和GitLab之间创建流畅的开发圈的方法。

最终目的是使开发人员在开发过程中尽可能轻松地对数据进行版本控制,记录和存储。因此,需要从数据库中提取/导出代码,将其带到GitLab,进行编译和构建,然后再带回到(不同的)数据库,例如dev和prod数据库。

基本上,我的步骤是

  1. 使用数据库浏览器(例如,SQL开发人员)中的文件转储功能/导出功能从数据库中提取文件,或者在我的情况下,为此任务编写特定的python脚本。我用xyz或示例替换了所有关键信息...

Python脚本从Oracle数据库导出特定数据

  1. 在GitLab中创建一个远程存储库,并将所有文件(保持数据库层次结构)上载到GitLab存储库。
  2. 克隆存储库并创建本地存储库。
  3. 编写一个yaml文件,该文件将文件带回到Oracle数据库中,并在每次将新提交推送到存储库时触发。

yaml文件中最重要的一行是用于构建在最近5分钟内推送的代码并将其带回到数据库中的命令。

-"git diff --stat ('git diff --stat @{5.minutes.ago} --name-only') do sqlplus xyz"

xyz需要替换为你的Oracle数据库凭据,例如SCHEMA / password @ /// instance / name

  1. 设置一个Jenkins服务器,该服务器从存储库中获取某些文件并将它们带入另一个数据库。这非常简单,Jenkins中的所有内容都有一个GUI。

如你所见,我们使用yaml和Jenkins来寻址两个不同的数据库。这是有意的,因为我们同时具有开发数据库和生产数据库。因此,我们希望能够单独解决它们。yaml脚本应该在每次落实提交时触发,并立即更新开发数据库。以后,当文件被视为完成(不需要进一步开发)时,高级工程师可以继续使用Jenkins将该文件传输到生产数据库中。