SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Jenkins Pipeline
meets Oracle
Oliver Lemm
Rotterdam, 26-MAR-2019
enabling the adaptive enterprise
Key Facts
Independent Technology House
with Cross-Industry Expertise
Headquarter
Ratingen
230 employees
Founded
1994
Top Company for Trainees &
Students
Privately-Owned
Corporation
Oracle Platinum
Partner
Microsoft Gold
Partner33 Mio. Euro
Revenue in 2018
Germany‘s number
1 in APEX
Branches
Frankfurt & Cologne
2
3
about me
 Oliver Lemm, Business Unit Leader APEX
 Born 1980, married, four Children, Place of Residenz Dinslaken
 since 2.2007 at the MT AG in Ratingen
 Working with APEX since 2007
 Leading in Distribution/Marketing/Delivery for APEX Projects
 https://apex.mt-ag.com
 Doing presentations at DOAG Conference, APEX World, DOAG APEX Connect & ODTUG
KScope
1. Introduction in Jenkins
2. What is a Pipeline
3. Creating a Pipeline
4. Jenkinsfile
5. Moving from Jenkins Jobs to Pipeline
6. Complex Pipeline
7. After Jenkins Pipeline
4
Agenda
5
https://jenkins.io/
Jenkins
“a leightweight tool which is a GUI for your automated processes”
“used for continuous integration and continuous delivery”
“easy to integrate version control”
“free software”
“can be compared with gitlab or atlassian bamboo”
6
what is Jenkins?
Job
“declarative” defined process
build step
calling a batch or running a single http request
one or more build steps are part of a job
Build
every time running a process results in a Build
7
keywords in Jenkins …
8
Demo
exporting & importing APEX applications
generating patchfiles for your application/schema objects
using datapump
running backend & frontend tests
creating users, tablespaces, grants
deploying scripts to different databases
9
using Jenkins in Oracle for …
defining one or multiple jobs in a script
Domain Specific Language (DSL)
pipeline output
10
what is Pipeline?
durable
pausable
versatile
extensible
versionable
11
advantages of pipeline are …
comparing Pipeline vs Job
12
new item “pipeline”
creating a pipeline (1)
13
creating a pipeline (2)
pipeline {
agent {
label {
label ""
customWorkspace "C:/jenkins_projects/cicd"
}
}
stages {
stage('Export APEX App') {
steps {
withCredentials([usernamePassword(credentialsId: 'db_schema_demo_dev',
passwordVariable: 'db_schema_pw', usernameVariable: 'db_schema_user')]) {
bat '''cd trunkapex
..batchexport_apex_app_sqlcl %db_schema_user% %db_schema_pw% pdb1 %app_id%'''
}
}
}
}
14
simple example
Jenkinsfile
agent any
agent none
agent { label “windows” }
agent {
customWorkspace “c:/Jenkins_projects/cicd”
}
agent {
docker {
image “maven:3-alpine”
}
}
15
agent
Jenkinsfile
1) all stages / steps will run on any agent
2) each stage will run on it’s own agent
3) for parallel processes multiple agents can
be used and named
4) running jobs in a special workspace the
agent should be defined with a
customWorkspace
5) using docker you can define different
environments based on docker images
 every pipeline must be defined in stages
 every “stages” can have 1-x stage
 a stage is a functional bracket
 every stage is visible in the Jenkins output
16
stage / stages
Jenkinsfile
stages {
stage ("Prepare") { ... }
stage("PROD - Export App") { ... }
stage("PROD - Datapump Export") { ... }
stage("Move Dumps") { ... }
stage("TEST - Delete Old DB Objects") { ... }
stage("TEST - Datapump Import") { ... }
stage("TEST - Import App") {...}
}
 a step is a technical “bracket”
 a step is inside a stage
 every stage can have 1-x steps, mostly one stage
has 1 step
 a step can be a batch or shell or even a plugin call
https://jenkins.io/doc/pipeline/steps/
17
step
Jenkinsfile
stages {
stage(“run my batch“) {
steps {
bat '''export_apex_app_sqlcl'''
}
}
}
18
Snippet Generator
Jenkinsfile
 using passwords in a save way
 passwords itself are safed encrypted inside Jenkins
 credentials are only useable inside the “brackets”
 the password ID should be defined and not a random given number
 passwords are not readable inside the command line
19
credentials
Jenkinsfile
steps {
withCredentials([usernamePassword(credentialsId: 'db_schema_demo_dev',
passwordVariable: 'db_schema_pw',
usernameVariable: 'db_schema_user')]) {
bat '''cd trunkapex
..batchexport_apex_app_sqlcl %db_schema_user% %db_schema_pw% pdb1 %app_id%'''
}
}
20
database or other technical users
Credentials
 searching for error after each stage
 setting build “FAILURE”, “UNSTABLE” or “SUCCESS”
21
errorhandling by stage
Jenkinsfile
stage("Create Grants and Synonyms") {
steps {
bat 'REM Create Grants and Synonyms STARTED'
bat '''batchcreate_grants_synonyms'''
bat 'REM Create Grants and Synonyms FINISHED'
script {
String[] errors = ["ORA-"]
checkConsoleOutputAfterBuildStep("Create Grants and Synonyms STARTED",
"Create Grants and Synonyms FINISHED", errors,
"Create Grants and Synonyms Failed!", "FAILURE")
}
}
}
 Post processing after
every stage
 Overall one post
processing at the end of
the pipeline
22
errorhandling by pipeline
Jenkinsfile
pipeline {
stages {
stage('do something') { …
post {
success { bsNotifySuccessful("Set up Jobcontrol Environment") }
unstable { bsNotifyUnstable("Set up Jobcontrol Environment") }
aborted { bsNotifyAborted("Set up Jobcontrol Environment") }
failure { bsNotifyFailed("Set up Jobcontrol Environment") }
}
}
post { success { notifySuccessful() }
unstable { notifyUnstable() }
aborted { notifyAborted() }
failure { notifyFailed() }
}
}
}
 running steps by condition
 using conditions for environments
23
conditional
Jenkinsfile
stage(‘conditional by environment') {
agent label:'test-node' when {
environment name: 'NAME', value: 'this'
}
steps {
echo 'run only if the env name and value
matches'
}
}
24
start from stage
Pipeline
 is groovy code
 validate code with pipeline Linter
25
Jenkinsfile
pipeline {
agent {
label {
label "„
customWorkspace "C:/projects/uit_fpp/svn„
}
}
stages {
stage('110 - Drop Users and Tablespaces') {
steps {
script {
def drop_users_and_tablespaces = build job: '110_drop_users_and_tablespaces',
parameters: [string(name: 'environment', value: "${params.environment}"),
string(name: 'start', value: 'Ja')]
currentBuild.result = drop_users_and_tablespaces.result
}
}
}
stage('120 - Create Users and Tablespaces') { … }
}
}
26
pipeline starting standard Jenkins jobs
moving from Jobs to Pipeline
27
overview
Looking into a complex scenario
DEMO
28
logs by stage
Looking into a complex scenario
29
build history, trend and timeline
Looking into a complex scenario
 … more flexible
 … code
 … versionable
 … not declarative any more
 … still jenkins
30
Pipeline is
Conclusion
pictures by Jenkins.io
31
Blue Ocean - https://jenkins.io/projects/blueocean/
and after Pipeline (1)
32
Jenkins X
and after Pipeline (2)
https://jenkins.io/projects/jenkins-x
33
APEX Migration Workshop - https://apex.mt-ag.com/apex/f?p=276:3
… after APEX World (1)
34
APEX Connect 2019 - https://apex.doag.org
… after APEX World (2)
@OliverLemm
https://www.linkedin.com/in/oliverlemm
https://www.xing.com/profile/Oliver_Lemm
https://oliverlemm.blogspot.com/
enabling the adaptive enterprise

Weitere ähnliche Inhalte

Was ist angesagt?

Portainer.io Intro | Into The Box 2018
Portainer.io Intro | Into The Box 2018Portainer.io Intro | Into The Box 2018
Portainer.io Intro | Into The Box 2018Dillon Slaughter
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsCasey Lee
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginnersBugRaptors
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기InfraEngineer
 
CI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cdCI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cdBilly Yuen
 
Introduction to VueJS & Vuex
Introduction to VueJS & VuexIntroduction to VueJS & Vuex
Introduction to VueJS & VuexBernd Alter
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesGabriel Carro
 

Was ist angesagt? (20)

TypeScript
TypeScriptTypeScript
TypeScript
 
Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
 
Docker Compose Explained
Docker Compose ExplainedDocker Compose Explained
Docker Compose Explained
 
Portainer.io Intro | Into The Box 2018
Portainer.io Intro | Into The Box 2018Portainer.io Intro | Into The Box 2018
Portainer.io Intro | Into The Box 2018
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
 
Spring cloud config
Spring cloud configSpring cloud config
Spring cloud config
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기주니어의 쿠버네티스 생태계에서 살아남기
주니어의 쿠버네티스 생태계에서 살아남기
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
CI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cdCI:CD in Lightspeed with kubernetes and argo cd
CI:CD in Lightspeed with kubernetes and argo cd
 
Introduction to VueJS & Vuex
Introduction to VueJS & VuexIntroduction to VueJS & Vuex
Introduction to VueJS & Vuex
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 

Ähnlich wie Jenkins Pipeline meets Oracle

Jenkins Pipelines Advanced
Jenkins Pipelines AdvancedJenkins Pipelines Advanced
Jenkins Pipelines AdvancedOliver Lemm
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidenceJohn Congdon
 
Jenkins Days - Workshop - Let's Build a Pipeline - Los Angeles
Jenkins Days - Workshop - Let's Build a Pipeline - Los AngelesJenkins Days - Workshop - Let's Build a Pipeline - Los Angeles
Jenkins Days - Workshop - Let's Build a Pipeline - Los AngelesAndy Pemberton
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline Docker, Inc.
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseRalf Sternberg
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyUlrich Krause
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresFrits Van Der Holst
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Longericlongtx
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3kognate
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Kurt Madel
 
Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Mike Villiger
 
Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Roberto Franchini
 
Build pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLBuild pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLAnton Arhipov
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containersinside-BigData.com
 
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...Sencha
 
DockerCon 17 EU: Modernizing .NET Apps with Docker
DockerCon 17 EU: Modernizing .NET Apps with DockerDockerCon 17 EU: Modernizing .NET Apps with Docker
DockerCon 17 EU: Modernizing .NET Apps with DockerElton Stoneman
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slidesDavid Barreto
 
Enabling Microservices @Orbitz - DockerCon 2015
Enabling Microservices @Orbitz - DockerCon 2015Enabling Microservices @Orbitz - DockerCon 2015
Enabling Microservices @Orbitz - DockerCon 2015Steve Hoffman
 
Modernizing .NET Apps
Modernizing .NET AppsModernizing .NET Apps
Modernizing .NET AppsDocker, Inc.
 

Ähnlich wie Jenkins Pipeline meets Oracle (20)

Jenkins Pipelines Advanced
Jenkins Pipelines AdvancedJenkins Pipelines Advanced
Jenkins Pipelines Advanced
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
Jenkins Days - Workshop - Let's Build a Pipeline - Los Angeles
Jenkins Days - Workshop - Let's Build a Pipeline - Los AngelesJenkins Days - Workshop - Let's Build a Pipeline - Los Angeles
Jenkins Days - Workshop - Let's Build a Pipeline - Los Angeles
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easy
 
Moving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventuresMoving from Jenkins 1 to 2 declarative pipeline adventures
Moving from Jenkins 1 to 2 declarative pipeline adventures
 
Jenkins days workshop pipelines - Eric Long
Jenkins days workshop  pipelines - Eric LongJenkins days workshop  pipelines - Eric Long
Jenkins days workshop pipelines - Eric Long
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
 
Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019Chicago DevOps Meetup Nov2019
Chicago DevOps Meetup Nov2019
 
Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!
 
Build pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSLBuild pipelines with TeamCity and Kotlin DSL
Build pipelines with TeamCity and Kotlin DSL
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
SenchaCon 2016: Advanced Techniques for Buidling Ext JS Apps with Electron - ...
 
DockerCon 17 EU: Modernizing .NET Apps with Docker
DockerCon 17 EU: Modernizing .NET Apps with DockerDockerCon 17 EU: Modernizing .NET Apps with Docker
DockerCon 17 EU: Modernizing .NET Apps with Docker
 
Angular performance slides
Angular performance slidesAngular performance slides
Angular performance slides
 
Gain more freedom when migrating from Camunda 7 to 8.pdf
Gain more freedom when migrating from Camunda 7 to 8.pdfGain more freedom when migrating from Camunda 7 to 8.pdf
Gain more freedom when migrating from Camunda 7 to 8.pdf
 
Enabling Microservices @Orbitz - DockerCon 2015
Enabling Microservices @Orbitz - DockerCon 2015Enabling Microservices @Orbitz - DockerCon 2015
Enabling Microservices @Orbitz - DockerCon 2015
 
Modernizing .NET Apps
Modernizing .NET AppsModernizing .NET Apps
Modernizing .NET Apps
 

Mehr von Oliver Lemm

Qualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfQualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfOliver Lemm
 
Qualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfQualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfOliver Lemm
 
APEX Page Items in detail
APEX Page Items in detailAPEX Page Items in detail
APEX Page Items in detailOliver Lemm
 
APEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenOliver Lemm
 
Das Universal Theme in APEX 19
Das Universal Theme in APEX 19Das Universal Theme in APEX 19
Das Universal Theme in APEX 19Oliver Lemm
 
REST mit APEX 18.1
REST mit APEX 18.1REST mit APEX 18.1
REST mit APEX 18.1Oliver Lemm
 
Schritt für Schritt ins Grid
Schritt für Schritt ins GridSchritt für Schritt ins Grid
Schritt für Schritt ins GridOliver Lemm
 
Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1Oliver Lemm
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentOliver Lemm
 
Mastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investmentMastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investmentOliver Lemm
 
Jetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEXJetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEXOliver Lemm
 
Wieder verschätzt?
Wieder verschätzt?Wieder verschätzt?
Wieder verschätzt?Oliver Lemm
 
Komplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitetKomplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitetOliver Lemm
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentOliver Lemm
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoOliver Lemm
 
How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?Oliver Lemm
 

Mehr von Oliver Lemm (20)

Qualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfQualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdf
 
Qualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfQualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdf
 
APEX Page Items in detail
APEX Page Items in detailAPEX Page Items in detail
APEX Page Items in detail
 
confirm & alert
confirm & alertconfirm & alert
confirm & alert
 
APEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurieren
 
APEX Migration
APEX MigrationAPEX Migration
APEX Migration
 
From Dev to Ops
From Dev to OpsFrom Dev to Ops
From Dev to Ops
 
Das Universal Theme in APEX 19
Das Universal Theme in APEX 19Das Universal Theme in APEX 19
Das Universal Theme in APEX 19
 
REST mit APEX 18.1
REST mit APEX 18.1REST mit APEX 18.1
REST mit APEX 18.1
 
Schritt für Schritt ins Grid
Schritt für Schritt ins GridSchritt für Schritt ins Grid
Schritt für Schritt ins Grid
 
Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1Migration ins Universal Theme 1.1
Migration ins Universal Theme 1.1
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union Investment
 
Mastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investmentMastering Universal Theme with corporate design from union investment
Mastering Universal Theme with corporate design from union investment
 
Jetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEXJetlag - Oracle Jet und APEX
Jetlag - Oracle Jet und APEX
 
Wieder verschätzt?
Wieder verschätzt?Wieder verschätzt?
Wieder verschätzt?
 
Komplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitetKomplexe Daten mit Oracle Jet einfach aufbereitet
Komplexe Daten mit Oracle Jet einfach aufbereitet
 
Mastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union InvestmentMastering Universal Theme with corporate design from Union Investment
Mastering Universal Theme with corporate design from Union Investment
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & Co
 
How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?
 
Enterprise APEX
Enterprise APEXEnterprise APEX
Enterprise APEX
 

Kürzlich hochgeladen

The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfFIDO Alliance
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsUXDXConf
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 

Kürzlich hochgeladen (20)

The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 

Jenkins Pipeline meets Oracle

  • 1. Jenkins Pipeline meets Oracle Oliver Lemm Rotterdam, 26-MAR-2019 enabling the adaptive enterprise
  • 2. Key Facts Independent Technology House with Cross-Industry Expertise Headquarter Ratingen 230 employees Founded 1994 Top Company for Trainees & Students Privately-Owned Corporation Oracle Platinum Partner Microsoft Gold Partner33 Mio. Euro Revenue in 2018 Germany‘s number 1 in APEX Branches Frankfurt & Cologne 2
  • 3. 3 about me  Oliver Lemm, Business Unit Leader APEX  Born 1980, married, four Children, Place of Residenz Dinslaken  since 2.2007 at the MT AG in Ratingen  Working with APEX since 2007  Leading in Distribution/Marketing/Delivery for APEX Projects  https://apex.mt-ag.com  Doing presentations at DOAG Conference, APEX World, DOAG APEX Connect & ODTUG KScope
  • 4. 1. Introduction in Jenkins 2. What is a Pipeline 3. Creating a Pipeline 4. Jenkinsfile 5. Moving from Jenkins Jobs to Pipeline 6. Complex Pipeline 7. After Jenkins Pipeline 4 Agenda
  • 6. “a leightweight tool which is a GUI for your automated processes” “used for continuous integration and continuous delivery” “easy to integrate version control” “free software” “can be compared with gitlab or atlassian bamboo” 6 what is Jenkins?
  • 7. Job “declarative” defined process build step calling a batch or running a single http request one or more build steps are part of a job Build every time running a process results in a Build 7 keywords in Jenkins …
  • 9. exporting & importing APEX applications generating patchfiles for your application/schema objects using datapump running backend & frontend tests creating users, tablespaces, grants deploying scripts to different databases 9 using Jenkins in Oracle for …
  • 10. defining one or multiple jobs in a script Domain Specific Language (DSL) pipeline output 10 what is Pipeline?
  • 14. pipeline { agent { label { label "" customWorkspace "C:/jenkins_projects/cicd" } } stages { stage('Export APEX App') { steps { withCredentials([usernamePassword(credentialsId: 'db_schema_demo_dev', passwordVariable: 'db_schema_pw', usernameVariable: 'db_schema_user')]) { bat '''cd trunkapex ..batchexport_apex_app_sqlcl %db_schema_user% %db_schema_pw% pdb1 %app_id%''' } } } } 14 simple example Jenkinsfile
  • 15. agent any agent none agent { label “windows” } agent { customWorkspace “c:/Jenkins_projects/cicd” } agent { docker { image “maven:3-alpine” } } 15 agent Jenkinsfile 1) all stages / steps will run on any agent 2) each stage will run on it’s own agent 3) for parallel processes multiple agents can be used and named 4) running jobs in a special workspace the agent should be defined with a customWorkspace 5) using docker you can define different environments based on docker images
  • 16.  every pipeline must be defined in stages  every “stages” can have 1-x stage  a stage is a functional bracket  every stage is visible in the Jenkins output 16 stage / stages Jenkinsfile stages { stage ("Prepare") { ... } stage("PROD - Export App") { ... } stage("PROD - Datapump Export") { ... } stage("Move Dumps") { ... } stage("TEST - Delete Old DB Objects") { ... } stage("TEST - Datapump Import") { ... } stage("TEST - Import App") {...} }
  • 17.  a step is a technical “bracket”  a step is inside a stage  every stage can have 1-x steps, mostly one stage has 1 step  a step can be a batch or shell or even a plugin call https://jenkins.io/doc/pipeline/steps/ 17 step Jenkinsfile stages { stage(“run my batch“) { steps { bat '''export_apex_app_sqlcl''' } } }
  • 19.  using passwords in a save way  passwords itself are safed encrypted inside Jenkins  credentials are only useable inside the “brackets”  the password ID should be defined and not a random given number  passwords are not readable inside the command line 19 credentials Jenkinsfile steps { withCredentials([usernamePassword(credentialsId: 'db_schema_demo_dev', passwordVariable: 'db_schema_pw', usernameVariable: 'db_schema_user')]) { bat '''cd trunkapex ..batchexport_apex_app_sqlcl %db_schema_user% %db_schema_pw% pdb1 %app_id%''' } }
  • 20. 20 database or other technical users Credentials
  • 21.  searching for error after each stage  setting build “FAILURE”, “UNSTABLE” or “SUCCESS” 21 errorhandling by stage Jenkinsfile stage("Create Grants and Synonyms") { steps { bat 'REM Create Grants and Synonyms STARTED' bat '''batchcreate_grants_synonyms''' bat 'REM Create Grants and Synonyms FINISHED' script { String[] errors = ["ORA-"] checkConsoleOutputAfterBuildStep("Create Grants and Synonyms STARTED", "Create Grants and Synonyms FINISHED", errors, "Create Grants and Synonyms Failed!", "FAILURE") } } }
  • 22.  Post processing after every stage  Overall one post processing at the end of the pipeline 22 errorhandling by pipeline Jenkinsfile pipeline { stages { stage('do something') { … post { success { bsNotifySuccessful("Set up Jobcontrol Environment") } unstable { bsNotifyUnstable("Set up Jobcontrol Environment") } aborted { bsNotifyAborted("Set up Jobcontrol Environment") } failure { bsNotifyFailed("Set up Jobcontrol Environment") } } } post { success { notifySuccessful() } unstable { notifyUnstable() } aborted { notifyAborted() } failure { notifyFailed() } } } }
  • 23.  running steps by condition  using conditions for environments 23 conditional Jenkinsfile stage(‘conditional by environment') { agent label:'test-node' when { environment name: 'NAME', value: 'this' } steps { echo 'run only if the env name and value matches' } }
  • 25.  is groovy code  validate code with pipeline Linter 25 Jenkinsfile
  • 26. pipeline { agent { label { label "„ customWorkspace "C:/projects/uit_fpp/svn„ } } stages { stage('110 - Drop Users and Tablespaces') { steps { script { def drop_users_and_tablespaces = build job: '110_drop_users_and_tablespaces', parameters: [string(name: 'environment', value: "${params.environment}"), string(name: 'start', value: 'Ja')] currentBuild.result = drop_users_and_tablespaces.result } } } stage('120 - Create Users and Tablespaces') { … } } } 26 pipeline starting standard Jenkins jobs moving from Jobs to Pipeline
  • 27. 27 overview Looking into a complex scenario DEMO
  • 28. 28 logs by stage Looking into a complex scenario
  • 29. 29 build history, trend and timeline Looking into a complex scenario
  • 30.  … more flexible  … code  … versionable  … not declarative any more  … still jenkins 30 Pipeline is Conclusion pictures by Jenkins.io
  • 31. 31 Blue Ocean - https://jenkins.io/projects/blueocean/ and after Pipeline (1)
  • 32. 32 Jenkins X and after Pipeline (2) https://jenkins.io/projects/jenkins-x
  • 33. 33 APEX Migration Workshop - https://apex.mt-ag.com/apex/f?p=276:3 … after APEX World (1)
  • 34. 34 APEX Connect 2019 - https://apex.doag.org … after APEX World (2)