Re: Oracle Apex Resource/Links Needed

  • From: Ethan Post <post.ethan@xxxxxxxxx>
  • To: Tim Hall <tim@xxxxxxxxxxxxxxx>
  • Date: Fri, 3 Jan 2020 09:20:38 -0600

Big thanks. This is good.

On Fri, Jan 3, 2020 at 2:15 AM Tim Hall <tim@xxxxxxxxxxxxxxx> wrote:

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@xxxxxxxxx> 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
@poststop



Other related posts: