SlideShare a Scribd company logo
Continuous Delivery w
projekcie Open Source
Marcin Stachniuk
@MarcinStachniuk
mstachniuk@gmail.com
KARIERA IT | WROCŁAW
11.02.2017
Agenda
● Introduction
● Build Pipeline
● Continuous Integration
● Continuous Delivery
● Code Quality
● Nice Badges
● Promotion in the Internet
● Alternatives
Introduction
Continuous Delivery Vs. Continuous Deployment
Continuous Delivery Vs. Continuous Deployment
https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff
Inspiration
JDD2014: Continuous Delivery: Capitalizing High Quality Automated Tests (Sz. Faber)
https://www.youtube.com/watch?v=Lda4RuQDQN0
Java Platform Standard Edition 8 Documentation
https://docs.oracle.com/javase/8/docs/
Java Platform Tutorial: Swing
https://docs.oracle.com/javase/tutorial/uiswing/components/text.html
My Open Source Software
https://github.com/Roche/IceBoar
Build Pipeline
Continuous Delivery
</>
Continuous Delivery
</>
code
github.io
github.com travis-ci.org
codecov.io
bintray.com
oss.jfrog.org
search.maven.org
Continuous Delivery
</>
Continuous Delivery
</>
1 git push
Continuous Delivery
</>
1 git push
2 webhook
build
Continuous Delivery
</>
1 git push
2 webhook
build
3 deploy
release
snapshot
Continuous Delivery
</>
1 git push
2 webhook
build
3 deploy
release
snapshot
4 commit
to
gh-pages
Continuous Delivery
</>
1 git push
2 webhook
build
3 deploy
release
snapshot
4 commit
to
gh-pages
5 update
gh-pages
Continuous Delivery
</>
1 git push
2 webhook
build
3 deploy
release
snapshot
6 code coverage
4 commit
to
gh-pages
5 update
gh-pages
Continuous Delivery
</>
1 git push
2 webhook
build
3 deploy
release
snapshot
6 code coverage
7 sing & publish
(manual)
4 commit
to
gh-pages
5 update
gh-pages
Continuous Delivery Deployment
</>
1 git push
2 webhook
build
3 deploy
release
snapshot
6 code coverage
7 sing & publish
(manual)
4 commit
to
gh-pages
5 update
gh-pages
7 sing & publish
auto
not implemented
dream
Continuous Integration
Continuous Integration
https://travis-ci.org
● Free for Open Source Projects
● Easy setup with GitHub
● Container base architecture (Doker)
● Stateless
Continuous Integration
https://travis-ci.org
● Free for Open Source Projects
● Easy setup with GitHub
● Container base architecture (Doker)
● Stateless
● Multi language support (ANDROID, C, C#, C++, CLOJURE,
CRYSTAL, D, DART, ERLANG, ELIXIR, F#, GO, GROOVY,
HASKELL, HAXE, JAVA, JAVASCRIPT (WITH NODE.JS), JULIA,
OBJECTIVE-C, PERL, PERL6, PHP, PYTHON, R, RUBY, RUST,
SCALA, SMALLTALK, VISUAL BASIC)
● For Java: Oracle JDK 7 (default), Oracle JDK 8, OpenJDK 6,
OpenJDK 7, Gradle 2.0, Maven 3.2 and Ant 1.8
● Notifications via: Slack, HipChat, Emails and more
How to setup Travis-CI
.travis.yml
language: java
script: mvn clean install
jdk:
- oraclejdk8
● Sign travis-ci.org using GitHub account
● Choose project (you need to have admin rights to this project)
● Add .travis.yml to your root project folder
Store sensitive data (passwords) on travis-ci
<settings ...>
<servers>
<server>
<id>bintray-stachnim-IceBoar</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
settings.xml
Store sensitive data (passwords) on travis-ci
Store sensitive data (passwords) on travis-ci
Current IceBoar Build
#!/bin/bash
set -ev
if [ "${TRAVIS_PULL_REQUEST}" = "false" ];
then
cd ice-boar && mvn clean deploy --settings …
else
cd ice-boar && mvn clean install && ...
fi
build-travis.sh
language: java
script: ./build-travis.sh
jdk:
- oraclejdk8
.travis.yml
Continuous Delivery
Release artifact to Maven Central is not so easy
● Complicated Requirements
● Hard to sign in / create account (need to find link and create an issue)
● Manual verification of uploaded artifact
Release artifact to bintray
● Sign in with GitHub
● Add new package to maven repository, configure it
● Deploy to bintray (from Travis-CI)
● You don’t need to sign your artifact
Bintray general repository settings
Bintray deploy to Maven Central
● You can’t store user token password :-(
● This will be manual step :-(
Google Developers: The Secret to Safe Continuous Deployment
https://www.youtube.com/watch?v=UMnZiTL0tUc
Code Quality
Code Quality with codecov.io
● Sign in codecov.io with GitHub
● Configure jacoco-maven-plugin
● Add to .travis.yml:
language: java
script: ./build-travis.sh
jdk:
- oraclejdk8
before_install:
- pip install --user codecov
after_success:
- codecov
.travis.yml
Codecov see Code Coverage
Codecov Extension (for Chrome) - see coverage on GitHub
https://chrome.google.com/webstore/detail/codecov-extension/
Codecov suggestions
Nice badges
Nice badges
shields.io
Promotion in the
Internet
What is important for users?
● Nice demo page with example usage: roche.github.io/IceBoar/
What is important for users?
● Easy setup for contributors
What is important for promotion?
● Stack Overflow: stackoverflow.com/search?q=ice+boar
How to promote in the Internet?
● Blogposts
● Another forums, groups, etc.
● Hackergarten
● Presentations on JUG’s and conferences
Alternatives
Alternatives to Travic-CI
● gitlab.com
● teamcity.codebetter.com/login.html
● teamcity.jetbrains.com
● www.appveyor.com (for .NET)
● scrutinizer-ci.com (+ code metrics)
● codeship.com (run Docker’s, support for: Ruby (Rails), Node.js, PHP, Python,
Java, Go)
● magnum-ci.com (+ code metrics)
● circleci.com
● www.visualstudio.com/en-us/products/visual-studio-team-services-vs.aspx
● app.shippable.com (support for Ruby, Python, Java, Node.js, Scala, PHP,
Clojure, Go)
● www.snap-ci.com (by ThoughtWorks)
Alternatives for codecov.io
● coveralls.io
● nemo.sonarqube.org (BETA - need to write an e-mail on e-mail list for account)
● sonar.qatools.ru
● coverity.com (for: C, C++, C#, Java)
● www.codacy.com (for Scala, Ruby, Java, JavaScript, Python, Php)
LuxLekarz - LuxMed + ZnanyLekarz
github.com/mstachniuk/LuxLekarz
Questions
?
Links
● https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff Continuous Delivery Vs.
Continuous Deployment: What's the Diff?
● https://www.youtube.com/watch?v=Lda4RuQDQN0 Szczepan Faber about Continuous Delivery
● https://docs.oracle.com/javase/8/docs/ Java Platform Standard Edition 8 Documentation
● https://github.com/Roche/IceBoar IceBoar on GitHub
● https://github.com GitHub Source Code repository
● https://github.io GitHub Pages
● https://travis-ci.org Travis-CI Continuous Integration Server
● https://codecov.io Collect your code coverage
● https://bintray.com Popular repository for your artifacts (not only Jar files)
● https://oss.jfrog.org Repository for OSS snapshots
● https://search.maven.org The Maven Central
● https://docs.travis-ci.com/user/pull-requests#Security-Restrictions-when-testing-Pull-Requests Why sometimes
PR from fork fail on Travis-Ci
● http://central.sonatype.org/pages/requirements.html Requirements for release in to Maven Central
● https://issues.sonatype.org Create issue for new account on Maven Central
● https://www.youtube.com/watch?v=UMnZiTL0tUc Google Developers The Secret to Safe Continuous Deployment
● https://chrome.google.com/webstore/detail/codecov-extension Codecov extension (for Google Chrome)
● http://shields.io Nice badges generator
● https://roche.github.io/IceBoar Demo page for IceBoar
● http://stackoverflow.com/search?q=ice+boar IceBoar on Stack Overflow
Continuous Delivery w
projekcie Open Source
Marcin Stachniuk
@MarcinStachniuk
mstachniuk@gmail.com
KARIERA IT | WROCŁAW
11.02.2017
Dziękuję!

More Related Content

What's hot

Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
Igor Khotin
 

What's hot (19)

Bower & Grunt - A practical workflow
Bower & Grunt - A practical workflowBower & Grunt - A practical workflow
Bower & Grunt - A practical workflow
 
Webpack and Web Performance Optimization
Webpack and Web Performance OptimizationWebpack and Web Performance Optimization
Webpack and Web Performance Optimization
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
 
Live deployment, ci, drupal
Live deployment, ci, drupalLive deployment, ci, drupal
Live deployment, ci, drupal
 
Grunt & Front-end Workflow
Grunt & Front-end WorkflowGrunt & Front-end Workflow
Grunt & Front-end Workflow
 
App development with quasar (pdf)
App development with quasar (pdf)App development with quasar (pdf)
App development with quasar (pdf)
 
Golang Project Layout and Practice
Golang Project Layout and PracticeGolang Project Layout and Practice
Golang Project Layout and Practice
 
PHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding stylePHP & JavaScript & CSS Coding style
PHP & JavaScript & CSS Coding style
 
React starter-kitでとっとと始めるisomorphic開発
React starter-kitでとっとと始めるisomorphic開発React starter-kitでとっとと始めるisomorphic開発
React starter-kitでとっとと始めるisomorphic開発
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
 
Production optimization with React and Webpack
Production optimization with React and WebpackProduction optimization with React and Webpack
Production optimization with React and Webpack
 
Gradle
GradleGradle
Gradle
 
ITB2019 Containerizing ContentBox CMS - Gavin Pickin
ITB2019 Containerizing ContentBox CMS - Gavin PickinITB2019 Containerizing ContentBox CMS - Gavin Pickin
ITB2019 Containerizing ContentBox CMS - Gavin Pickin
 
Intro to go web assembly
Intro to go web assemblyIntro to go web assembly
Intro to go web assembly
 
Campus HTC at #TechEX15
Campus HTC at #TechEX15Campus HTC at #TechEX15
Campus HTC at #TechEX15
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Node4J: Running Node.js in a JavaWorld
Node4J: Running Node.js in a JavaWorldNode4J: Running Node.js in a JavaWorld
Node4J: Running Node.js in a JavaWorld
 

Viewers also liked

Watchful-Corporate-Overview-Q1-16
Watchful-Corporate-Overview-Q1-16Watchful-Corporate-Overview-Q1-16
Watchful-Corporate-Overview-Q1-16
Ravindran Vasu
 
How To Change The World
How To Change The WorldHow To Change The World
How To Change The World
Agileee
 
Pitfalls Of Tdd Adoption by Bartosz Bankowski
Pitfalls Of Tdd Adoption by Bartosz BankowskiPitfalls Of Tdd Adoption by Bartosz Bankowski
Pitfalls Of Tdd Adoption by Bartosz Bankowski
Agileee
 

Viewers also liked (20)

Retrospekcja warsztat Agile3M
Retrospekcja warsztat Agile3MRetrospekcja warsztat Agile3M
Retrospekcja warsztat Agile3M
 
Zarządzanie zamianami w relacyjnych bazach danych
Zarządzanie zamianami w relacyjnych bazach danychZarządzanie zamianami w relacyjnych bazach danych
Zarządzanie zamianami w relacyjnych bazach danych
 
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danychLiquibase - Zarządzanie zmianami w relacyjnych bazach danych
Liquibase - Zarządzanie zmianami w relacyjnych bazach danych
 
Nowości w Javie 8 okiem programisty
Nowości w Javie 8 okiem programistyNowości w Javie 8 okiem programisty
Nowości w Javie 8 okiem programisty
 
「今どきのUXを実現するためのRAD Studio新機能活用テクニック」
「今どきのUXを実現するためのRAD Studio新機能活用テクニック」「今どきのUXを実現するためのRAD Studio新機能活用テクニック」
「今どきのUXを実現するためのRAD Studio新機能活用テクニック」
 
Las plantas
Las plantasLas plantas
Las plantas
 
Watchful-Corporate-Overview-Q1-16
Watchful-Corporate-Overview-Q1-16Watchful-Corporate-Overview-Q1-16
Watchful-Corporate-Overview-Q1-16
 
Every one of us is a leader
Every one of us is a leaderEvery one of us is a leader
Every one of us is a leader
 
Escuelas economicas
Escuelas economicasEscuelas economicas
Escuelas economicas
 
「今どきのUXを実現するためのRAD Studio新機能活用テクニック」
「今どきのUXを実現するためのRAD Studio新機能活用テクニック」「今どきのUXを実現するためのRAD Studio新機能活用テクニック」
「今どきのUXを実現するためのRAD Studio新機能活用テクニック」
 
Compartim converses dossier (1)
Compartim converses dossier (1)Compartim converses dossier (1)
Compartim converses dossier (1)
 
DelphiでWin/Macクロスコンパイル
DelphiでWin/MacクロスコンパイルDelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
 
DynamoDBとはとは
DynamoDBとはとはDynamoDBとはとは
DynamoDBとはとは
 
Introduction to Reliability Centered Maintenance
Introduction to Reliability Centered MaintenanceIntroduction to Reliability Centered Maintenance
Introduction to Reliability Centered Maintenance
 
Webセミナー「RAD Studio 10.1 Berlin Update 2 Anniversary Edition 新機能ガイド」
Webセミナー「RAD Studio 10.1 Berlin Update 2 Anniversary Edition 新機能ガイド」Webセミナー「RAD Studio 10.1 Berlin Update 2 Anniversary Edition 新機能ガイド」
Webセミナー「RAD Studio 10.1 Berlin Update 2 Anniversary Edition 新機能ガイド」
 
Introduction to Digital Marketing
Introduction to Digital MarketingIntroduction to Digital Marketing
Introduction to Digital Marketing
 
psiquiatria cuadro comparativo
psiquiatria cuadro comparativopsiquiatria cuadro comparativo
psiquiatria cuadro comparativo
 
Maní (Arachis hypogaea)
Maní (Arachis hypogaea)Maní (Arachis hypogaea)
Maní (Arachis hypogaea)
 
How To Change The World
How To Change The WorldHow To Change The World
How To Change The World
 
Pitfalls Of Tdd Adoption by Bartosz Bankowski
Pitfalls Of Tdd Adoption by Bartosz BankowskiPitfalls Of Tdd Adoption by Bartosz Bankowski
Pitfalls Of Tdd Adoption by Bartosz Bankowski
 

Similar to Continuous delivery w projekcie open source - Marcin Stachniuk

Deploying
DeployingDeploying
Deploying
soon
 
Rapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformRapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 Platform
WSO2
 

Similar to Continuous delivery w projekcie open source - Marcin Stachniuk (20)

Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
Windows Azure Web Sites - Things they don’t teach kids in school - Comunity D...
Windows Azure Web Sites- Things they don’t teach kids in school - Comunity D...Windows Azure Web Sites- Things they don’t teach kids in school - Comunity D...
Windows Azure Web Sites - Things they don’t teach kids in school - Comunity D...
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
 
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
Java Web Start czyli jak żyć z tą dziwną technologią & Continuous Delivery w ...
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
 
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with Django
 
“warpdrive”, making Python web application deployment magically easy.
“warpdrive”, making Python web application deployment magically easy.“warpdrive”, making Python web application deployment magically easy.
“warpdrive”, making Python web application deployment magically easy.
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
Node azure
Node azureNode azure
Node azure
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
 
Deploying
DeployingDeploying
Deploying
 
Deploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker ToolsDeploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker Tools
 
Unpacking .NET Core | EastBanc Technologies
Unpacking .NET Core | EastBanc TechnologiesUnpacking .NET Core | EastBanc Technologies
Unpacking .NET Core | EastBanc Technologies
 
Rapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformRapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 Platform
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web Applications
 

More from MarcinStachniuk

More from MarcinStachniuk (20)

GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademyGraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
GraphQL - Piękne API w Twojej Aplikacji - KrakowGraphAcademy
 
Wroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in JavaWroclaw GraphQL - GraphQL in Java
Wroclaw GraphQL - GraphQL in Java
 
[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało[DevCrowd] GraphQL - gdy API RESTowe to za mało
[DevCrowd] GraphQL - gdy API RESTowe to za mało
 
GraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za małoGraphQL - gdy API RESTowe to za mało
GraphQL - gdy API RESTowe to za mało
 
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learnedBruJUG Brussels GraphQL when RESR API is to less - lessons learned
BruJUG Brussels GraphQL when RESR API is to less - lessons learned
 
[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit[WroclawJUG] Continuous Delivery in OSS using Shipkit
[WroclawJUG] Continuous Delivery in OSS using Shipkit
 
Continuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.orgContinuous Delivery in OSS using Shipkit.org
Continuous Delivery in OSS using Shipkit.org
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learned
 
Java Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologiąJava Web Start – jak żyć z tą dziwną technologią
Java Web Start – jak żyć z tą dziwną technologią
 
Zarządzanie zmianami w schemacie relacyjnych baz danych
Zarządzanie zmianami w schemacie relacyjnych baz danychZarządzanie zmianami w schemacie relacyjnych baz danych
Zarządzanie zmianami w schemacie relacyjnych baz danych
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4o
 
Automatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object databaseAutomatic mechanism data migration between relational and object database
Automatic mechanism data migration between relational and object database
 
Zastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4oZastosowanie obiektowych baz danych na przykładzie db4o
Zastosowanie obiektowych baz danych na przykładzie db4o
 
Wprowadzenie do J2ME
Wprowadzenie do J2MEWprowadzenie do J2ME
Wprowadzenie do J2ME
 

Recently uploaded

Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 

Continuous delivery w projekcie open source - Marcin Stachniuk

  • 1. Continuous Delivery w projekcie Open Source Marcin Stachniuk @MarcinStachniuk mstachniuk@gmail.com KARIERA IT | WROCŁAW 11.02.2017
  • 2. Agenda ● Introduction ● Build Pipeline ● Continuous Integration ● Continuous Delivery ● Code Quality ● Nice Badges ● Promotion in the Internet ● Alternatives
  • 4. Continuous Delivery Vs. Continuous Deployment
  • 5. Continuous Delivery Vs. Continuous Deployment https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff
  • 6. Inspiration JDD2014: Continuous Delivery: Capitalizing High Quality Automated Tests (Sz. Faber) https://www.youtube.com/watch?v=Lda4RuQDQN0
  • 7. Java Platform Standard Edition 8 Documentation https://docs.oracle.com/javase/8/docs/
  • 8. Java Platform Tutorial: Swing https://docs.oracle.com/javase/tutorial/uiswing/components/text.html
  • 9. My Open Source Software https://github.com/Roche/IceBoar
  • 15. Continuous Delivery </> 1 git push 2 webhook build
  • 16. Continuous Delivery </> 1 git push 2 webhook build 3 deploy release snapshot
  • 17. Continuous Delivery </> 1 git push 2 webhook build 3 deploy release snapshot 4 commit to gh-pages
  • 18. Continuous Delivery </> 1 git push 2 webhook build 3 deploy release snapshot 4 commit to gh-pages 5 update gh-pages
  • 19. Continuous Delivery </> 1 git push 2 webhook build 3 deploy release snapshot 6 code coverage 4 commit to gh-pages 5 update gh-pages
  • 20. Continuous Delivery </> 1 git push 2 webhook build 3 deploy release snapshot 6 code coverage 7 sing & publish (manual) 4 commit to gh-pages 5 update gh-pages
  • 21. Continuous Delivery Deployment </> 1 git push 2 webhook build 3 deploy release snapshot 6 code coverage 7 sing & publish (manual) 4 commit to gh-pages 5 update gh-pages 7 sing & publish auto not implemented dream
  • 23. Continuous Integration https://travis-ci.org ● Free for Open Source Projects ● Easy setup with GitHub ● Container base architecture (Doker) ● Stateless
  • 24. Continuous Integration https://travis-ci.org ● Free for Open Source Projects ● Easy setup with GitHub ● Container base architecture (Doker) ● Stateless ● Multi language support (ANDROID, C, C#, C++, CLOJURE, CRYSTAL, D, DART, ERLANG, ELIXIR, F#, GO, GROOVY, HASKELL, HAXE, JAVA, JAVASCRIPT (WITH NODE.JS), JULIA, OBJECTIVE-C, PERL, PERL6, PHP, PYTHON, R, RUBY, RUST, SCALA, SMALLTALK, VISUAL BASIC) ● For Java: Oracle JDK 7 (default), Oracle JDK 8, OpenJDK 6, OpenJDK 7, Gradle 2.0, Maven 3.2 and Ant 1.8 ● Notifications via: Slack, HipChat, Emails and more
  • 25. How to setup Travis-CI .travis.yml language: java script: mvn clean install jdk: - oraclejdk8 ● Sign travis-ci.org using GitHub account ● Choose project (you need to have admin rights to this project) ● Add .travis.yml to your root project folder
  • 26. Store sensitive data (passwords) on travis-ci <settings ...> <servers> <server> <id>bintray-stachnim-IceBoar</id> <username>${env.CI_DEPLOY_USERNAME}</username> <password>${env.CI_DEPLOY_PASSWORD}</password> </server> settings.xml
  • 27. Store sensitive data (passwords) on travis-ci
  • 28. Store sensitive data (passwords) on travis-ci
  • 29. Current IceBoar Build #!/bin/bash set -ev if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then cd ice-boar && mvn clean deploy --settings … else cd ice-boar && mvn clean install && ... fi build-travis.sh language: java script: ./build-travis.sh jdk: - oraclejdk8 .travis.yml
  • 31. Release artifact to Maven Central is not so easy ● Complicated Requirements ● Hard to sign in / create account (need to find link and create an issue) ● Manual verification of uploaded artifact
  • 32. Release artifact to bintray ● Sign in with GitHub ● Add new package to maven repository, configure it ● Deploy to bintray (from Travis-CI) ● You don’t need to sign your artifact
  • 34. Bintray deploy to Maven Central ● You can’t store user token password :-( ● This will be manual step :-(
  • 35. Google Developers: The Secret to Safe Continuous Deployment https://www.youtube.com/watch?v=UMnZiTL0tUc
  • 37. Code Quality with codecov.io ● Sign in codecov.io with GitHub ● Configure jacoco-maven-plugin ● Add to .travis.yml: language: java script: ./build-travis.sh jdk: - oraclejdk8 before_install: - pip install --user codecov after_success: - codecov .travis.yml
  • 38. Codecov see Code Coverage
  • 39. Codecov Extension (for Chrome) - see coverage on GitHub https://chrome.google.com/webstore/detail/codecov-extension/
  • 44. What is important for users? ● Nice demo page with example usage: roche.github.io/IceBoar/
  • 45. What is important for users? ● Easy setup for contributors
  • 46. What is important for promotion? ● Stack Overflow: stackoverflow.com/search?q=ice+boar
  • 47. How to promote in the Internet? ● Blogposts ● Another forums, groups, etc. ● Hackergarten ● Presentations on JUG’s and conferences
  • 49. Alternatives to Travic-CI ● gitlab.com ● teamcity.codebetter.com/login.html ● teamcity.jetbrains.com ● www.appveyor.com (for .NET) ● scrutinizer-ci.com (+ code metrics) ● codeship.com (run Docker’s, support for: Ruby (Rails), Node.js, PHP, Python, Java, Go) ● magnum-ci.com (+ code metrics) ● circleci.com ● www.visualstudio.com/en-us/products/visual-studio-team-services-vs.aspx ● app.shippable.com (support for Ruby, Python, Java, Node.js, Scala, PHP, Clojure, Go) ● www.snap-ci.com (by ThoughtWorks)
  • 50. Alternatives for codecov.io ● coveralls.io ● nemo.sonarqube.org (BETA - need to write an e-mail on e-mail list for account) ● sonar.qatools.ru ● coverity.com (for: C, C++, C#, Java) ● www.codacy.com (for Scala, Ruby, Java, JavaScript, Python, Php)
  • 51. LuxLekarz - LuxMed + ZnanyLekarz github.com/mstachniuk/LuxLekarz
  • 53. Links ● https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff Continuous Delivery Vs. Continuous Deployment: What's the Diff? ● https://www.youtube.com/watch?v=Lda4RuQDQN0 Szczepan Faber about Continuous Delivery ● https://docs.oracle.com/javase/8/docs/ Java Platform Standard Edition 8 Documentation ● https://github.com/Roche/IceBoar IceBoar on GitHub ● https://github.com GitHub Source Code repository ● https://github.io GitHub Pages ● https://travis-ci.org Travis-CI Continuous Integration Server ● https://codecov.io Collect your code coverage ● https://bintray.com Popular repository for your artifacts (not only Jar files) ● https://oss.jfrog.org Repository for OSS snapshots ● https://search.maven.org The Maven Central ● https://docs.travis-ci.com/user/pull-requests#Security-Restrictions-when-testing-Pull-Requests Why sometimes PR from fork fail on Travis-Ci ● http://central.sonatype.org/pages/requirements.html Requirements for release in to Maven Central ● https://issues.sonatype.org Create issue for new account on Maven Central ● https://www.youtube.com/watch?v=UMnZiTL0tUc Google Developers The Secret to Safe Continuous Deployment ● https://chrome.google.com/webstore/detail/codecov-extension Codecov extension (for Google Chrome) ● http://shields.io Nice badges generator ● https://roche.github.io/IceBoar Demo page for IceBoar ● http://stackoverflow.com/search?q=ice+boar IceBoar on Stack Overflow
  • 54. Continuous Delivery w projekcie Open Source Marcin Stachniuk @MarcinStachniuk mstachniuk@gmail.com KARIERA IT | WROCŁAW 11.02.2017 Dziękuję!