Slide 1

Slide 1 text

Bot the pain away!

Slide 2

Slide 2 text

!

Slide 3

Slide 3 text

! I'M JULIA WEB DEVELOPER @ NEIGHBOURHOODIE SOFTWARE

Slide 4

Slide 4 text

CouchDB, Offline First, Hoodie, Greenkeeper

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

! VS. "

Slide 7

Slide 7 text

MODULARISATION ▸ ! the monolith ▸ " many smaller scoped modules

Slide 8

Slide 8 text

! SMALLER MODULES ! ▸ easier to document ▸ easier to test ▸ easier to contribute to

Slide 9

Slide 9 text

! SMALLER MODULES ! ▸ easier to maintain ?

Slide 10

Slide 10 text

RELEASING A NEW VERSION FOR A MODULE $ npm publish

Slide 11

Slide 11 text

Wait a minute! Did we.. ▸ create a git tag? ▸ git push --tags? ▸ pick the right version number ▸ commit the package.json? ▸ write the change logs?

Slide 12

Slide 12 text

! "

Slide 13

Slide 13 text

HUMANS MAKE MISTAKES

Slide 14

Slide 14 text

!

Slide 15

Slide 15 text

SEMANTIC VERSIONING (SEMVER) X.Y.Z

Slide 16

Slide 16 text

SEMANTIC VERSIONING MAJOR.MINOR.PATCH 1. Major: ! Incompatible API Changes 2. Minor: ✨ New Functionality 3. Patch: # Bug Fixes

Slide 17

Slide 17 text

SEMANTIC VERSIONING BREAKING.FEATURE.FIX 1. Breaking: ! Incompatible API Changes 2. Feature: ✨ New Functionality 3. Fix: # Bug Fixes

Slide 18

Slide 18 text

Version numbers are for computers, not for humans.

Slide 19

Slide 19 text

HAUPTVERSIONS NUMMERNERHÖH UNGSANGST

Slide 20

Slide 20 text

! Automation !

Slide 21

Slide 21 text

AUTOMATIC RELEASES

Slide 22

Slide 22 text

✨ SEMANTIC RELEASE ✨ ▸ free & open source ▸ has many plugins

Slide 23

Slide 23 text

✨ SEMANTIC RELEASE ✨ $ npx semantic-release-cli setup

Slide 24

Slide 24 text

✨ SEMANTIC RELEASE ✨ ▸ waits for the tests to succed on CI ▸ calculates version based on the commit message ▸ - creates the git tag ▸ publishes package to npm ▸ creates the GitHub release & changelog

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

COMMIT MESSAGE CONVENTIONS fix: .. feat: .. BREAKING CHANGE: (in commit body)

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

✨ SEMANTIC RELEASE ✨ notifies maintainers and users of new releases!

Slide 29

Slide 29 text

WHAT ABOUT.. DEPENDENCY MANAGMENT

Slide 30

Slide 30 text

SO MUCH HAS HAPPEND...

Slide 31

Slide 31 text

⚠⚡ No security updates without up-to-date dependencies!

Slide 32

Slide 32 text

DEPENDENCY MANAGMENT $ npm outdated

Slide 33

Slide 33 text

DEPENDENCY MANAGMENT $ npm update Updating everything to the latest version at once ... probably breaks everything

Slide 34

Slide 34 text

DEPENDENCY MANAGMENT ! Going through the changelogs of each outdated dependency ... probably takes forever

Slide 35

Slide 35 text

WHAT IF SOMEONE (!) DID ALL THIS FOR YOU?

Slide 36

Slide 36 text

AND THE ONLY THING LEFT FOR YOU TO DO IS TO CLICK A BUTTON.

Slide 37

Slide 37 text

! Automation !

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

! GREENKEEPER ! ▸ Open Source ▸ free for Open Source ▸ Plans for private Repositories & Github Enterprise ▸ 14 Days free trial on Github Marketplace

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

!

Slide 43

Slide 43 text

SEMANTIC VERSION RANGES THE CARET '^' "JEST": "^22.0.0" ▸ ✅ 22.0.1 ▸ ✅ 22.4.4 ▸ ❌ 23.0.0

Slide 44

Slide 44 text

SEMANTIC VERSION RANGES THE TILDE '~' "JEST": "~22.1.0" ▸ ✅ 22.1.1 ▸ ❌ 22.2.0 ▸ ❌ 23.0.0

Slide 45

Slide 45 text

SEMANTIC VERSION RANGES "JEST": "22.1.0" ▸ ❌ 22.1.1 ▸ ❌ 22.2.0 ▸ ❌ 23.0.0

Slide 46

Slide 46 text

OUT OF RANGE ^1.0.0 -> 2.0.0

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

IN RANGE ^2.3.2 -> 2.6.0

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

SEMANTIC RELEASE & GREENKEEPER !

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Thank you!