甲骨文和 GitLab

Posted

技术标签:

【中文标题】甲骨文和 GitLab【英文标题】:Oracle and GitLab 【发布时间】:2020-06-10 02:23:26 【问题描述】:

我正在寻找一种工具、脚本或方法来将代码(在其开发过程完成后)从 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,这样开发人员就可以运行一个脚本,在该脚本中他可以通过拖放来决定他想要将哪些文件返回到数据库中。

显然有一种购买商业版本控制系统的方法,这些系统已经实现了这些功能,但我的公司希望自己开发基于 shell 脚本的 GUI...

有没有人可能有一个正常运行的脚本或界面,或者知道如何使它更简单?

【问题讨论】:

【参考方案1】:

几个月前我问过这个问题,当时我正准备将 Git 版本控制引入一家数据库开发公司,但到目前为止还没有版本控制。 由于我已经解决了这个问题,我想我会为遇到同样问题的人分享我的步骤......

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

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

基本上,我的步骤是

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

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

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

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

xyz 需要替换为您的 Oracle 数据库凭据,例如SCHEMA/密码@//实例/名称

    设置一个 Jenkins 服务器,从存储库中获取某些文件并将它们带入不同的数据库。这很简单,Jenkins 中的所有东西都有一个 GUI。

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

【讨论】:

以上是关于甲骨文和 GitLab的主要内容,如果未能解决你的问题,请参考以下文章

甲骨文(Oracle)面试题目

甲骨文扩展客户云产品组合 覆盖PaaSSaaS和大数据

甲骨文预测 2020-2025年云的五大趋势

markdown 甲骨文创建索引和杀死进程

markdown 甲骨文数据库的导入和导出

甲骨文。防止合并子查询和主查询条件