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. None
  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 +
  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
  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.
  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
  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
  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.
  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
  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: }
  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
  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
  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
  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
  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
  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.
  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/
  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
  18. None