Continuous delivery w projekcie open source - Marcin Stachniuk

Post on 14-Feb-2017

115 views 0 download

Transcript of Continuous delivery w projekcie open source - Marcin Stachniuk

Continuous Delivery w projekcie Open SourceMarcin Stachniuk@MarcinStachniukmstachniuk@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

</>

Continuous Delivery

</>

1 git push

Continuous Delivery

</>

1 git push

2 webhookbuild

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

4 commit to

gh-pages

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

4 commit to

gh-pages

5 updategh-pages

Continuous Delivery

</>

1 git push

2 webhookbuild

3 deploy

release

snapshot

6 code coverage

4 commit to

gh-pages

5 updategh-pages

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

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

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.ymllanguage: javascript: mvn clean installjdk: - 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/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

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: javascript: ./build-travis.shjdk: - oraclejdk8before_install: - pip install --user codecovafter_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 SourceMarcin Stachniuk@MarcinStachniukmstachniuk@gmail.com

KARIERA IT | WROCŁAW 11.02.2017 Dzię

kuję!