Continuous Delivery w
projekcie Open Source
Marcin Stachniuk
@MarcinStachniuk
mstachniuk.blogspot.com
DevCrowd 22.04.2017
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
Java Web Start
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
Problem solution
Problem solution
https://github.com/Roche/IceBoar
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
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 based architecture (Doker)
● Stateless
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
How to set up Travis-CI
.travis.yml
language: java
script: mvn clean install
jdk:
- 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
Default Travis-CI java build
.travis.yml
language: java
jdk:
- oraclejdk8
.travis.yml
language: java
install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
script: mvn test -B
jdk:
- oraclejdk8
Default Travis-CI maven build seps:
● install
● script
Default Travis-CI java build
.travis.yml
language: java
jdk:
- oraclejdk8
.travis.yml
language: java
install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
script: mvn test -B
jdk:
- oraclejdk8
Default Travis-CI maven build seps:
● install
● script
Default Travis-CI java build
.travis.yml
language: java
jdk:
- oraclejdk8
.travis.yml
language: java
install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
script: mvn test -B
jdk:
- oraclejdk8
Default Travis-CI maven build seps:
● install
● script
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 in nutshell
#!/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
● Hard to sign in / create account (need to find link and create an issue)
● Manual verification of uploaded artifact
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
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
www.youtube.com/watch?v=UMnZiTL0tUc
github.com/bslatkin/dpxdt
Code Quality
Code Quality with codecov.io
● Sign in to 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
IceBoar build in details
IceBoar project structure in details
Roche/IceBoar pom.xml (project name: ice-boar-build)
ice-boar (without reference to parent pom)
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
Current IceBoar Build in details
language: java
script: ./build-travis.sh
jdk:
- oraclejdk8
before_install:
- pip install --user codecov
after_success:
- codecov
cache:
directories:
- $HOME/.m2 // cache dir between builds
install: true // skip install script
.travis.yml
Current IceBoar Build in details
#!/bin/bash
set -ev
if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then
...
else
cd ice-boar
mvn clean install
cd ..
mvn clean install -U
fi
build-travis.sh
set -ev
-e fail fast
-v print all lines in
the script before
executing them
Current IceBoar Build in details
cd ice-boar
mvn clean deploy --settings settings.xml
cd ..
mvn clean install -U
cd ice-boar-samples/ice-boar-demo-gh-pages/
mvn clean install -P ghpages
git clone https://github.com/Roche/IceBoar
cd IceBoar
git checkout gh-pages && 
cp -R ../target/ice-boar-demo-gh-pages/* .
build-travis.sh Roche/IceBoar
ice-boar
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
Current IceBoar Build in details
cd ice-boar
mvn clean deploy --settings settings.xml
cd ..
mvn clean install -U
cd ice-boar-samples/ice-boar-demo-gh-pages/
mvn clean install -P ghpages
git clone https://github.com/Roche/IceBoar
cd IceBoar
git checkout gh-pages && 
cp -R ../target/ice-boar-demo-gh-pages/* .
build-travis.sh Roche/IceBoar
ice-boar
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
Current IceBoar Build in details
cd ice-boar
mvn clean deploy --settings settings.xml
cd ..
mvn clean install -U
cd ice-boar-samples/ice-boar-demo-gh-pages/
mvn clean install -P ghpages
git clone https://github.com/Roche/IceBoar
cd IceBoar
git checkout gh-pages && 
cp -R ../target/ice-boar-demo-gh-pages/* .
build-travis.sh Roche/IceBoar
ice-boar
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
Current IceBoar Build in details
cd ice-boar
mvn clean deploy --settings settings.xml
cd ..
mvn clean install -U
cd ice-boar-samples/ice-boar-demo-gh-pages/
mvn clean install -P ghpages
git clone https://github.com/Roche/IceBoar
cd IceBoar
git checkout gh-pages && 
cp -R ../target/ice-boar-demo-gh-pages/* .
build-travis.sh Roche/IceBoar
ice-boar
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
IceBoar
Current IceBoar Build in details
cd ice-boar
mvn clean deploy --settings settings.xml
cd ..
mvn clean install -U
cd ice-boar-samples/ice-boar-demo-gh-pages/
mvn clean install -P ghpages
git clone https://github.com/Roche/IceBoar
cd IceBoar
git checkout gh-pages && 
cp -R ../target/ice-boar-demo-gh-pages/* .
build-travis.sh Roche/IceBoar
ice-boar
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
IceBoar
Current IceBoar Build in details
git config user.name "Marcin Stachniuk"
git config user.email mstachniuk@...com
git add -A
git commit -m "update gh-pages by Travis-CI"
git push ${GIT_HUB_REPO_SECRET}
build-travis.sh Roche/IceBoar
ice-boar
ice-boar-samples
ice-boar-demo-gh-pages
ice-boar-demo
ice-boar-hello-world-swing
IceBoar
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 (1 Pull Request,1 commit, 2 contributors)
● Presentations at JUG’s and conferences
● Coding in train (1 Pull Request, 16 commits, 1 contributor)
Alternatives
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)
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)
Others
● javadoc.io
Bonus
LuxLekarz - LuxMed + ZnanyLekarz
github.com/mstachniuk/LuxLekarz
Mockito Release Tools
github.com/mockito/mockito-release-tools
https://github.com/mockito/mockito/blob/release/2.x/doc/release-notes/official.md
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 ;-)
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.blogspot.com
DevCrowd 22.04.2017 Dziękuję!

Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017

  • 1.
    Continuous Delivery w projekcieOpen Source Marcin Stachniuk @MarcinStachniuk mstachniuk.blogspot.com DevCrowd 22.04.2017
  • 2.
    O mnie ● MarcinStachniuk ● 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
  • 3.
  • 4.
    Java Platform StandardEdition 8 Documentation https://docs.oracle.com/javase/8/docs/
  • 5.
    Java Platform Tutorial:Swing https://docs.oracle.com/javase/tutorial/uiswing/components/text.html
  • 6.
  • 7.
  • 8.
    Continuous Delivery Vs.Continuous Deployment
  • 9.
    Continuous Delivery Vs.Continuous Deployment https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff
  • 10.
    Inspiration JDD2014: Continuous Delivery:Capitalizing High Quality Automated Tests (Sz. Faber) https://www.youtube.com/watch?v=Lda4RuQDQN0
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Continuous Delivery </> 1 gitpush 2 webhook build
  • 17.
    Continuous Delivery </> 1 gitpush 2 webhook build 3 deploy release snapshot
  • 18.
    Continuous Delivery </> 1 gitpush 2 webhook build 3 deploy release snapshot 4 commit to gh-pages
  • 19.
    Continuous Delivery </> 1 gitpush 2 webhook build 3 deploy release snapshot 4 commit to gh-pages 5 update gh-pages
  • 20.
    Continuous Delivery </> 1 gitpush 2 webhook build 3 deploy release snapshot 6 code coverage 4 commit to gh-pages 5 update gh-pages
  • 21.
    Continuous Delivery </> 1 gitpush 2 webhook build 3 deploy release snapshot 6 code coverage 7 sing & publish (manual) 4 commit to gh-pages 5 update gh-pages
  • 22.
    Continuous Delivery Deployment </> 1git 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.
  • 24.
    Continuous Integration https://travis-ci.org ● Freefor Open Source Projects ● Easy setup with GitHub ● Container based architecture (Doker) ● Stateless
  • 25.
    Continuous Integration https://travis-ci.org ● Freefor 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
  • 26.
    How to setup Travis-CI .travis.yml language: java script: mvn clean install jdk: - 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
  • 27.
    Default Travis-CI javabuild .travis.yml language: java jdk: - oraclejdk8 .travis.yml language: java install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V script: mvn test -B jdk: - oraclejdk8 Default Travis-CI maven build seps: ● install ● script
  • 28.
    Default Travis-CI javabuild .travis.yml language: java jdk: - oraclejdk8 .travis.yml language: java install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V script: mvn test -B jdk: - oraclejdk8 Default Travis-CI maven build seps: ● install ● script
  • 29.
    Default Travis-CI javabuild .travis.yml language: java jdk: - oraclejdk8 .travis.yml language: java install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V script: mvn test -B jdk: - oraclejdk8 Default Travis-CI maven build seps: ● install ● script
  • 30.
    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
  • 31.
    Store sensitive data(passwords) on travis-ci
  • 32.
    Store sensitive data(passwords) on travis-ci
  • 33.
    Current IceBoar Buildin nutshell #!/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
  • 34.
  • 35.
    Release artifact toMaven Central is not so easy ● Hard to sign in / create account (need to find link and create an issue) ● Manual verification of uploaded artifact
  • 36.
    Release artifact toMaven 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
  • 37.
    Release artifact tobintray ● 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
  • 38.
  • 39.
    Bintray deploy toMaven Central ● You can’t store user token password :-( ● This will be manual step :-(
  • 40.
    Google Developers: TheSecret to Safe Continuous Deployment www.youtube.com/watch?v=UMnZiTL0tUc github.com/bslatkin/dpxdt
  • 41.
  • 42.
    Code Quality withcodecov.io ● Sign in to 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
  • 43.
  • 44.
    Codecov Extension (forChrome) - see coverage on GitHub https://chrome.google.com/webstore/detail/codecov-extension/
  • 45.
  • 46.
  • 47.
    IceBoar project structurein details Roche/IceBoar pom.xml (project name: ice-boar-build) ice-boar (without reference to parent pom) ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing
  • 48.
    Current IceBoar Buildin details language: java script: ./build-travis.sh jdk: - oraclejdk8 before_install: - pip install --user codecov after_success: - codecov cache: directories: - $HOME/.m2 // cache dir between builds install: true // skip install script .travis.yml
  • 49.
    Current IceBoar Buildin details #!/bin/bash set -ev if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then ... else cd ice-boar mvn clean install cd .. mvn clean install -U fi build-travis.sh set -ev -e fail fast -v print all lines in the script before executing them
  • 50.
    Current IceBoar Buildin details cd ice-boar mvn clean deploy --settings settings.xml cd .. mvn clean install -U cd ice-boar-samples/ice-boar-demo-gh-pages/ mvn clean install -P ghpages git clone https://github.com/Roche/IceBoar cd IceBoar git checkout gh-pages && cp -R ../target/ice-boar-demo-gh-pages/* . build-travis.sh Roche/IceBoar ice-boar ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing
  • 51.
    Current IceBoar Buildin details cd ice-boar mvn clean deploy --settings settings.xml cd .. mvn clean install -U cd ice-boar-samples/ice-boar-demo-gh-pages/ mvn clean install -P ghpages git clone https://github.com/Roche/IceBoar cd IceBoar git checkout gh-pages && cp -R ../target/ice-boar-demo-gh-pages/* . build-travis.sh Roche/IceBoar ice-boar ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing
  • 52.
    Current IceBoar Buildin details cd ice-boar mvn clean deploy --settings settings.xml cd .. mvn clean install -U cd ice-boar-samples/ice-boar-demo-gh-pages/ mvn clean install -P ghpages git clone https://github.com/Roche/IceBoar cd IceBoar git checkout gh-pages && cp -R ../target/ice-boar-demo-gh-pages/* . build-travis.sh Roche/IceBoar ice-boar ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing
  • 53.
    Current IceBoar Buildin details cd ice-boar mvn clean deploy --settings settings.xml cd .. mvn clean install -U cd ice-boar-samples/ice-boar-demo-gh-pages/ mvn clean install -P ghpages git clone https://github.com/Roche/IceBoar cd IceBoar git checkout gh-pages && cp -R ../target/ice-boar-demo-gh-pages/* . build-travis.sh Roche/IceBoar ice-boar ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing IceBoar
  • 54.
    Current IceBoar Buildin details cd ice-boar mvn clean deploy --settings settings.xml cd .. mvn clean install -U cd ice-boar-samples/ice-boar-demo-gh-pages/ mvn clean install -P ghpages git clone https://github.com/Roche/IceBoar cd IceBoar git checkout gh-pages && cp -R ../target/ice-boar-demo-gh-pages/* . build-travis.sh Roche/IceBoar ice-boar ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing IceBoar
  • 55.
    Current IceBoar Buildin details git config user.name "Marcin Stachniuk" git config user.email mstachniuk@...com git add -A git commit -m "update gh-pages by Travis-CI" git push ${GIT_HUB_REPO_SECRET} build-travis.sh Roche/IceBoar ice-boar ice-boar-samples ice-boar-demo-gh-pages ice-boar-demo ice-boar-hello-world-swing IceBoar
  • 56.
  • 57.
  • 58.
  • 59.
    What is importantfor users? ● Nice demo page with example usage: roche.github.io/IceBoar/
  • 60.
    What is importantfor users? ● Easy setup for contributors
  • 61.
    What is importantfor promotion? ● Stack Overflow: stackoverflow.com/search?q=ice+boar
  • 62.
    How to promotein 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)
  • 63.
  • 64.
    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)
  • 65.
    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)
  • 66.
  • 67.
  • 68.
    LuxLekarz - LuxMed+ ZnanyLekarz github.com/mstachniuk/LuxLekarz
  • 69.
  • 70.
    Mockito Release ToolsVision 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 ;-)
  • 71.
  • 72.
    Links ● https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff ContinuousDelivery 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
  • 73.
    Continuous Delivery w projekcieOpen Source Marcin Stachniuk @MarcinStachniuk mstachniuk.blogspot.com DevCrowd 22.04.2017 Dziękuję!