FlexDeploy is a DevOps platform for CI/CD with out of box support Oracle APEX build & deploy automation. Oracle Application Express (APEX) is a common low code development framework, which is also used to develop extensions for Oracle E-Business Suite.
This FlexDeploy Loves APEX Blog Series will help you understand what makes FlexDeploy a perfect choice to implement DevOps and Continuous Delivery with Oracle APEX. Here is a summary of FlexDeploy Loves APEX Blog Series:
- FlexDeploy Loves APEX: Source Application from SCM (Git, SVN, etc.)
- FlexDeploy Loves APEX: Source application from Development Environment
- FlexDeploy Loves APEX: Continuous Integration for APEX
- FlexDeploy Loves APEX: Deploy individual Application Pages
- FlexDeploy Loves APEX: Deploy the Application and Supporting Objects
In this blog article, we will discuss how to deploy APEX application and supporting objects as a unit.
Oracle APEX application generally relies on supporting objects like tables, views, packages, etc. It would be beneficial to configure the unit of deployment with sequencing. FlexDeploy facilitates this via Pipeline & Release Management.
Pipeline
FlexDeploy pipeline orchestrates deployments through various environments (aka stages). For the example shown below, we are deploying code to Test, QA, and Production environment. Also, we are running various types of tests and promoting only on successful tests to ensure quality. Additionally, we are making sure we have the necessary approvals for each environment.
A FlexDeploy Pipeline is reusable. It does not include specifics of what projects will be deployed through it.
Release
A FlexDeploy Release is a software delivery milestone, containing a collection of projects. To meet specific requirements, you may have to deploy many related changes. Here is an example of a Release that includes an APEX application, supporting objects, forms, etc. These projects will be promoted through the pipeline as a unit. You can deploy each project individually as well, but the use of Pipelines and Release automates and controls the entire process.
The Priority column in release configuration indicates the sequence of deployment. Additionally project groups can do that as well. In this case, we will deploy supporting objects first and then the APEX application.
In previous articles, we discussed that after the successful execution of the build workflow, a new version is created for a Project. Additionally, the version contains artifact files. Thus the Project will have many versions, one for each successful build. Similarly, the Release has many snapshots, each containing references to specific project versions. Here is an example snapshot. When this snapshot deploys to the Test environment, it will deploy all included project versions. FlexDeploy will always perform change detection before deployment, and deployment will only occur if a new version is not currently deployed on target environment.
A Release Snapshot is automatically created on the successful build of one or more projects configured in the release. A snapshot can also be created manually by using the previously built project version, which is useful for rollback.
Release Execution
How does it all work? Let’s say the developer has committed code for the APEX application changes to Git, which initiates a build for APEX application. The successful build of the project will create a new snapshot. The snapshot will deploy to the first stage in the pipeline and move to the next stage. In this example, tests were successful, and now snapshot is waiting for QA Manager Approval. Upon approval, deployments will start in the Test environment.
Typically there will be more snapshots deploying to the first stage in the pipeline than the second stage. Rest assured that the same artifact will deploy to the next stages when snapshot executes through it. This cycle will continue, and at some point, you will end the release after successful deployments to the Production environment.
FlexDeploy provides JDBC and Oracle Database plugin to deploy supporting objects. The JDBC plugin relies on developers to prepare the necessary SQL scripts, whereas the Oracle Database plugin generates appropriate commands by comparing master schema with target schema. You can reference blog entry Automate Deployment of Database Objects for details on JDBC plugin usage.
Previous Post : FlexDeploy Loves APEX: Deploy Individual Application Pages