SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Continuously Delivering
APEX Applications
APEX World 2018 Rotterdam
Agenda
• Introduction
• Managing source code
• Flyway
• APEX
• Jenkins
Partner SMART4Solutions
smartens@smart4solutions.nl
Sergei MartensFrans Jacobs
Software Architect VTTI
fja@vtti.com
Customer requirements
1. Every forth night a deployment of the software to production
2. Shared development database
3. Multiple teams working on the same application(s)
4. Be able to bring a specific features to test as soon as possible
Challenges
• APEX application exports insufficient (includes work in progress from other developers)
• DEV instable due to working drafts from other developers
• Many iterations of deployments
• Deal with failing deployments
• Deployment should be in a transaction (rollback when failing)
Managing the source code
Branch Strategy:
1. Every developer programs in own
Feature Branch
2. When finished merge request for review
3. When review ok, Feature is merged to
Develop
4. Develop merged into Release when
enough features developed for a release
after QA
Demo Feature request
Demo Feature request
Branch strategy
• Each environment has its own branch
• The features become more stable the higher the environments
1. Development
2. Test
3. Acceptance
4. Production
Deployment street
Team 1
Team 2
Integration
Deploy
(dev)
TEST
deploy
ACC
deploy
PROD
deploy
1. Feature branch merged into DEV branch
2. DEV branch merged into TEST branch
3. TEST branch merged into ACC branch
4. ACC branch merged into master
1. 2. 3. 4.
Database version management
• To know what has been deployed on the database
• To know what will be deployed, before actually doing it
• Track changes in the database after deployment
Introducing Flyway
• Open source project for migrating databases
• Flyway keeps track of what has been
installed
• Light weight
• URL: https://flywaydb.org/
Flyway – versioned scripts
Used for:
• Structural changes
• i.e. “create”, “alter”, “drop” …
• Insert of reference data
• User data corrections
Prerequisites:
• Must have a unique version.
• Is executed only once
• Script filename should be like:
V<version>__<name>.sql
• Applied in order of version
CREATE TABLE employee (
id NUMBER NOT NULL PRIMARY KEY,
name VARCHAR2(255) NOT NULL,
salary NUMBER NOT NULL
);
V1_Employees.sql
Flyway – repeatable scripts
Used for:
• Everything with “create or replace”, like
packages, views, triggers, etc.
Prerequisites:
• Does not have a version.
• Is executed when checksum changes
• Script filename should be like:
R__<name>.sql
• Applied alphabetical order
• Are applied after the versioned migrations
CREATE OR REPLACE view employees_v
AS
SELECT * FROM employees
R_Employees_v.sql
Flyway – metadata
Demo
DemoDemo
CD with APEX - Setup
• Every developer is a Workspace developer.
Used for page locking
• Workspace export to each environment
All workspaces need to have the same ID in all environment so deployment
does not break
• Start with empty application
Deleted pages are removed automatically during installation
Project setup
• Divide into folders based on technology
• Sub divide based on functionality
CD with APEX – Developing process
1. Create Feature Branch
2. Lock page before start
3. Export page to FB when finished (with same ID’s)
4. Push to Remote Feature Branch
5. Create Merge Request
6. Unlock page when merged into Development Branch
Demo APEX
Demo APEX
Rule #1
If you can do it in the database, do it in
the database!
-Use database package for List of Values
-Navigation in separate table
-…
Integration Build steps
Start Docker Stop DockerGIT Checkout DB
installation
Copy filesAPEX import QA Export APEX
Why Docker?
• Easy rollback of failing deployment and/or automated tests
• Docker is a application “virtualizer” (mini vm with one application)
• Each time a new container is started, the database is in the “initial” state
• You want to test the “real” migration as it should happen on the target environment
Jenkins
• Open Source automation server
• Plugin architecture:
• GIT
• Docker (start/stop containers)
• Flyway
• ssh (static files)
• Shell script (sqlcl APEX import/export)
Build sequence
Director job, perform GIT checkout
Migrate core schema with flyway
Migrate APEX UI schema with flyway
Copy static files to Docker
Import APEX components into Docker
Check with APEX Advisor
Export Applications to GIT
Demo
Demo
Thank You!

Weitere ähnliche Inhalte

Was ist angesagt?

Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Christos Matskas
 
Reactive Web Development with Spring Boot 2
Reactive Web Development with Spring Boot 2Reactive Web Development with Spring Boot 2
Reactive Web Development with Spring Boot 2Mike Melusky
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5mbaric
 
Power shell saturday ravikanth
Power shell saturday  ravikanthPower shell saturday  ravikanth
Power shell saturday ravikanthRavikanth Chaganti
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsDaniel Stange
 
Reusable Build Scripts for Managed Package Development (October 14, 2014)
Reusable Build Scripts for Managed Package Development (October 14, 2014)Reusable Build Scripts for Managed Package Development (October 14, 2014)
Reusable Build Scripts for Managed Package Development (October 14, 2014)Salesforce Partners
 
Database Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDatabase Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDan Stine
 
Servlets made easy. 
Write once and run everywhere.
Servlets made easy. 
Write once and run everywhere.Servlets made easy. 
Write once and run everywhere.
Servlets made easy. 
Write once and run everywhere.ICON UK EVENTS Limited
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinVMware Tanzu
 
Overview of Java EE
Overview of Java EEOverview of Java EE
Overview of Java EEKohei Nozaki
 
FlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewFlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewDalibor Blazevic
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices developmentChavdar Baikov
 
Find your data - use GraphDB capabilities in XPages applications - and beyond
Find your data - use GraphDB capabilities in XPages applications - and beyond	Find your data - use GraphDB capabilities in XPages applications - and beyond
Find your data - use GraphDB capabilities in XPages applications - and beyond ICON UK EVENTS Limited
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
Database migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseDatabase migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseLars Östling
 

Was ist angesagt? (20)

Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block
 
Reactive Web Development with Spring Boot 2
Reactive Web Development with Spring Boot 2Reactive Web Development with Spring Boot 2
Reactive Web Development with Spring Boot 2
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
 
Power shell saturday ravikanth
Power shell saturday  ravikanthPower shell saturday  ravikanth
Power shell saturday ravikanth
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
 
Flyway
FlywayFlyway
Flyway
 
Agile sites311training
Agile sites311trainingAgile sites311training
Agile sites311training
 
Reusable Build Scripts for Managed Package Development (October 14, 2014)
Reusable Build Scripts for Managed Package Development (October 14, 2014)Reusable Build Scripts for Managed Package Development (October 14, 2014)
Reusable Build Scripts for Managed Package Development (October 14, 2014)
 
Web presentation
Web presentationWeb presentation
Web presentation
 
Database Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDatabase Migrations with Gradle and Liquibase
Database Migrations with Gradle and Liquibase
 
Servlets made easy. 
Write once and run everywhere.
Servlets made easy. 
Write once and run everywhere.Servlets made easy. 
Write once and run everywhere.
Servlets made easy. 
Write once and run everywhere.
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with Kotlin
 
Overview of Java EE
Overview of Java EEOverview of Java EE
Overview of Java EE
 
FlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewFlexDeploy Product Technical Overview
FlexDeploy Product Technical Overview
 
Mini Training Flyway
Mini Training FlywayMini Training Flyway
Mini Training Flyway
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
Practical Application of API-First in microservices development
Practical Application of API-First in microservices developmentPractical Application of API-First in microservices development
Practical Application of API-First in microservices development
 
Find your data - use GraphDB capabilities in XPages applications - and beyond
Find your data - use GraphDB capabilities in XPages applications - and beyond	Find your data - use GraphDB capabilities in XPages applications - and beyond
Find your data - use GraphDB capabilities in XPages applications - and beyond
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
Database migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseDatabase migrations with Flyway and Liquibase
Database migrations with Flyway and Liquibase
 

Ähnlich wie Apex world 2018 continuously delivering APEX

APEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfAPEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfRichard Martens
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUlrich Krause
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014scolestock
 
CICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overviewCICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overviewpdalian
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the BasicsUlrich Krause
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011Bachkoutou Toutou
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the BasicsUlrich Krause
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as CodeRobert Greiner
 
Ankit Chohan - Java
Ankit Chohan - JavaAnkit Chohan - Java
Ankit Chohan - JavaAnkit Chohan
 
OUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryOUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryBrendan Tierney
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudAndrew Coleman
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointJeremy Thake
 

Ähnlich wie Apex world 2018 continuously delivering APEX (20)

APEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdfAPEX Application Lifecycle and Deployment 20220714.pdf
APEX Application Lifecycle and Deployment 20220714.pdf
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014
 
ASP.NET vNext
ASP.NET vNextASP.NET vNext
ASP.NET vNext
 
Let's server your Data
Let's server your DataLet's server your Data
Let's server your Data
 
CICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overviewCICD with SharePoint SPFx A useful overview
CICD with SharePoint SPFx A useful overview
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the Basics
 
Stress Free Deployment - Confoo 2011
Stress Free Deployment  - Confoo 2011Stress Free Deployment  - Confoo 2011
Stress Free Deployment - Confoo 2011
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Ankit Chohan - Java
Ankit Chohan - JavaAnkit Chohan - Java
Ankit Chohan - Java
 
OUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryOUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th January
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Acing application lifecycle management in SharePoint
Acing application lifecycle management in SharePointAcing application lifecycle management in SharePoint
Acing application lifecycle management in SharePoint
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 

Mehr von Sergei Martens

Web accessibility for APEX developers
Web accessibility for APEX developersWeb accessibility for APEX developers
Web accessibility for APEX developersSergei Martens
 
DOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developersDOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developersSergei Martens
 
The experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migrationThe experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migrationSergei Martens
 
Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.Sergei Martens
 
Oracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsOracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsSergei Martens
 
Artikel APEX & Ext JS
Artikel APEX & Ext JS Artikel APEX & Ext JS
Artikel APEX & Ext JS Sergei Martens
 
Presentatie apex en extjs
Presentatie apex en extjsPresentatie apex en extjs
Presentatie apex en extjsSergei Martens
 
SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014Sergei Martens
 

Mehr von Sergei Martens (9)

Web accessibility for APEX developers
Web accessibility for APEX developersWeb accessibility for APEX developers
Web accessibility for APEX developers
 
DOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developersDOAG 10 UI commendments for APEX developers
DOAG 10 UI commendments for APEX developers
 
The experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migrationThe experience from a successful Forms to APEX migration
The experience from a successful Forms to APEX migration
 
Apex World 2015
Apex World 2015Apex World 2015
Apex World 2015
 
Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.Create fancy applications with the new Twitter Bootstrap theme for Apex.
Create fancy applications with the new Twitter Bootstrap theme for Apex.
 
Oracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsOracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google Apps
 
Artikel APEX & Ext JS
Artikel APEX & Ext JS Artikel APEX & Ext JS
Artikel APEX & Ext JS
 
Presentatie apex en extjs
Presentatie apex en extjsPresentatie apex en extjs
Presentatie apex en extjs
 
SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014SMART4apex company presentation APEX world convention March 25 2014
SMART4apex company presentation APEX world convention March 25 2014
 

Kürzlich hochgeladen

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 

Kürzlich hochgeladen (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 

Apex world 2018 continuously delivering APEX

  • 2. Agenda • Introduction • Managing source code • Flyway • APEX • Jenkins
  • 4.
  • 5. Customer requirements 1. Every forth night a deployment of the software to production 2. Shared development database 3. Multiple teams working on the same application(s) 4. Be able to bring a specific features to test as soon as possible
  • 6. Challenges • APEX application exports insufficient (includes work in progress from other developers) • DEV instable due to working drafts from other developers • Many iterations of deployments • Deal with failing deployments • Deployment should be in a transaction (rollback when failing)
  • 7. Managing the source code Branch Strategy: 1. Every developer programs in own Feature Branch 2. When finished merge request for review 3. When review ok, Feature is merged to Develop 4. Develop merged into Release when enough features developed for a release after QA
  • 10. Branch strategy • Each environment has its own branch • The features become more stable the higher the environments 1. Development 2. Test 3. Acceptance 4. Production
  • 11. Deployment street Team 1 Team 2 Integration Deploy (dev) TEST deploy ACC deploy PROD deploy 1. Feature branch merged into DEV branch 2. DEV branch merged into TEST branch 3. TEST branch merged into ACC branch 4. ACC branch merged into master 1. 2. 3. 4.
  • 12. Database version management • To know what has been deployed on the database • To know what will be deployed, before actually doing it • Track changes in the database after deployment
  • 13. Introducing Flyway • Open source project for migrating databases • Flyway keeps track of what has been installed • Light weight • URL: https://flywaydb.org/
  • 14. Flyway – versioned scripts Used for: • Structural changes • i.e. “create”, “alter”, “drop” … • Insert of reference data • User data corrections Prerequisites: • Must have a unique version. • Is executed only once • Script filename should be like: V<version>__<name>.sql • Applied in order of version CREATE TABLE employee ( id NUMBER NOT NULL PRIMARY KEY, name VARCHAR2(255) NOT NULL, salary NUMBER NOT NULL ); V1_Employees.sql
  • 15. Flyway – repeatable scripts Used for: • Everything with “create or replace”, like packages, views, triggers, etc. Prerequisites: • Does not have a version. • Is executed when checksum changes • Script filename should be like: R__<name>.sql • Applied alphabetical order • Are applied after the versioned migrations CREATE OR REPLACE view employees_v AS SELECT * FROM employees R_Employees_v.sql
  • 17. Demo
  • 19. CD with APEX - Setup • Every developer is a Workspace developer. Used for page locking • Workspace export to each environment All workspaces need to have the same ID in all environment so deployment does not break • Start with empty application Deleted pages are removed automatically during installation
  • 20. Project setup • Divide into folders based on technology • Sub divide based on functionality
  • 21. CD with APEX – Developing process 1. Create Feature Branch 2. Lock page before start 3. Export page to FB when finished (with same ID’s) 4. Push to Remote Feature Branch 5. Create Merge Request 6. Unlock page when merged into Development Branch
  • 24. Rule #1 If you can do it in the database, do it in the database! -Use database package for List of Values -Navigation in separate table -…
  • 25. Integration Build steps Start Docker Stop DockerGIT Checkout DB installation Copy filesAPEX import QA Export APEX
  • 26. Why Docker? • Easy rollback of failing deployment and/or automated tests • Docker is a application “virtualizer” (mini vm with one application) • Each time a new container is started, the database is in the “initial” state • You want to test the “real” migration as it should happen on the target environment
  • 27. Jenkins • Open Source automation server • Plugin architecture: • GIT • Docker (start/stop containers) • Flyway • ssh (static files) • Shell script (sqlcl APEX import/export)
  • 28. Build sequence Director job, perform GIT checkout Migrate core schema with flyway Migrate APEX UI schema with flyway Copy static files to Docker Import APEX components into Docker Check with APEX Advisor Export Applications to GIT
  • 29. Demo
  • 30. Demo
  • 31.

Hinweis der Redaktion

  1. 9:06
  2. 9:02 F & S
  3. 9:04 F
  4. 9:06 S
  5. 9:08 S
  6. 9:10 S
  7. 9:12 Demo movie create feature branche with one or two objects, a change and a commit push pull request from feature to dev 90 S
  8. Demo movie create feature branche with one or two objects, a change and a commit push pull request from feature to dev 90 s
  9. 9:14 Branch strategy work towards deployment to other environments S
  10. 15 m (09:15) S
  11. (09:16) You also need to manage the database version. Do you know what has been installed? Do you know in which status your database is? F
  12. 09:18 Why should we use Flyway? Flyway only executes scrips that are new or has been changed. Flyway keeps track of what has been installed. It uses a metadata table to store which migrations are executed. Flyway can execute scripts directly from the GIT folder structure There no need to create artifacts or copy scripts to release folders etc… Use the Tagging/Branching facilities which are provided by GIT to mark milestones. F
  13. 09:14 Flyway basically knows 2 types of migrations The first one is the Versioned migration. Versioned migrations are used for structural changes like create, alter or drop. But you can also use this for inserts of reference data or to perform user data corrections. A versioned migration script will be executed only once! F
  14. 09:18 The second migration type is the repeatable migration. A repeatable migration is typically used for code in the database; like functions, procedures, packages and views. Repeatable migrations are only executed when it is new or when the checksum of the script file differs with the one stored in the metadata table. F
  15. 09:20 How does this than look First migration will install the metadata table. Each migration is registered in the metadata table. Flyway has a mechanism to start using it on legacy database. F
  16. In the demo I would like you to show what basically happens when you create a few objects in the database. Than I will change the objects to demonstrate a change. F
  17. (09:25) Flyway info command shows what will be migrated (pending migations) then migrate Show versioned plus repeatavle migation in metadata table. F
  18. S
  19. S
  20. S
  21. S
  22. S
  23. S
  24. F This is the (simplified) flow schema of the build street. Step 1: get the source code from GIT Step 2: start a Docker container which contains a Oracle database with APEX. The reason for Docker will come the next slide. Step 3: migrate the database Step 4: perform the APEX component import (the component files are imported into the Docker APEX workspace) the application(s) are assembled… Step 5: copy the static file to the Docker APEX webserver. Static files are icons, java script libraries etc… Step 6: run the APEX Advisor to check application completeness Step 7: export the APEX Application(s) as full application export, put them in GIT. These application files are used for deployment in the target environments… Step 8: stop and remove the Docker container
  25. Why Docker? During the integration phase of the development cycle the source code is usually instable. As we try to integrate the code (from multiple developers) as often as possible the build fails a lot of times. You want to spent time to repair the mess. First to enable easy rollback when migrations fail. Provide stable test data. The database structure and data are in a known state when the container is started. You can test a migration path as the database state mimics the state of the production database Other benefits Docker is light weight compared with other solutions like a VM F
  26. To automate the deployment process we use Jenkins. Jenkins is the build server. Jenkins is basically an automated script runner which performs automatically the full software roll-out. Jenkins has a plugin structure to execute dedicated tasks There are plugins for: Running shell scripts Windows bath scripts Flyway Docker sFTP/ssh No plugin yet for APEX this is solved with shell scripts and sqlcl F Jenkins has an active community
  27. In the next demo you will see Jenkins building the software. Here you see the steps which are executed. We configured jobs for each task F
  28. In this demo I would like to show you what actually happens when the Jobs are executed by Jenkins F
  29. Show the job (101) which sceen parts of flyway, apex import and rollout F
  30. F