Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rolling Stones on stage: release me

ElmarDott
November 26, 2022

Rolling Stones on stage: release me

Everyone does it, some even several times a day. But few are aware of the complex interlocking mechanisms that make up a complete software release. This is why it sometimes happens that a package gets in the way of the automated processing chain.
With a bit of theory and a typical example from the Java universe, I show how you can take a little pressure out of the software development process in order to achieve lean, slightly automated processes.

To deal with standards in your own projects is not something bad. A well define release process based on common standards increase your productivity. Learn in this talk how you are able to simplify your daily work.
--------------------------------------------------------------------------------------------------
Homepage : https://elmar-dott.com
AnchorFM : https://anchor.fm/elmar-dott
Twitter - https://twitter.com/ElmarDott
GitHub - https://github.com/ElmarDott
Lbry - https://lbry.tv/@elmar.dott:8
BitChute - https://www.bitchute.com/channel/3IyCzKdX8IpO/
--------------------------------------------------------------------------------------------------

ElmarDott

November 26, 2022
Tweet

More Decks by ElmarDott

Other Decks in Programming

Transcript

  1. View Slide

  2. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Sp
    e
    a
    k
    e
    r
    El
    ma
    r Do
    t
    t
    (M. Schulz) studied at HS Merseburg, Germany, computer science and
    holds an engineers degree in software engineering. He tweets regularly
    about several technical topics. The main topics in his field of work are Build
    and Configuration Management, Software Architecture and Release
    Management.
    About more than 15 years he is working in different large Web Application
    projects all over the world. He is an independent consultant / trainer. To
    share his knowledge he gives talks on conferences, if he is not writing on a
    new article about software engineering. https://elmar-dott.com
    + Consultant + Writer + Speaker + Trainer +

    View Slide

  3. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Ag
    e
    nd
    a
    Definitions & Meanings
    DevOps & Release Management
    Semantic Versioning
    Sprints & Agility
    DevOps Release & Deploy Strategies

    View Slide

  4. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    De
    f
    i
    n
    i
    t
    i
    on
    s
    Release: thus denotes a defined state of an artifact whose
    development cycle has been completed so that it is released for
    use.
    Deliver: signifies the provision of the artifacts for further use, e. g.
    by installing on a repository server.
    Deploy: means the installation of software in the target
    environment, primarily to PRODUCTION.

    View Slide

  5. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Pr
    oc
    e
    s
    s c
    ha
    i
    n
    Release : package
    Deploy : install
    Deliver : storage

    View Slide

  6. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Le
    v
    e
    l
    s o
    f Au
    t
    oma
    t
    i
    z
    a
    t
    i
    on

    View Slide

  7. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Se
    man
    t
    i
    c V
    e
    r
    s
    i
    on
    i
    ng
    Increasing of the Version number [MAJOR . MINOR . PATCH]:
    1. MAJOR – incompatible API changes
    2. MINOR – Adding new functionality, backward compatible
    3. PATCH – Error corrections, backward compatible
    Optional existing Labels, to mark Pre-Releases e.g. in Maven
    SNAPSHOT.

    View Slide

  8. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    My
    t
    h
    s & M
    i
    s
    u
    nd
    e
    r
    s
    t
    and
    i
    ng
    s

    Versioning applications can be individual (e.
    g. Firefox)

    SemVer should used by force for Modules,
    Libraries & Micro Services (Integration)

    Version numbers always belong in the
    artifact and cannot be changed!

    Summarize API changes and plan for the
    long term

    Build numbers should not used in version
    numbers

    View Slide

  9. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    S
    i
    ng
    l
    e Po
    i
    n
    t o
    f Fa
    i
    l
    u
    r
    e
    Source: https://github.com/ElmarDott/TP-CORE
    src/main/resources/org/europa/together/configuration/version.properties
    01: version=${project.version}
    src/main/java/org/europa/together/utils/Constraints.java
    029: public static final String MODULE_VERSION = getVersion();
    099: private static String getVersion() {
    100: String filePath
    101: = "org/europa/together/configuration/version.properties";
    102: PropertyReader propertyReader = new PropertyFileReader();
    103: propertyReader.appendPropertiesFromClasspath(filePath);
    104: return propertyReader.getPropertyAsString("version");
    105: }

    View Slide

  10. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Fa
    l
    s
    e Fr
    i
    e
    nd
    s
    Reproducibility & Traceability
    To reproduce means to obtain a
    result that has already been
    achieved under the same conditions
    as often as desired and without
    deviations.
    → Repetition
    Understanding means to fully
    understand how a result was
    achieved in order to be able to adjust
    it if necessary.
    → Understanding

    View Slide

  11. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Er
    r
    o
    r L
    e
    v
    e
    l
    s
    Error levels that can prevent the release from being used:

    Simple Errors (GUI/ Layout/ Labeling)

    Medium Errors (‚simple‘ Logic errors)

    Heavy Errors (Acceptance preventing)
    Release Candidate → Production Candidate

    View Slide

  12. © 2021
    Jc
    on 2021 : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Sp
    r
    i
    n
    t v
    s. R
    e
    l
    e
    a
    s
    e
    1 Iteration = 1 Sprint = n Weeks = Release
    SDL
    Planning /
    Conception
    Implementation
    Operation(s) Test
    1 2
    3
    4

    View Slide

  13. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Pr
    o
    j
    e
    c
    t Pl
    an
    D T
    D T
    D T
    C/T
    D T
    D T
    01 02 03 04 05 06 07 08 09
    Weeks
    Sprint 1
    Sprint 2
    Sprint 3
    Sprint 4
    Sprint 5
    Sprint 6
    1.1.0
    1.2.0
    1.3.0
    1.4.0 Prod.Cand.
    1.5.0
    1.6.0
    Version
    D = Develop / T= Test / C = Corrections

    View Slide

  14. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Te
    s
    t St
    a
    g
    e
    s
    DEVELOP
    INTEGRATION
    ACCEPTANCE
    PRODUCTION
    Hourly Builds (Commit Stage)
    Permanent compile and Unit Tests.
    Line A: 1.1.0
    Line A: 1.1.0
    Line A: 1.1.0
    Line A: 1.1.0
    Nightly Build (Integration & Deploy Tests)
    The application is running. Preparing for Release
    External Quality Check (Retest)
    Released – BugFixes
    Live System
    Released – only critical BugFixes

    View Slide

  15. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Re
    l
    e
    a
    s
    e Ty
    p
    e
    s & D
    e
    p
    l
    o
    y St
    ra
    t
    e
    g
    i
    e
    n
    Blue/ Green Deployment: Redundant deployment with rollback
    option.
    Canary Releases: gradual Roll-out
    A/B Tests: Evaluation of the conversion (user acceptance)
    according to defined criteria.
    Feature Toggles: Turning functionality on and off.

    View Slide

  16. © 2022
    Jc
    on
    f P
    e
    r
    u : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Re
    f
    e
    r
    e
    n
    c
    s
    [1] Marco Schulz, 2021, Continuous Integration mit Jenkins,
    Rheinwerk, ISBN: ISBN 978-3-8362-7834-8
    https://www.rheinwerk-verlag.de/continuous-integration-mit-
    jenkins/
    [2] https://www.youtube.com/watch?v=RVCLIP7vOzo
    [3] Sematic Versioning: https://semver.org
    [3] https://dzone.com/articles/version-number-anti-pattern
    [4] https://elmar-dott.com/articles/modern-times/
    [5] https://elmar-dott.com/articles/automatisierungs
    moglichkeiten-im-software-konfigurations-management/

    View Slide

  17. © 2021
    Jc
    on 2021 : Ro
    l
    l
    i
    ng St
    on
    e
    s
    Cr
    e
    d
    e
    n
    t
    i
    a
    l
    s
    ---------------------------------------------------------
    Homepage : https://elmar-dott.com
    GitHub : https://github.com/ElmarDott
    AnchorFM : https://anchor.fm/elmar-dott
    Twitter : https://twitter.com/ElmarDott
    Speaker Deck : https://speakerdeck.com/elmardott
    Lbry : https://lbry.tv/@elmar.dott:8
    BitChute : https://www.bitchute.com/channel/3IyCzKdX8IpO/
    ---------------------------------------------------------
    Danke / tank you / Gracias

    View Slide

  18. View Slide