utPLSQL build using RedgateFlyway
This is a demo project using utPLSQL v3 for unit testing of Oracle PLSQL code. The project is also taking benefit of Continuous Integration with Travis CI server as well as static code analysis, code coverage and test results reporting using SonarCloud.
With every commit made to the github repository, a build job is executed using Travis CI.
The build process consists of following steps:
- Download Oracle Database 11g XE
- Download latest release of utPLSQL
- Install Oracle Database
- Install utPLSQL framework
- Install project sources
- Install unit tests
- Download and unzip the utplsql-cli project binaries
- Execute all tests on the project
- Publish test results and code coverage to SonarQube cloud service
Demo project using utPLSQL, Azure Devops and SQLCL Liquibase / Redgate Flyway for continuous integration of PLSQL and SQL code.
This is a demo project using utPLSQL v3 for unit testing of Oracle PLSQL code. The project is also taking benefit of Continuous Integration with Azure Devops server as well as static code analysis, code coverage and test results reporting using SonarCloud.
With every commit made to the github repository, a pipeline is executed using AzureDevops CI. The pipeline is split into stages. Each stage is build from one job which is split into set of smaller tasks responsible for the whole build.
In our pipeline we used following setup for stages:
- Build Database: During this stage we are deploying our code using SQLCL Liquibase. This ensures that syntax of command is correct as well as integrity of changes with others Tests are deployed to that database and executed. In our scenario we are forcing the failure into success using utplsqlcli option
--failure-exit-code=0
. Code coverage and test results are published and immutable artifact is created that will be propagated to next stages of deployment.- Build Stage consists of following steps:
- Download binaries for utplsqlcli and sqlcl (this step is optional, its possible that in self hosted agent this will be part of agent etc.)
- Provision a database from docker (this steps is optional and depends on your setup of databases, for example Delphix provisioning)
- Clone utPLSQL repository and install utPLSQL sources into database
- Create test user and install test packages
- Execute Liquibase / Flyway commands to update database
- Execute utPLSQL tests
- Publish test results to pipeline
- Execute SonarCloud analysis and publish results
- Prepare artifact for publish to next stage
- Build Stage consists of following steps:
At the end of build stage we will produce immutable artifact that has been tested and can be passed downstream to deployment jobs.
- Deploy Code to Database: During this stage we are using an artifact created during build stage. We will download it and deploy to the databases ( e.g. DEV,PRD, UAT, NFT etc.), during this stage running tests depends on project setup and the stage ( we will not be deploying tests to PRD but possible to DEV yes)
- Deploy Stage consists of following steps:
- Download binaries for utplsqlcli and sqlcl (this step is optional, its possible that in self hosted agent this will be part of agent etc.)
- Provision a database from docker ( this step most likely you will not run as these databases will exists already)
- Create user to deploy code to ( this step most likely you will not run as the user will exists already and we will update database)
- Execute Liquibase / Flyway commands to update database
- Deploy Stage consists of following steps: