Re: Oracle Apex Resource/Links Needed

From: Tim Hall <tim_at_oracle-base.com>
Date: Fri, 3 Jan 2020 08:15:30 +0000
Message-ID: <CAP=5zEiqQRSnfoV0hNa6GBkAJ1SBruoEivPSiwcrUZg5Z1oFEA_at_mail.gmail.com>



Hi.

We are playing around with this at the moment. This is a very rough plan, but I'm interested to get any feedback if someone out there knows better.

Development:

How to get apps exported consistently? Humans have a habit of forgetting to pick the right options. :) Use APEXExport.

https://oracle-base.com/articles/misc/apexexport

Presumably, it's going into Git. We use BitBucket, but anything will do.

Deployment:

The export gives you a SQL file, so you can just run it in a database. You can manually script a load, but it makes sense to include this into a normal database deploy process. There are a number of things you can use here. I know Flyway is popular, but we are starting to use Liquibase. These articles are not "live", as I'm waiting for a SQLcl bug to be fixed to release both, but the bug doesn't affect how I normally use SQLcl for this task.

https://oracle-base.com/articles/misc/liquibase-automating-your-database-deployments

https://oracle-base.com/articles/misc/sqlcl-automating-your-database-deployments-using-sqlcl-and-liquibase

We will probably use the SQLcl version going forward, as it's a little neater than the original implementation IMHO.

The good thing about Liquibase (and others) is you can make the APEX deployment part of your normal process, which includes table and code changes and seed data scripts. The changelog controls the order the stuff is loaded into the database, so the commit of a change the changelog will trigger the CI/CD pipeline. We use TeamCity, but I use GitLab Pipelines for one project. They all do pretty much the same thing. So the pipeline will do something like this:

  • Pull the latest stuff from Git for the relevant branch. (DDL, DML, stored procedures etc.)
  • Run Liquibase using the changelog, which applies everything (not already applied) in order.

We do CI/CD for Java and I use it for an infrastructure project where it redeploys apps to an infrastructure build on Docker. We have all the pieces for this APEX deployment, but haven't yet threaded it all together. I don't think it will be hard to finalise the set up, but getting people on-bard to use it instead of doing their typical random crap is a bigger task. :) The issue is you really need everyone on board for CI/CD to work properly and a lot of our database development has very little discipline. The middle tier folks have more commitment to this sort of stuff.

Cheers

Tim...

On Fri, Jan 3, 2020 at 4:48 AM Ethan Post <post.ethan_at_gmail.com> wrote:

> So I am playing around with Apex, impressed so far. The questions are
> coming up in terms of how one builds a CI/CD/upgrade/patch pipeline with
> APEX.
>
> Some tables contain seed data? Where is that stored? How to I ensure
> things like old see data is updated in case A, in case B left alone if
> exists, in case C, entire table is replaced?
>
> Additions/deletions of columns over time. How are the changes managed. How
> do I inject conversion script before or after.
>
> So basically all the complexities that come with managing an application
> that is alive in the open at multiple customer sites (hot patches and all),
> and make a change, build, and deploy, reliably.
>
> Looking for a resource which covers this type of content and deals with
> plenty of use cases and edge cases.
>
> Does this exist? If so please let me know.
>
> Thanks,
> Ethan Post
> e-t-h-a-n.com
> _at_poststop
>
>
>

--
http://www.freelists.org/webpage/oracle-l
Received on Fri Jan 03 2020 - 09:15:30 CET

Original text of this message