From 917707b359e3c122553431d73b612c2240f9812b Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sun, 27 Apr 2025 23:50:33 +0200 Subject: [PATCH 01/19] add semantic release learning hour with devops tag --- _learning_hours/devops/semantic_release.md | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 _learning_hours/devops/semantic_release.md diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md new file mode 100644 index 00000000..483e8a5c --- /dev/null +++ b/_learning_hours/devops/semantic_release.md @@ -0,0 +1,31 @@ +--- +theme: devops +title: Semantic Release +kata: lift_button +difficulty: 1 +author: ibanfr? +affiliation: etu? +tags: devops +--- + +# Semantic Release +Learn how to apply Semantic Versioning (SemVer) to automate software releases by working through the Lift Button +Kata. + +This Learning Hour will help you understand versioning principles and integrate them into your development +workflow. + +## Session Outline + +* 5 min connect: How are version numbers assigned for your software? +* 10 min concept: Semantic Versioning Specification +* 40 min concrete: Release a Version for Lift Button +* 5 min conclusions: What are the benefits of releasing on every commit? + + +## TODO + +- The front-matter includes an `affiliation` field. Should this be set to the name of the company or organization that + the author works for? +- The front-matter includes a `difficulty` field. How should a difficulty level be assigned? +- The front-matter includes a `author` filed. Should this be set to the name of the author or their GitHub handle? \ No newline at end of file From c2c42a839f6d68029d14fc0d706d35aa36ff93d1 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Fri, 14 Nov 2025 21:19:27 +0100 Subject: [PATCH 02/19] add Ivan Fernandez to contributors and create member page --- _data/contributors.yml | 5 +++++ society/contributors/ibanfr.md | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 society/contributors/ibanfr.md diff --git a/_data/contributors.yml b/_data/contributors.yml index f1b6693b..e4b733e0 100644 --- a/_data/contributors.yml +++ b/_data/contributors.yml @@ -126,3 +126,8 @@ philou: url: https://philippe.bourgau.net/ affiliation: Independent member: no +ibanfr: + title: Ivan Fernandez + url: https://ibanfr.github.io/ + affiliation: Independent + member: no diff --git a/society/contributors/ibanfr.md b/society/contributors/ibanfr.md new file mode 100644 index 00000000..885bf814 --- /dev/null +++ b/society/contributors/ibanfr.md @@ -0,0 +1,12 @@ +--- +layout: member +title: Ivan Fernandez +author: ibanfr +role: Technical Coach +--- + +# {{ page.title}} +{% assign author = site.data.contributors[page.author] %} +{{author.title}} is an {{author.affiliation}} {{page.role}}. + +Find more information about {{author.title}} at his [site]({{author.url}}). \ No newline at end of file From a44c17620fa70ff4ee6072651d44eb689b1dba02 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Fri, 14 Nov 2025 21:20:03 +0100 Subject: [PATCH 03/19] update author and affiliation in semantic release.md front-matter --- _learning_hours/devops/semantic_release.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 483e8a5c..4ec99764 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -3,8 +3,8 @@ theme: devops title: Semantic Release kata: lift_button difficulty: 1 -author: ibanfr? -affiliation: etu? +author: ibanfr +affiliation: Independent tags: devops --- @@ -27,5 +27,4 @@ workflow. - The front-matter includes an `affiliation` field. Should this be set to the name of the company or organization that the author works for? -- The front-matter includes a `difficulty` field. How should a difficulty level be assigned? -- The front-matter includes a `author` filed. Should this be set to the name of the author or their GitHub handle? \ No newline at end of file +- The front-matter includes a `difficulty` field. How should a difficulty level be assigned? \ No newline at end of file From 46be946858a14de0bf179067de08e9dae958fabe Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sat, 15 Nov 2025 00:00:13 +0100 Subject: [PATCH 04/19] update semantic_release.md with detailed session outline and concepts on Semantic Versioning and Semantic Release --- _learning_hours/devops/semantic_release.md | 75 ++++++++++++++++++++-- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 4ec99764..3a8caeed 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -9,7 +9,7 @@ tags: devops --- # Semantic Release -Learn how to apply Semantic Versioning (SemVer) to automate software releases by working through the Lift Button +Learn how to apply [Semantic Versioning] (SemVer) to automate software releases by working through the Lift Button Kata. This Learning Hour will help you understand versioning principles and integrate them into your development @@ -18,13 +18,78 @@ workflow. ## Session Outline * 5 min connect: How are version numbers assigned for your software? -* 10 min concept: Semantic Versioning Specification +* 5 min concept: Semantic Versioning Specification +* 5 min concept: Semantic Release * 40 min concrete: Release a Version for Lift Button * 5 min conclusions: What are the benefits of releasing on every commit? +## Connect: How are version numbers assigned for your software? +Discuss with the group how version numbers are currently assigned in your projects. Are they done manually or +automatically? What challenges have you faced with versioning? + +## Concept: Semantic Versioning Specification + +Semantic Versioning (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that +dictate how version numbers are assigned and incremented for software releases. + +SemVer uses a three-part version number - `MAJOR.MINOR.PATCH` - to communicate changes to the software with specific +increments to the version number: + +- `MAJOR` version when you make incompatible API changes +- `MINOR` version when you add functionality in a backwards-compatible manner like adding new features. +- `PATCH` version when you make backwards-compatible bug fixes. + +## Concept: Semantic-Release + +[Semantic-Release] is a tool that automates the release process by analyzing commit messages to determine the type of +changes made in the codebase. + +Contributors follow a specific commit message convention to indicate the nature of their changes: + +```conventionalcommit +: + + + + +``` + +For example: +```conventionalcommit +feat: add lights() method to Lift class to query the light status +``` + +By using Semantic Release, teams can ensure consistent and reliable releases, reduce human error, and streamline the +release process. + +## Concrete: Release a Version for Lift Button + +Practice with the Lift Button Kata in your IDE: + +1. Start by [forking] or [duplicating] the [semantic-versioning-kata] repository. +2. Use formalized commit message convention to document changes in the codebase. + + ```html + | Type | Description | + |----------|-----------------------------------------------------------| + | feat | A new feature | + | fix | A bug fix | + | refactor | A code change that neither fixes a bug nor adds a feature | + ``` + +3. New features and fixes are immediately available to the users after a commit is pushed to the main branch. + +## Conclusions: What are the benefits of releasing on every commit? + +Discuss the advantages of automating releases with Semantic Release. Is it really a good idea to release on every +commit? What benefits does it bring to your development workflow and team collaboration? ## TODO -- The front-matter includes an `affiliation` field. Should this be set to the name of the company or organization that - the author works for? -- The front-matter includes a `difficulty` field. How should a difficulty level be assigned? \ No newline at end of file +- The front-matter includes a `difficulty` field. How should a difficulty level be assigned? + +[Semantic Versioning]: https://semver.org/ +[Semantic-Release]: https://semantic-release.gitbook.io/semantic-release +[forking]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo#forking-a-repository +[duplicating]: https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository +[semantic-versioning-kata]: https://github.com/ibanFR/semantic-versioning-kata \ No newline at end of file From 5fca31430c65fb2ec37b353416c1081b008353fd Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sat, 15 Nov 2025 09:24:13 +0100 Subject: [PATCH 05/19] remove TODO section from semantic_release.md --- _learning_hours/devops/semantic_release.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 3a8caeed..ddffbb31 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -84,9 +84,6 @@ Practice with the Lift Button Kata in your IDE: Discuss the advantages of automating releases with Semantic Release. Is it really a good idea to release on every commit? What benefits does it bring to your development workflow and team collaboration? -## TODO - -- The front-matter includes a `difficulty` field. How should a difficulty level be assigned? [Semantic Versioning]: https://semver.org/ [Semantic-Release]: https://semantic-release.gitbook.io/semantic-release From 841b21223befc0a6e05266ee9871e38102e07a47 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sat, 15 Nov 2025 09:44:32 +0100 Subject: [PATCH 06/19] remove hyphen from Semantic Release link --- _learning_hours/devops/semantic_release.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index ddffbb31..9b5661a0 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -9,7 +9,7 @@ tags: devops --- # Semantic Release -Learn how to apply [Semantic Versioning] (SemVer) to automate software releases by working through the Lift Button +Learn how to apply Semantic Versioning (SemVer) to automate software releases by working through the [Lift Button]({% link _kata_descriptions/lift_button.md %}) Kata. This Learning Hour will help you understand versioning principles and integrate them into your development @@ -29,7 +29,7 @@ automatically? What challenges have you faced with versioning? ## Concept: Semantic Versioning Specification -Semantic Versioning (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that +[Semantic Versioning] (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that dictate how version numbers are assigned and incremented for software releases. SemVer uses a three-part version number - `MAJOR.MINOR.PATCH` - to communicate changes to the software with specific @@ -41,7 +41,7 @@ increments to the version number: ## Concept: Semantic-Release -[Semantic-Release] is a tool that automates the release process by analyzing commit messages to determine the type of +[Semantic Release] is a tool that automates the release process by analyzing commit messages to determine the type of changes made in the codebase. Contributors follow a specific commit message convention to indicate the nature of their changes: @@ -86,7 +86,7 @@ commit? What benefits does it bring to your development workflow and team collab [Semantic Versioning]: https://semver.org/ -[Semantic-Release]: https://semantic-release.gitbook.io/semantic-release +[Semantic Release]: https://semantic-release.gitbook.io/semantic-release [forking]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo#forking-a-repository [duplicating]: https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository [semantic-versioning-kata]: https://github.com/ibanFR/semantic-versioning-kata \ No newline at end of file From 06c4ee27a48841d7866b5668d65d23eb4f913031 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sat, 15 Nov 2025 10:32:53 +0100 Subject: [PATCH 07/19] update section Concept: Semantic Versioning Specification in semantic_release.md --- _learning_hours/devops/semantic_release.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 9b5661a0..dbc2ae39 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -35,9 +35,9 @@ dictate how version numbers are assigned and incremented for software releases. SemVer uses a three-part version number - `MAJOR.MINOR.PATCH` - to communicate changes to the software with specific increments to the version number: -- `MAJOR` version when you make incompatible API changes -- `MINOR` version when you add functionality in a backwards-compatible manner like adding new features. -- `PATCH` version when you make backwards-compatible bug fixes. +- `MAJOR` version, increased for backwards incompatible changes. +- `MINOR` version, increased for new features/functionality in a backwards compatible manner. +- `PATCH` version, increased for backwards compatible bug fixes. ## Concept: Semantic-Release From b844b0806e36ad028cbec6aee02479ad7e0030c5 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Tue, 18 Nov 2025 21:41:46 +0000 Subject: [PATCH 08/19] update session outline in semantic_release.md with revised time allocations for concepts and concrete examples --- _learning_hours/devops/semantic_release.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index dbc2ae39..10e8b8c5 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -19,8 +19,9 @@ workflow. * 5 min connect: How are version numbers assigned for your software? * 5 min concept: Semantic Versioning Specification -* 5 min concept: Semantic Release -* 40 min concrete: Release a Version for Lift Button +* 10 min concept: Semantic Release +* 20 min concrete: Release initial features for Lift Button +* 15 min concrete: Release a BREAKING CHANGE for Lift Button * 5 min conclusions: What are the benefits of releasing on every commit? ## Connect: How are version numbers assigned for your software? From e8e286b1de2a0e526eb414858368ffe82efc688d Mon Sep 17 00:00:00 2001 From: ibanFR Date: Wed, 26 Nov 2025 09:51:44 +0000 Subject: [PATCH 09/19] update semantic_release.md to clarify concepts and improve structure --- _learning_hours/devops/semantic_release.md | 97 +++++++++++++++++----- 1 file changed, 75 insertions(+), 22 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 10e8b8c5..6b5431f9 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -25,37 +25,39 @@ workflow. * 5 min conclusions: What are the benefits of releasing on every commit? ## Connect: How are version numbers assigned for your software? + Discuss with the group how version numbers are currently assigned in your projects. Are they done manually or automatically? What challenges have you faced with versioning? ## Concept: Semantic Versioning Specification -[Semantic Versioning] (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that +[Semantic Versioning] (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that dictate how version numbers are assigned and incremented for software releases. -SemVer uses a three-part version number - `MAJOR.MINOR.PATCH` - to communicate changes to the software with specific -increments to the version number: +SemVer uses a three-part version number - `MAJOR.MINOR.PATCH` - to communicate changes to the software with specific +increments to the version number: - `MAJOR` version, increased for backwards incompatible changes. - `MINOR` version, increased for new features/functionality in a backwards compatible manner. - `PATCH` version, increased for backwards compatible bug fixes. -## Concept: Semantic-Release +## Concept: Semantic Release [Semantic Release] is a tool that automates the release process by analyzing commit messages to determine the type of changes made in the codebase. Contributors follow a specific commit message convention to indicate the nature of their changes: -```conventionalcommit +``` : - + - + ``` For example: + ```conventionalcommit feat: add lights() method to Lift class to query the light status ``` @@ -63,31 +65,82 @@ feat: add lights() method to Lift class to query the light status By using Semantic Release, teams can ensure consistent and reliable releases, reduce human error, and streamline the release process. -## Concrete: Release a Version for Lift Button +## Concrete: Release initial features for Lift Button -Practice with the Lift Button Kata in your IDE: +After reviewing the [Lift Button Requirements]({% link _kata_descriptions/lift_button.md %}), the team has come up +with an initial Test list to implement the first features of the Lift Button: -1. Start by [forking] or [duplicating] the [semantic-versioning-kata] repository. -2. Use formalized commit message convention to document changes in the codebase. +```java +//TEST LIST +//[] - doors should be CLOSED when Lift is created +//[] - should switch lights ON when button is pressed and doors are CLOSED +//[] - should OPEN the lift doors when lift arrives +//[] - should switch OFF the lights when lift arrives +//[] - lights should be OFF when button is pressed AND doors are OPEN +``` + +Your task is to help the team implement the initial Lift Button features and automate the release process using Semantic +Release: + +1. Start by creating a new repository from [this template]. +2. Write one test at a time and document your changes using semantic commit messages: ```html - | Type | Description | - |----------|-----------------------------------------------------------| - | feat | A new feature | - | fix | A bug fix | - | refactor | A code change that neither fixes a bug nor adds a feature | + | Type | Description | + |----------|--------------------------------------| + | feat | A new feature | + | fix | A bug fix | + | refactor | A behavior preserving change | + ``` + +3. View your [repository's releases and tags] to see the published versions based on your commit messages (new + features and fixes are immediately available to the users after a commit is pushed to the main branch). + +## Concrete: Release a BREAKING CHANGE for Lift Button + +Following the release of version `v1.y.z`, customers raised a safety concern: the lift doors should not be closed when +the lift is initialized! + +As a result, the customers have requested a change so that the doors remain open upon lift creation. Here is the new +feature request: + +```gherkin +Feature: Open doors when lift is first started + + As a safety-conscious user + I want the lift doors to be open when the lift is first started + So that I can ensure safe entry and exit from the lift + + Scenario: The one where the Lift is first started + When the Lift is first started + Then the Lift doors should be OPEN +``` + +This change requires users of version `v1.y.z` to update their code for compatibility with the new lift behavior, so +the team will release this feature as a breaking change: + +1. Update the code to implement the new requirement and release a new version of the Lift Button. +2. Use the footer in your commit message to indicate that this change is not backwards compatible. + ``` + : -3. New features and fixes are immediately available to the users after a commit is pushed to the main branch. + BREAKING CHANGE: + + ``` +3. After pushing your commit to the main branch, check your [repository's releases and tags] to see the new major + version created for the breaking change. ## Conclusions: What are the benefits of releasing on every commit? -Discuss the advantages of automating releases with Semantic Release. Is it really a good idea to release on every -commit? What benefits does it bring to your development workflow and team collaboration? +Discuss the advantages of automating releases with Semantic Release. Is it really a good idea to release on every +commit? What benefits does it bring to your development workflow and team collaboration? [Semantic Versioning]: https://semver.org/ + [Semantic Release]: https://semantic-release.gitbook.io/semantic-release -[forking]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo#forking-a-repository -[duplicating]: https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository -[semantic-versioning-kata]: https://github.com/ibanFR/semantic-versioning-kata \ No newline at end of file + +[this template]: https://github.com/ibanFR/semantic-release-kata + +[repository's releases and tags]: https://docs.github.com/en/repositories/releasing-projects-on-github/viewing-your-repositorys-releases-and-tags \ No newline at end of file From 63ff89227296cb6f98a62408d5fc0bfe4fed126c Mon Sep 17 00:00:00 2001 From: ibanFR Date: Wed, 26 Nov 2025 10:23:50 +0000 Subject: [PATCH 10/19] =?UTF-8?q?correct=20spelling=20of=20Iv=C3=A1n=20Fer?= =?UTF-8?q?n=C3=A1ndez=20in=20contributor=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _data/contributors.yml | 2 +- society/contributors/ibanfr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_data/contributors.yml b/_data/contributors.yml index e7e01982..9ea8b263 100644 --- a/_data/contributors.yml +++ b/_data/contributors.yml @@ -141,7 +141,7 @@ nicolerauch: affiliation: Independent member: yes ibanfr: - title: Ivan Fernandez + title: Iván Fernández url: https://ibanfr.github.io/ affiliation: Independent member: no diff --git a/society/contributors/ibanfr.md b/society/contributors/ibanfr.md index 885bf814..fffa5142 100644 --- a/society/contributors/ibanfr.md +++ b/society/contributors/ibanfr.md @@ -1,6 +1,6 @@ --- layout: member -title: Ivan Fernandez +title: Iván Fernández author: ibanfr role: Technical Coach --- From c70382fd4e40b0903b73b7b3746ecba605406a3b Mon Sep 17 00:00:00 2001 From: ibanFR Date: Tue, 2 Dec 2025 19:20:49 +0000 Subject: [PATCH 11/19] .t approve search results --- ...t_generated_search_json.test_search_json.approved.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/test_generated_search_json.test_search_json.approved.json b/tests/test_generated_search_json.test_search_json.approved.json index 29900106..168c3bfb 100644 --- a/tests/test_generated_search_json.test_search_json.approved.json +++ b/tests/test_generated_search_json.test_search_json.approved.json @@ -595,6 +595,10 @@ "title": "Learning Hour: Learn Faster By Practicing Teaching", "url": "/learning_hours/devops/learn_faster.html" }, + { + "title": "Learning Hour: Semantic Release", + "url": "/learning_hours/devops/semantic_release.html" + }, { "title": "Learning Hour: The three ways of DevOps", "url": "/learning_hours/devops/three_ways.html" @@ -1259,6 +1263,10 @@ "title": "Gregor Riegler", "url": "/society/contributors/gregorriegler.html" }, + { + "title": "Iv\u00e1n Fern\u00e1ndez", + "url": "/society/contributors/ibanfr.html" + }, { "title": "Llewellyn Falco", "url": "/society/contributors/isidore.html" From 29acdfdaddfa8777a5eb3f2f9f732cf63483da52 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Thu, 4 Dec 2025 19:58:42 +0000 Subject: [PATCH 12/19] doc: update semantic_release.md with learning goals --- _learning_hours/devops/semantic_release.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 6b5431f9..1577a300 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -13,7 +13,13 @@ Learn how to apply Semantic Versioning (SemVer) to automate software releases by Kata. This Learning Hour will help you understand versioning principles and integrate them into your development -workflow. +workflow. + +## Learning Goals + +* Understand the principles of Semantic Versioning (SemVer). +* Write semantic commit messages to document the nature of the changes made in the codebase. +* Explore how semantic-release uses the commit messages to automate software releases. ## Session Outline From c1b48133b9d9555af0c1320cf72347daa986f3a7 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Thu, 4 Dec 2025 23:15:32 +0000 Subject: [PATCH 13/19] doc: update semantic_release.md conclusions section --- _learning_hours/devops/semantic_release.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 1577a300..1684e1a1 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -17,9 +17,9 @@ workflow. ## Learning Goals -* Understand the principles of Semantic Versioning (SemVer). -* Write semantic commit messages to document the nature of the changes made in the codebase. -* Explore how semantic-release uses the commit messages to automate software releases. +1. Understand the principles of Semantic Versioning (SemVer). +2. Write semantic commit messages to document the nature of the changes made in the codebase. +3. Explore how semantic-release uses the commit messages to automate software releases. ## Session Outline @@ -137,10 +137,18 @@ the team will release this feature as a breaking change: 3. After pushing your commit to the main branch, check your [repository's releases and tags] to see the new major version created for the breaking change. -## Conclusions: What are the benefits of releasing on every commit? +## Conclusions: When should you use semantic commit messages? -Discuss the advantages of automating releases with Semantic Release. Is it really a good idea to release on every -commit? What benefits does it bring to your development workflow and team collaboration? +Now that you have experienced how semantic commit messages are used to release new features of the Lift Button, ask the +group to think about: + +> _[When should you use]({% link _activities/conclusions/when_to_use_this.md %}) semantic commit messages?_ + +Collect and summarize the ideas for everyone. Highlight the ones that better align with the learning goals: + +> _"Use semantic commit messages to automate software releases in a continuous delivery pipeline"_ +> +> _"Semantic commit messages help communicate the nature of changes to the codebase"_ [Semantic Versioning]: https://semver.org/ From 6e9ef49f8f6de9a38bed67ff644ccb2a2d06c999 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Fri, 5 Dec 2025 07:45:58 +0000 Subject: [PATCH 14/19] doc: remove Session Outline section from semantic_release.md --- _learning_hours/devops/semantic_release.md | 23 +++++++--------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 1684e1a1..e24120b4 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -15,27 +15,18 @@ Kata. This Learning Hour will help you understand versioning principles and integrate them into your development workflow. -## Learning Goals +## 🎯 Learning Goals 1. Understand the principles of Semantic Versioning (SemVer). 2. Write semantic commit messages to document the nature of the changes made in the codebase. 3. Explore how semantic-release uses the commit messages to automate software releases. -## Session Outline - -* 5 min connect: How are version numbers assigned for your software? -* 5 min concept: Semantic Versioning Specification -* 10 min concept: Semantic Release -* 20 min concrete: Release initial features for Lift Button -* 15 min concrete: Release a BREAKING CHANGE for Lift Button -* 5 min conclusions: What are the benefits of releasing on every commit? - -## Connect: How are version numbers assigned for your software? +## 1️⃣ Connect: How are version numbers assigned for your software? (⏱️ 5 min) Discuss with the group how version numbers are currently assigned in your projects. Are they done manually or automatically? What challenges have you faced with versioning? -## Concept: Semantic Versioning Specification +## 2️⃣ Concept: Semantic Versioning Specification (⏱️ 5 min) [Semantic Versioning] (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that dictate how version numbers are assigned and incremented for software releases. @@ -47,7 +38,7 @@ increments to the version number: - `MINOR` version, increased for new features/functionality in a backwards compatible manner. - `PATCH` version, increased for backwards compatible bug fixes. -## Concept: Semantic Release +## 3️⃣ Concept: Semantic Release (⏱️ 10 min) [Semantic Release] is a tool that automates the release process by analyzing commit messages to determine the type of changes made in the codebase. @@ -71,7 +62,7 @@ feat: add lights() method to Lift class to query the light status By using Semantic Release, teams can ensure consistent and reliable releases, reduce human error, and streamline the release process. -## Concrete: Release initial features for Lift Button +## 4️⃣ Concrete: Release initial features for Lift Button (⏱️ 20 min) After reviewing the [Lift Button Requirements]({% link _kata_descriptions/lift_button.md %}), the team has come up with an initial Test list to implement the first features of the Lift Button: @@ -102,7 +93,7 @@ Release: 3. View your [repository's releases and tags] to see the published versions based on your commit messages (new features and fixes are immediately available to the users after a commit is pushed to the main branch). -## Concrete: Release a BREAKING CHANGE for Lift Button +## 5️⃣ Concrete: Release a BREAKING CHANGE for Lift Button (⏱️ 15 min) Following the release of version `v1.y.z`, customers raised a safety concern: the lift doors should not be closed when the lift is initialized! @@ -137,7 +128,7 @@ the team will release this feature as a breaking change: 3. After pushing your commit to the main branch, check your [repository's releases and tags] to see the new major version created for the breaking change. -## Conclusions: When should you use semantic commit messages? +## 6️⃣ Conclusions: When should you use semantic commit messages? (⏱️ 5 min) Now that you have experienced how semantic commit messages are used to release new features of the Lift Button, ask the group to think about: From b316b4c123c32f2f723c2218aadec765fcc8366d Mon Sep 17 00:00:00 2001 From: ibanFR Date: Fri, 5 Dec 2025 12:48:26 +0000 Subject: [PATCH 15/19] doc: add Session Outline section to semantic_release.md --- _learning_hours/devops/semantic_release.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index e24120b4..6c31ca87 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -21,6 +21,15 @@ workflow. 2. Write semantic commit messages to document the nature of the changes made in the codebase. 3. Explore how semantic-release uses the commit messages to automate software releases. +## 📝 Session Outline + +* 5 min connect: How are version numbers assigned for your software? +* 5 min concept: Semantic Versioning Specification +* 10 min concept: Semantic Release +* 20 min concrete: Release initial features for Lift Button +* 15 min concrete: Release a BREAKING CHANGE for Lift Button +* 5 min conclusions: What are the benefits of releasing on every commit? + ## 1️⃣ Connect: How are version numbers assigned for your software? (⏱️ 5 min) Discuss with the group how version numbers are currently assigned in your projects. Are they done manually or From 96008e0bc56194b8aedbbfa6746572210f5d3f0a Mon Sep 17 00:00:00 2001 From: ibanFR Date: Fri, 5 Dec 2025 22:57:48 +0000 Subject: [PATCH 16/19] doc: update connect section in semantic_release.md --- _learning_hours/devops/semantic_release.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 6c31ca87..28d28eae 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -18,7 +18,7 @@ workflow. ## 🎯 Learning Goals 1. Understand the principles of Semantic Versioning (SemVer). -2. Write semantic commit messages to document the nature of the changes made in the codebase. +2. Write semantic commit messages to document the nature of the changes made to the codebase. 3. Explore how semantic-release uses the commit messages to automate software releases. ## 📝 Session Outline @@ -32,8 +32,13 @@ workflow. ## 1️⃣ Connect: How are version numbers assigned for your software? (⏱️ 5 min) -Discuss with the group how version numbers are currently assigned in your projects. Are they done manually or -automatically? What challenges have you faced with versioning? +Discuss with the group how version numbers are currently assigned in their current projects. You may +use [Describe your experience]({% link _activities/connect/your_experience.md %}) or +[Three Facts]({% link _activities/connect/three_facts.md %}) depending on the team size. + +Write notes of what they say on a whiteboard or shared document where everyone can see them. + +Review the notes and highlight those that relate to the concepts covered in the upcoming sections. ## 2️⃣ Concept: Semantic Versioning Specification (⏱️ 5 min) From 1edced82cb2daff1e0fac9ea5798909b799943e8 Mon Sep 17 00:00:00 2001 From: ibanFR Date: Fri, 5 Dec 2025 23:02:05 +0000 Subject: [PATCH 17/19] doc: update Session Outline section in semantic_release.md --- _learning_hours/devops/semantic_release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 28d28eae..ed2ed364 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -28,7 +28,7 @@ workflow. * 10 min concept: Semantic Release * 20 min concrete: Release initial features for Lift Button * 15 min concrete: Release a BREAKING CHANGE for Lift Button -* 5 min conclusions: What are the benefits of releasing on every commit? +* 5 min conclusions: When should you use semantic commit messages? ## 1️⃣ Connect: How are version numbers assigned for your software? (⏱️ 5 min) From d7ee95d707440ed23fa955a73303eb8a0991378d Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sat, 13 Dec 2025 10:21:54 +0000 Subject: [PATCH 18/19] doc: update Connect section in semantic_release.md --- _learning_hours/devops/semantic_release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index ed2ed364..0f15ca74 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -32,9 +32,9 @@ workflow. ## 1️⃣ Connect: How are version numbers assigned for your software? (⏱️ 5 min) -Discuss with the group how version numbers are currently assigned in their current projects. You may +Discuss with the group how version numbers are currently assigned in their current projects (you may use [Describe your experience]({% link _activities/connect/your_experience.md %}) or -[Three Facts]({% link _activities/connect/three_facts.md %}) depending on the team size. +[Three Facts]({% link _activities/connect/three_facts.md %}) depending on the team size). Write notes of what they say on a whiteboard or shared document where everyone can see them. From a864c9e893f9c0b8d63349c1ea62ab926e1c98bc Mon Sep 17 00:00:00 2001 From: ibanFR Date: Sat, 13 Dec 2025 13:59:56 +0000 Subject: [PATCH 19/19] docs: correct grammatical error in semantic versioning description --- _learning_hours/devops/semantic_release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_learning_hours/devops/semantic_release.md b/_learning_hours/devops/semantic_release.md index 0f15ca74..bec499f5 100644 --- a/_learning_hours/devops/semantic_release.md +++ b/_learning_hours/devops/semantic_release.md @@ -42,7 +42,7 @@ Review the notes and highlight those that relate to the concepts covered in the ## 2️⃣ Concept: Semantic Versioning Specification (⏱️ 5 min) -[Semantic Versioning] (SemVer) is a versioning scheme that consist in Simple set of rules and requirements that +[Semantic Versioning] (SemVer) is a versioning scheme that consist in a simple set of rules and requirements that dictate how version numbers are assigned and incremented for software releases. SemVer uses a three-part version number - `MAJOR.MINOR.PATCH` - to communicate changes to the software with specific