Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open...

109
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source Marcin Stachniuk @MarcinStachniuk mstachniuk.blogspot.com JUG Łódź 20.04.2017

Transcript of Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open...

Page 1: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start czyli jak żyć z tą dziwną technologią? &Continuous Delivery w projekcie Open Source Marcin [email protected]

JUG Łódź 20.04.2017

Page 2: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

O mnie

● Marcin Stachniuk● Twitter: @MarcinStachniuk● Blog: mstachniuk.blogspot.com● WrocJUG● Recenzent książki Practical Unit Testing● Speker na konferencjach: 33rd degree 4

charity, dbconf.pl, warsjawa.pl, devcrowd.pl, chamberconf.pl, careercon.pl, itcareersummit.pl

● Mockito release tools team member● Chorąży na ChamberConf

Page 3: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź
Page 4: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

DEVCROWDSzczecin, 22 kwietnia 2017

Page 5: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Agenda

● Introduction● Build Pipeline● Continuous Integration● Continuous Delivery● Code Quality● Nice Badges● Promotion in the Internet● Alternatives● Q&A● Bonuses

● What is Java Web Start?● How it works?● What can go wrong?● Solution● How does IceBoar works?● Benefits● Q&A

Page 6: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Agenda

● Introduction● Build Pipeline● Continuous Integration● Continuous Delivery● Code Quality● Nice Badges● Promotion in the Internet● Alternatives● Q&A● Bonuses

● What is Java Web Start?● How it works?● What can go wrong?● Solution● How does IceBoar works?● Benefits● Q&A +

Page 7: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Agenda

● Introduction● Build Pipeline● Continuous Integration● Continuous Delivery● Code Quality● Nice Badges● Promotion in the Internet● Alternatives● Q&A● Bonuses

+

● What is Java Web Start?● How it works?● What can go wrong?● Solution● How does IceBoar works?● Benefits● Q&A

Page 8: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start – jak żyć z tą dziwną technologią?Marcin Stachniuk

Page 9: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Platform Standard Edition 8 Documentation

https://docs.oracle.com/javase/8/docs/

Page 10: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Platform Tutorial: Swing

https://docs.oracle.com/javase/tutorial/uiswing/components/text.html

Page 11: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Example JNLP file

<?xml version="1.0" encoding="utf-8"?>

<!-- JNLP File for TextSamplerDemo --><jnlp spec="1.0+" codebase="https://docs.oracle.com/javase/tutorialJWS/samples/uiswing/TextSamplerDemoProject" href="TextSamplerDemo.jnlp"> <information> <title>TextSamplerDemo</title> <vendor>The Java(tm) Tutorial</vendor> <homepage href="https://docs.oracle.com/javase/tutorial/uiswing/examples/components/index.html#TextSamplerDemo"/> <description>TextSamplerDemo</description> <description kind="short">Uses one of each of Swing's text components.</description> <offline-allowed/> </information> <resources> <j2se version="1.7+"/> <jar href="TextSamplerDemo.jar"/> </resources> <application-desc main-class="components.TextSamplerDemo"/></jnlp>

Page 12: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

Page 13: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

click

Page 14: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

click download

Page 15: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

click downloadrun

Page 16: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

click downloadrun

are you sure?

Page 17: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

click downloadrun

are you sure?download

JARs

Page 18: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

run applicationon javaws

click downloadrun

are you sure?download

JARs

Page 19: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start Sequence Diagram

run applicationon javaws

click downloadrun

are you sure?download

JARs

Page 20: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

What could possibly go wrong?

In JNLP: <j2se version="1.7"/> User: Java 1.8

Page 21: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

What could possibly go wrong?

● Different Java versions installed on client machines● Sometimes javaws wants download and install latest JRE

version● Different behavior depending on Operating System and

installed JRE version● From some point of time apps needs to signed (Self-signed

are blocked)● Application started in sandbox (javaws or jp2launcher)

Page 22: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Problem solution

Page 23: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Problem solution

Page 24: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Problem solution

https://github.com/Roche/IceBoar

Page 25: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

Page 26: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click

Page 27: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download

Page 28: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

Page 29: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

Page 30: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

download& run

Page 31: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

download& run download JRE

Page 32: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

download& run download JRE

download JARs

Page 33: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

download& run download JRE

download JARs

run onour JRE

Page 34: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

download& run download JRE

download JARs

run onour JRE

Page 35: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How IceBoar works?

click download run

are you sure?

download& run download JRE

download JARs

run onour JRE

Page 36: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Demo

Page 37: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Profits

● We know a target JVM version● Application start outside a sandbox (java instead of

javaws)● We sign only IceBoar jar● Users don’t need admin rights to install JRE

Page 38: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How to introduce IceBoar into a project?

<dependency> <groupId>com.roche</groupId> <artifactId>ice-boar</artifactId> <version>${project.version}</version> <classifier>jar-with-dependencies</classifier></dependency>

Page 39: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How to introduce IceBoar into a project?

<jnlp spec="1.0+" codebase="${codebase}"> <information> .... </information> <security> <all-permissions/> </security> <resources> <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/> <jar href="${jre.and.jars.host}/${jars.path}/ice-boar-1.0-jar-with-dependencies.jar"/>

<property name="jnlp.IceBoar.close-on-end" value="false"/> <property name="jnlp.IceBoar.main-class" value="com.roche.iceboar.helloworldswing.HelloWorld"/> <property name="jnlp.IceBoar.jar.0" value="${jre.and.jars.host}/${jars.path}/ice-boar-hello-world-swing-${version}-jar-with-dependencies.jar"/>

<property name="jnlp.IceBoar.splash" value="${jre.and.jars.host}/img/ice-boar-splash.png"/> </resources>

<application-desc main-class="com.roche.iceboar.IceBoar"> </application-desc></jnlp>

Page 40: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Site with examples

http://roche.github.io/IceBoar/

Page 41: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Other features of IceBoar?

● Custom splash screen during loading● No frame around splash screen● Custom title and icon● Starting application using pre-installed JRE● Cache for downloaded JRE (for slow connections)● Window with logs output● Disable auto closing IceBoar window after starting target

application

Page 42: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Questions

?

Page 43: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery w projekcie Open Source

Page 44: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery Vs. Continuous Deployment

Page 45: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery Vs. Continuous Deployment

https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff

Page 46: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Inspiration

JDD2014: Continuous Delivery: Capitalizing High Quality Automated Tests (Sz. Faber)

https://www.youtube.com/watch?v=Lda4RuQDQN0

Page 47: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Build Pipeline

Page 48: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

Page 50: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

Page 51: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

Page 52: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

2 webhookbuild

Page 53: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

Page 54: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

4 commit to

gh-pages

Page 55: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

4 commit to

gh-pages

5 updategh-pages

Page 56: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

6 code coverage

4 commit to

gh-pages

5 updategh-pages

Page 57: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

6 code coverage

7 sing & publish(manual)

4 commit to

gh-pages

5 updategh-pages

Page 58: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery Deployment

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

6 code coverage

7 sing & publish(manual)

4 commit to

gh-pages

5 updategh-pages

7 sing & publishauto

not implementeddream

Page 59: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Integration

Page 60: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Integration

https://travis-ci.org● Free for Open Source Projects● Easy setup with GitHub● Container based architecture (Doker)● Stateless

Page 61: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Integration

https://travis-ci.org● Free for Open Source Projects● Easy setup with GitHub● Container based 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

Page 62: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How to set up Travis-CI

.travis.ymllanguage: javascript: mvn clean installjdk: - oraclejdk8

● Sign in to 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

Page 63: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Default Travis-CI java build

.travis.ymllanguage: javajdk: - oraclejdk8

.travis.ymllanguage: javainstall: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -Vscript: mvn test -Bjdk: - oraclejdk8

Default Travis-CI maven build seps:● install● script

Page 64: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Default Travis-CI java build

.travis.ymllanguage: javajdk: - oraclejdk8

.travis.ymllanguage: javainstall: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -Vscript: mvn test -Bjdk: - oraclejdk8

Default Travis-CI maven build seps:● install● script

Page 65: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Default Travis-CI java build

.travis.ymllanguage: javajdk: - oraclejdk8

.travis.ymllanguage: javainstall: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -Vscript: mvn test -Bjdk: - oraclejdk8

Default Travis-CI maven build seps:● install● script

Page 66: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

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

Page 67: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Store sensitive data (passwords) on travis-ci

Page 68: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Store sensitive data (passwords) on travis-ci

Page 69: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Current IceBoar Build in nutshell

#!/bin/bashset -evif [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then

cd ice-boar && mvn clean deploy --settings …else

cd ice-boar && mvn clean install && ...fi

build-travis.sh

language: javascript: ./build-travis.shjdk: - oraclejdk8

.travis.yml

Page 70: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Continuous Delivery

Page 71: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Release artifact to Maven Central is not so easy

● Hard to sign in / create account (need to find link and create an issue)● Manual verification of uploaded artifact

Page 72: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Release artifact to Maven Central is not so easy

Complicated Requirements:● Supply Javadoc and Sources● Sign Files with GPG/PGP● Sufficient Metadata (pom file)● Correct Coordinates (groupId, artifactId, version)● Project Name, Description and URL● License Information● Developer Information● SCM Information

Page 73: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

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

Page 74: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Bintray general repository settings

Page 75: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Bintray deploy to Maven Central

● You can’t store user token password :-( ● This will be manual step :-(

Page 76: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Google Developers: The Secret to Safe Continuous Deployment

www.youtube.com/watch?v=UMnZiTL0tUc github.com/bslatkin/dpxdt

Page 77: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Code Quality

Page 78: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Code Quality with codecov.io

● Sign in to codecov.io with GitHub● Configure jacoco-maven-plugin● Add to .travis.yml:

language: javascript: ./build-travis.shjdk: - oraclejdk8before_install: - pip install --user codecovafter_success: - codecov

.travis.yml

Page 79: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Codecov see Code Coverage

Page 80: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Codecov Extension (for Chrome) - see coverage on GitHub

https://chrome.google.com/webstore/detail/codecov-extension/

Page 81: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Codecov suggestions

Page 82: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

IceBoar build in details

Page 84: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Current IceBoar Build in details

language: javascript: ./build-travis.shjdk: - oraclejdk8before_install: - pip install --user codecovafter_success: - codecovcache: directories: - $HOME/.m2 // cache dir between buildsinstall: true // skip install script

.travis.yml

Page 85: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Current IceBoar Build in details

#!/bin/bashset -evif [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then ...else cd ice-boar mvn clean install cd .. mvn clean install -Ufi

build-travis.sh

set -ev

-e fail fast

-v print all lines in the script before executing them

Page 92: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Nice badges

Page 93: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Nice badges

shields.io

Page 94: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Promotion in the Internet

Page 95: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

What is important for users?

● Nice demo page with example usage: roche.github.io/IceBoar/

Page 96: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

What is important for users?

● Easy setup for contributors

Page 97: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

What is important for promotion?

● Stack Overflow: stackoverflow.com/search?q=ice+boar

Page 98: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

How to promote in the Internet?

● Blogposts● Another forums, groups, etc.● Hackergarten (1 Pull Request,1 commit, 2 contributors)● Presentations at JUG’s and conferences● Coding in train (1 Pull Request, 16 commits, 1 contributor)

Page 99: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Alternatives

Page 100: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Alternatives to Travic-CI

● gitlab.com● BitBucket host in the cloud● 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)

Page 101: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

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)

Page 102: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Others

● javadoc.io

Page 103: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Bonus

Page 104: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

LuxLekarz - LuxMed + ZnanyLekarz

github.com/mstachniuk/LuxLekarz

Page 106: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Mockito Release Tools Vision

github.com/mockito/mockito-release-tools

● Easy setup● Auto generation of release notes (notable and regular)● Include contributors in pom.xml● Auto update releases on GitHub● CI create git tag, update release notes in repository, bump version● Release artifacts only when binary was changed● Million of users ;-)

Page 107: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Questions

?

Page 108: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

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

Page 109: Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w projekcie Open Source - Marcin Stachniuk JUG Łódź

Java Web Start czyli jak żyć z tą dziwną technologią? &Continuous Delivery w projekcie Open Source Marcin [email protected]

JUG Łódź 20.04.2017 Dzięku

ję!