SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Jacek Gębal
twitter: @GebalJacek
mail: jgebal@gmail.com
blog: oraclethoughts.com
Principal Software Engineer
@Fidelity Investments - Ireland
co-author & maintainer of: utPLSQL
Building open-source
with Oracle Database
in the cloud
for FREE!
About me
● Software engineer since ~2000 - mainly Oracle database
● Infected with testing and automation since ~2013
● Key contributor, author and maintainer of utPLSQL v3
● Active developer, learner, testing advocate
Why this talk
● What I’ve learned with
○ Global, remote, transparent collaboration
○ Great tools available for free for open-source
○ Building maintainable software project
○ Sustainability and long-livity of the project
Sharing
source-code
The “good” old days
Sharing
source-code
The cloud era
How does git work?
https://www.quora.com/What-is-the-difference-between-Jenkins-and-Git
working with
git & github
How do you know that my code works?
● Trust the author
● Trust documentation
● Trust other users
● Read & understand all of the code
● Try it
● Try it even more more in depth
● Test all logic (SQL & PL/SQL)
● Automate test execution
● Test early, often, continuously
● Use test language closest to tested language
Testing database code
http://utplsql.org/
https://github.com/utPLSQL/utPLSQL
● What is continuous integration?
● Why it is important?
● Dev-Ops
● Continuous Testing as part of CI
Continuous Integration
Why Travis for open-source?
● simple to use
● easy setup and integration with github
● up to 5 concurrent build servers
● 18-40 GB of disk space for your builds
● 4-8 GB RAM
● 2 cores
https://docs.travis-ci.com/user/reference/overview/
Continuous Integration
For each configured event on github tavi will
● Initiate a build
● Spin up a new server(s)
● Execute all the steps from .travis.yml file on server(s)
● Verify build status
● Report back build status to github
https://docs.travis-ci.com/user/customizing-the-build/
Travis.org - how it works
travis showcase
https://github.com/utPLSQL/utPLSQL-demo-project/blob/develop/.travis.yml
Travis - automatic builds Project built
successfully
Executed on 4 servers in parallel
https://github.com/utPLSQL/utPLSQL-demo-project/blob/develop/.travis.yml
Travis - feedback to github
Two builds executed:
● one for the branch
● one for the pull request
● login to travis & enable integration with github
● add .travis.yml file in your project
● put steps into .travis.yml file
https://docs.travis-ci.com/user/tutorial/
Travis setup
https://github.com/utPLSQL/utPLSQL-demo-project/blob/develop/.travis.yml
.travis.yml Setup the build server:
- download SQLcl - to work with DB
- download utPLSQL - for testing
- download and start Docker Oracle DB
- install utPLSQL
Install the project:
- Create DB account (user)
- deploy project code
- deploy test code
Verify the project
- Run all tests with utPLSQL
- Run Sonar code analysis
● How to keep your database in a predictable state?
● Using Oracle Always Free Cloud Database as an option?
Consistency is key
● images
● containers
● docker-hub
https://docker-curriculum.com/
https://hub.docker.com/
Docker
- read-only image of a machine
- create once - use many times
- images cannot be changed
- change to image = new image
Scripts for Oracle DB Images:
https://github.com/oracle/docker-images
https://github.com/utPLSQL/docker-scripts
Docker Image
- a running “machine” started from image
- can be stopped and restarted
- when removed - all the container-specific data is “gone”
- new image can be created
from a running/stopped container
Docker Container
- New CI server started on each build
- Docker image of Oracle DB downloaded
- Clean container started
- Code deployed & tested with utPLSQL
CI with Travis & Docker
Measuring Code Quality
● Can code quality be measured?
● Preventing security holes
● Preventing potential risks
https://www.sonarsource.com/products/codeanalyzers/sonarplsql.html#_
SonarCloud
Using Docker locally
Install Docker:
- Toolbox - https://docs.docker.com/toolbox/toolbox_install_windows/
- Desktop - https://docs.docker.com/docker-for-windows/install/
- Four basic commands to control your containers
http://utplsql.org/documentation/
https://github.com/utPLSQL/utPLSQL/releases
● Free
● Pure PL/SQL
● community-driven, open-source
● Easy to use
● Expressive & readable expectations
● Compares cursor / object / nested table / varray
● Human-readable reports
● Integrates with CI/CD servers & Sonar
● SQLDeveloper extension
● Integrated with TOAD 13.2 +
●
utPLSQL
In the cloud
Locally
Summary
● Free hosting & versioning of your code
● SDLC, bugtracking, Wiki, Pages
● Continuous Integration servers
● Hosting for Docker images
● Code analysis
● Testing frameworks
● multiple IDEs
All you need to do is put all the pieces of puzzle together
● git - https://git-scm.com/download/win
○ https://www.youtube.com/playlist?list=PL25b72h8A54cRytndfLG8LAFXnw-9X6Lk
○ https://www.atlassian.com/git/tutorials
● docker - https://docs.docker.com/docker-for-windows/
○ https://github.com/wsargent/docker-cheat-sheet
● oracle DB on docker - https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
○ https://github.com/oracle/docker-images/tree/master/OracleDatabase
● IntelliJ community edition - https://www.jetbrains.com/idea/download/
○ https://www.shortcutfoo.com/app/dojos/intellij-idea-win/cheatsheet
○ https://blog.jetbrains.com/idea/category/tutorials/
● SQLDeveloper - https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
○ https://www.youtube.com/watch?v=EguMf4HbPU8&t=6s
● sonarlint
○ https://www.sonarlint.org/
○ https://rollout.io/blog/getting-started-sonarqube-sonarlint/
Downloading & learning
● utPLSQL - https://github.com/utPLSQL/utPLSQL/releases
○ http://utplsql.org/
○ https://www.youtube.com/playlist?list=PL25b72h8A54fbucEfvH3C2Q1yMqGhc15o
○ https://vimeo.com/261135676
● github - https://github.com/
○ https://guides.github.com/activities/hello-world/
● dockerhub https://hub.docker.com/
○ https://docs.docker.com/docker-hub/
● travis
○ https://docs.travis-ci.com/
○ https://docs.travis-ci.com/user/tutorial/
○ https://github.com/utPLSQL/utPLSQL-demo-project
● SonarCloud - https://sonarcloud.io
○ https://sonarcloud.io/documentation/integrations/github/
Learning
● Readme - intro/getiting started guide
● License - if you want others to take you seriously
● Contributing guide - if you want others to help you
● Badges
So I’ve published my code - then what?
https://github.com/utPLSQL/utPLSQL

Mais conteúdo relacionado

Mais procurados

Integration Group - Robot Framework
Integration Group - Robot Framework Integration Group - Robot Framework
Integration Group - Robot Framework OpenDaylight
 
Automation testing with Drupal 8
Automation testing with Drupal 8Automation testing with Drupal 8
Automation testing with Drupal 8nagpalprachi
 
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...garrett honeycutt
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestMicael Gallego
 
Ukoug webinar - testing PLSQL APIs with utPLSQL v3
Ukoug webinar - testing PLSQL APIs with utPLSQL v3Ukoug webinar - testing PLSQL APIs with utPLSQL v3
Ukoug webinar - testing PLSQL APIs with utPLSQL v3Jacek Gebal
 
Managing dependencies with gradle
Managing dependencies with gradleManaging dependencies with gradle
Managing dependencies with gradleLiviu Tudor
 
Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Alin Pandichi
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosMicael Gallego
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftwArne Jørgensen
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 
Automated php unit testing in drupal 8
Automated php unit testing in drupal 8Automated php unit testing in drupal 8
Automated php unit testing in drupal 8Jay Friendly
 
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e PromisesTDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e PromisesStefan Teixeira
 

Mais procurados (20)

Integration Group - Robot Framework
Integration Group - Robot Framework Integration Group - Robot Framework
Integration Group - Robot Framework
 
Test driving QML
Test driving QMLTest driving QML
Test driving QML
 
Automation testing with Drupal 8
Automation testing with Drupal 8Automation testing with Drupal 8
Automation testing with Drupal 8
 
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
 
PHP Testing Workshop
PHP Testing WorkshopPHP Testing Workshop
PHP Testing Workshop
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
Ukoug webinar - testing PLSQL APIs with utPLSQL v3
Ukoug webinar - testing PLSQL APIs with utPLSQL v3Ukoug webinar - testing PLSQL APIs with utPLSQL v3
Ukoug webinar - testing PLSQL APIs with utPLSQL v3
 
Testing in go
Testing in goTesting in go
Testing in go
 
Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016
 
Test driving-qml
Test driving-qmlTest driving-qml
Test driving-qml
 
Managing dependencies with gradle
Managing dependencies with gradleManaging dependencies with gradle
Managing dependencies with gradle
 
Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
Drupalhagen 2014 kiss omg ftw
Drupalhagen 2014   kiss omg ftwDrupalhagen 2014   kiss omg ftw
Drupalhagen 2014 kiss omg ftw
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 
Test your code
Test your codeTest your code
Test your code
 
Unit testing - A&BP CC
Unit testing - A&BP CCUnit testing - A&BP CC
Unit testing - A&BP CC
 
Automated php unit testing in drupal 8
Automated php unit testing in drupal 8Automated php unit testing in drupal 8
Automated php unit testing in drupal 8
 
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e PromisesTDC 2016 Floripa - Testando APIs REST com Supertest e Promises
TDC 2016 Floripa - Testando APIs REST com Supertest e Promises
 

Semelhante a Bgoug 2019.11 building free, open-source, plsql products in cloud

Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
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.
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureYury Tsarev
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Programaspyker
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixAll Things Open
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with DockerAnton Egorov
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesYshay Yaacobi
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshCodefresh
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and YouBalaBit
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataInfluxData
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDocker, Inc.
 
Pydata 2020 containers meetup
Pydata  2020 containers meetup Pydata  2020 containers meetup
Pydata 2020 containers meetup Walid Shaari
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Richard Bullington-McGuire
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouJ On The Beach
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdfAbid Malik
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil FrameworkVeilFramework
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkJérôme Petazzoni
 
What's new in kubernetes 1.3?
What's new in kubernetes 1.3?What's new in kubernetes 1.3?
What's new in kubernetes 1.3?Suraj Deshmukh
 

Semelhante a Bgoug 2019.11 building free, open-source, plsql products in cloud (20)

Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Run automated tests in Docker
Run automated tests in DockerRun automated tests in Docker
Run automated tests in Docker
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
 
Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Program
 
Building a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at NetflixBuilding a Distributed & Automated Open Source Program at Netflix
Building a Distributed & Automated Open Source Program at Netflix
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with Docker
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 
Docker for dev
Docker for devDocker for dev
Docker for dev
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxData
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
Pydata 2020 containers meetup
Pydata  2020 containers meetup Pydata  2020 containers meetup
Pydata 2020 containers meetup
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camou
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil Framework
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
What's new in kubernetes 1.3?
What's new in kubernetes 1.3?What's new in kubernetes 1.3?
What's new in kubernetes 1.3?
 

Último

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Último (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Bgoug 2019.11 building free, open-source, plsql products in cloud

  • 1. Jacek Gębal twitter: @GebalJacek mail: jgebal@gmail.com blog: oraclethoughts.com Principal Software Engineer @Fidelity Investments - Ireland co-author & maintainer of: utPLSQL Building open-source with Oracle Database in the cloud for FREE!
  • 2. About me ● Software engineer since ~2000 - mainly Oracle database ● Infected with testing and automation since ~2013 ● Key contributor, author and maintainer of utPLSQL v3 ● Active developer, learner, testing advocate
  • 3. Why this talk ● What I’ve learned with ○ Global, remote, transparent collaboration ○ Great tools available for free for open-source ○ Building maintainable software project ○ Sustainability and long-livity of the project
  • 6. How does git work? https://www.quora.com/What-is-the-difference-between-Jenkins-and-Git
  • 8. How do you know that my code works? ● Trust the author ● Trust documentation ● Trust other users ● Read & understand all of the code ● Try it ● Try it even more more in depth
  • 9. ● Test all logic (SQL & PL/SQL) ● Automate test execution ● Test early, often, continuously ● Use test language closest to tested language Testing database code http://utplsql.org/ https://github.com/utPLSQL/utPLSQL
  • 10. ● What is continuous integration? ● Why it is important? ● Dev-Ops ● Continuous Testing as part of CI Continuous Integration
  • 11. Why Travis for open-source? ● simple to use ● easy setup and integration with github ● up to 5 concurrent build servers ● 18-40 GB of disk space for your builds ● 4-8 GB RAM ● 2 cores https://docs.travis-ci.com/user/reference/overview/ Continuous Integration
  • 12. For each configured event on github tavi will ● Initiate a build ● Spin up a new server(s) ● Execute all the steps from .travis.yml file on server(s) ● Verify build status ● Report back build status to github https://docs.travis-ci.com/user/customizing-the-build/ Travis.org - how it works
  • 14. https://github.com/utPLSQL/utPLSQL-demo-project/blob/develop/.travis.yml Travis - automatic builds Project built successfully Executed on 4 servers in parallel
  • 15. https://github.com/utPLSQL/utPLSQL-demo-project/blob/develop/.travis.yml Travis - feedback to github Two builds executed: ● one for the branch ● one for the pull request
  • 16. ● login to travis & enable integration with github ● add .travis.yml file in your project ● put steps into .travis.yml file https://docs.travis-ci.com/user/tutorial/ Travis setup
  • 17. https://github.com/utPLSQL/utPLSQL-demo-project/blob/develop/.travis.yml .travis.yml Setup the build server: - download SQLcl - to work with DB - download utPLSQL - for testing - download and start Docker Oracle DB - install utPLSQL Install the project: - Create DB account (user) - deploy project code - deploy test code Verify the project - Run all tests with utPLSQL - Run Sonar code analysis
  • 18. ● How to keep your database in a predictable state? ● Using Oracle Always Free Cloud Database as an option? Consistency is key
  • 19. ● images ● containers ● docker-hub https://docker-curriculum.com/ https://hub.docker.com/ Docker
  • 20. - read-only image of a machine - create once - use many times - images cannot be changed - change to image = new image Scripts for Oracle DB Images: https://github.com/oracle/docker-images https://github.com/utPLSQL/docker-scripts Docker Image
  • 21. - a running “machine” started from image - can be stopped and restarted - when removed - all the container-specific data is “gone” - new image can be created from a running/stopped container Docker Container
  • 22. - New CI server started on each build - Docker image of Oracle DB downloaded - Clean container started - Code deployed & tested with utPLSQL CI with Travis & Docker
  • 23. Measuring Code Quality ● Can code quality be measured? ● Preventing security holes ● Preventing potential risks
  • 25. Using Docker locally Install Docker: - Toolbox - https://docs.docker.com/toolbox/toolbox_install_windows/ - Desktop - https://docs.docker.com/docker-for-windows/install/ - Four basic commands to control your containers
  • 26. http://utplsql.org/documentation/ https://github.com/utPLSQL/utPLSQL/releases ● Free ● Pure PL/SQL ● community-driven, open-source ● Easy to use ● Expressive & readable expectations ● Compares cursor / object / nested table / varray ● Human-readable reports ● Integrates with CI/CD servers & Sonar ● SQLDeveloper extension ● Integrated with TOAD 13.2 + ● utPLSQL
  • 29. Summary ● Free hosting & versioning of your code ● SDLC, bugtracking, Wiki, Pages ● Continuous Integration servers ● Hosting for Docker images ● Code analysis ● Testing frameworks ● multiple IDEs All you need to do is put all the pieces of puzzle together
  • 30.
  • 31. ● git - https://git-scm.com/download/win ○ https://www.youtube.com/playlist?list=PL25b72h8A54cRytndfLG8LAFXnw-9X6Lk ○ https://www.atlassian.com/git/tutorials ● docker - https://docs.docker.com/docker-for-windows/ ○ https://github.com/wsargent/docker-cheat-sheet ● oracle DB on docker - https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html ○ https://github.com/oracle/docker-images/tree/master/OracleDatabase ● IntelliJ community edition - https://www.jetbrains.com/idea/download/ ○ https://www.shortcutfoo.com/app/dojos/intellij-idea-win/cheatsheet ○ https://blog.jetbrains.com/idea/category/tutorials/ ● SQLDeveloper - https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html ○ https://www.youtube.com/watch?v=EguMf4HbPU8&t=6s ● sonarlint ○ https://www.sonarlint.org/ ○ https://rollout.io/blog/getting-started-sonarqube-sonarlint/ Downloading & learning
  • 32. ● utPLSQL - https://github.com/utPLSQL/utPLSQL/releases ○ http://utplsql.org/ ○ https://www.youtube.com/playlist?list=PL25b72h8A54fbucEfvH3C2Q1yMqGhc15o ○ https://vimeo.com/261135676 ● github - https://github.com/ ○ https://guides.github.com/activities/hello-world/ ● dockerhub https://hub.docker.com/ ○ https://docs.docker.com/docker-hub/ ● travis ○ https://docs.travis-ci.com/ ○ https://docs.travis-ci.com/user/tutorial/ ○ https://github.com/utPLSQL/utPLSQL-demo-project ● SonarCloud - https://sonarcloud.io ○ https://sonarcloud.io/documentation/integrations/github/ Learning
  • 33. ● Readme - intro/getiting started guide ● License - if you want others to take you seriously ● Contributing guide - if you want others to help you ● Badges So I’ve published my code - then what? https://github.com/utPLSQL/utPLSQL