DOAG 2025: Optimize the CI/CD process with SQLcl and GitLab pipelines

DOAG 2025

With the release of version 24.3 of SQLcl, Oracle has introduced a new feature that supports automated Continuous Integration and Continuous Delivery (CI/CD). The Liquibase extension, integrated since SQLcl version 19.2, has already allowed developers to deploy database structures as well as SQL and PL/SQL code using custom changesets.

Now, things get even better: the new SQLcl Projects feature can automatically export database objects and generate incremental easy-to-read SQL based changesets for you. This makes it possible to reduce the manual effort in CI/CD workflows, speed up development processes, and minimize versioning errors.

I’m excited to be speaking at this year’s DOAG 2025 conference in Nuremberg! In my talk about the topic “Optimize the CI/CD process with SQLcl and GitLab pipelines” I will dive into how the new SQLcl feature can be used to speed up your application deployments. I will demonstrate a way how to integrate the new functionality into a GitLab CI/CD pipeline and control it over GitLab’s API – enabling near-seamless and fully automated deployments for database-driven applications. The pipeline uses a custom Docker image and a Bash script to apply modifications to the deployed files. This setup provides a flexible and configurable deployment process tailored to the specific needs of different environments.

To wrap up, the session will address the key challenges encountered during implementation and present a method for controlling the CI pipeline through the GitLab API using an APEX application. While the talk is aimed primarily at DevOps engineers, it’s also suitable for developers and anyone interested in CI/CD and database deployment automation.

The following components and features are included in the setup and will be addressed in my talk:

  • A custom Docker image
    Built specifically for SQLcl Projects to ensure a consistent and portable execution environment
  • A Bash script
    Controls the workflow and defines which CI/CD steps to process, including:
    • Re-compile and checking for errors on stored user objects before export and after deployments
    • Running utPLSQL tests before export and after deployments to QA environment
    • CODESCAN for SQL, PLS and PLB files for Best Practice violations (based on Trivadis Coding Guidelines) after export
    • Scanning log files for error patterns (including support to exclude specific error codes and mark them as a warning) and highlight matches in the log file
    • Automated creation of repository assets based on pre-defined templates (e.g., README file, Liquibase property files, SQLcl Projects configuration)
    • … and more
  • GitLab configuration
    Covers configurations needed on GitLab projects, e.g.
    • GitLab Runner setup
    • GitLab Container Registry (or external)
    • CI pipeline template (centralised and reusable, but customizable per GitLab project)
    • Dockerfile
    • CI/CD variables
    • SSH Keys, Access Tokens
    • API Webhook token (for ORDS)
  • Database
    Includes creation of the deployment schema and configurations needed to retrieve job event updates from GitLab
    • Deployment user
    • ORDS API definition
    • APEX application

    Although the session will be held in German, I intend to share a small blog series here (in English) after the conference has taken place.

    https://my.doag.org/events/userconference/2025/agenda/agendaView.defaultView/#eventDay.all#textSearch.Mit%20SQLcl%20und%20GitLab-Pipelines%20den%20CI/CD-Prozess%20optimieren

    If you happen to be there, I’d be happy to see you in the audience!