{"id":13529588,"url":"https://github.com/Decathlon/release-notes-generator-action","last_synced_at":"2025-04-01T16:31:37.541Z","repository":{"id":46608055,"uuid":"190398935","full_name":"Decathlon/release-notes-generator-action","owner":"Decathlon","description":"Action to auto generate a release note based on your events","archived":false,"fork":false,"pushed_at":"2023-02-27T08:20:14.000Z","size":591,"stargazers_count":119,"open_issues_count":1,"forks_count":20,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-15T02:11:29.411Z","etag":null,"topics":["github-actions","release-note","spring"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Decathlon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-06-05T13:22:00.000Z","updated_at":"2025-02-18T16:35:13.000Z","dependencies_parsed_at":"2024-01-10T23:02:18.966Z","dependency_job_id":"398c7850-1b04-41af-9361-5b7d5b3d38bc","html_url":"https://github.com/Decathlon/release-notes-generator-action","commit_stats":{"total_commits":32,"total_committers":8,"mean_commits":4.0,"dds":0.53125,"last_synced_commit":"8135ff66479cf93e8dd8bbdf301542740539fc8d"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decathlon%2Frelease-notes-generator-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decathlon%2Frelease-notes-generator-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decathlon%2Frelease-notes-generator-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Decathlon%2Frelease-notes-generator-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Decathlon","download_url":"https://codeload.github.com/Decathlon/release-notes-generator-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246511059,"owners_count":20789463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-actions","release-note","spring"],"created_at":"2024-08-01T07:00:37.672Z","updated_at":"2025-04-01T16:31:37.172Z","avatar_url":"https://github.com/Decathlon.png","language":"Shell","funding_links":[],"categories":["Community Resources","Shell"],"sub_categories":["GitHub Tools and Management"],"readme":"\u003ch1\u003e\n  \u003cp align=\"center\"\u003e\n    Release Note Generator GitHub Action\n  \u003c/p\u003e\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  This repository provides a GitHub action to \u003cstrong\u003eautomatically create a release notes\u003c/strong\u003e when a milestone is closed.\n\u003c/p\u003e\n\n**Table of Contents**\n  - [Common usage](#common-usage)\n  - [Why?](#why)\n  - [Startup](#startup)\n    - [Use GitHub action](#use-github-action)\n      - [Settings for v2.0.0+ release](#settings-for-v200-release)\n      - [NOTE](#note)\n      - [Result illustration](#result-illustration)\n    - [Configure output folder](#configure-output-folder)\n    - [Custom output release file](#custom-output-release-file)\n      - [Prefixed name using v2.0.0+](#prefixed-name-using-v200)\n    - [Use Milestone title](#use-milestone-title)\n      - [Prefixed name using v2.0.0+](#prefixed-name-using-v200-1)\n      - [Result illustration](#result-illustration-1)\n  - [How to use the generated file](#how-to-use-the-generated-file)\n\n## Common usage\n\nEach time a milestone is closed, this GitHub action scans its attached issues and pull request, and automatically generates a wonderful release note.  \n\n_The action uses [Spring.io changelog generator](https://github.com/spring-io/github-changelog-generator) tool._\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/Decathlon/release-notes-generator-action/raw/master/images/release_notes.png\" alt=\"Result illustration\"/\u003e\n\u003cp\u003e\n\n## Why?\n\nWhy aren't we simply automating the release creation and push the release notes there?  \nWe think in some cases it is better to keep release notes separated from the release process... yeah, maybe the right name is not release notes anymore. :) Taking as example a continuous deployment project: __anytime you push to the repository, a new version of the application is built and pushed in production.__ And so, a new release is created to complete the process; a release with a **single** feature inside.  \nWe think it is not a good idea to push to 'users' a new release notes message every time you generate a changes in the source code (let us say 10 times a day?).  \nIt may be a better way to communicate only once every week or once the sprint is over, which gives you a clearer and complete release notes containing the aggregated information pushed in production within the last sprint (or any days).\n\n## Startup\n\n### Use GitHub action\n\n#### Settings for v2.0.0+ release\n\nCreate a file into your root project directory: `.github/workflows/release-notes.yml`:\n```yaml\n# Trigger the workflow on milestone events\non: \n  milestone:\n    types: [closed]\nname: Milestone Closure\njobs:\n  create-release-notes:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@master\n    - name: Create Release Notes\n      uses: docker://decathlon/release-notes-generator-action:2.0.1\n      env:\n        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        OUTPUT_FOLDER: temp_release_notes\n        USE_MILESTONE_TITLE: \"true\"\n```\n\n#### Settings for workflow_dispatch\nSince the release 3.1.0 the action supports to trigger it via the (GitHub workflow_dispatch)[https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/] allowing to manually trigger an action workflow.\nTo use it you should add a dispatch configuration in your action, like the following.\n```yaml\non:\n  milestone:\n    types: [closed]\n  workflow_dispatch:\n    inputs:\n      milestoneId:\n        description: 'Milestone ID'     \n        required: true\n        default: '1'\n```\nIt is important to keep the `milestoneId` variable name which is used inside the Action itself.\nWith the configuration in the example the action is triggered both for milestone closure and workflow_dispatch.\n\n#### NOTE\nIt is important to add the *GITHUB_TOKEN* secret because the action needs to access to your repository Milestone/Issues information using the GitHub API.\n\nAs we filtered on *milestone* the action will execute anytime an event occurs on your repository milestones.\n\n#### Result illustration\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Decathlon/release-notes-generator-action/master/images/actions_log.png\" alt=\"Result illustration\"/\u003e\n\u003cp\u003e\n\n\nThe action is then filtered on *closed* events. All other events on the milestones will only log an action execution but the release notes won't be created.\n\n```console\n### STARTED Create Release Notes 14:25:34Z\n[...]\nGetting Action Information\nRelease note generation skipped because action was: opened\n\n### SUCCEEDED Create Release Notes 14:25:55Z (21.262s)\n```\n\n```console\n### STARTED Create Release Notes 14:25:41Z\n[...]\nGetting Action Information\n\n  .   ____          _            __ _ _\n /\\\\ / ___'_ __ _ _(_)_ __  __ _ \\ \\ \\ \\\n( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\\n \\\\/  ___)| |_)| | | | | || (_| |  ) ) ) )\n  '  |____| .__|_| |_|_| |_\\__, | / / / /\n =========|_|==============|___/=/_/_/_/\n :: Spring Boot ::        (v2.1.0.RELEASE)\n\n2019-04-14 14:25:57.901  INFO 125 --- [           main] io.spring.releasenotes.Application       : Starting Application v0.0.2 on 5cbc3fcc29cd with PID 125 (/github-release-notes-generator.jar started by root in /github/workspace)\n2019-04-14 14:25:57.922  INFO 125 --- [           main] io.spring.releasenotes.Application       : No active profile set, falling back to default profiles: default\n2019-04-14 14:26:00.905  INFO 125 --- [           main] io.spring.releasenotes.Application       : Started Application in 4.178 seconds (JVM running for 5.345)\n## :star: New Features\n\n- test 2 [#2](https://github.com/Decathlon/test/issues/2)\n\n### SUCCEEDED Create Release Notes 14:26:07Z (26.262s)\n```\n\n### Configure output folder\nBy default the release file is created into the Docker home folder. If you want you can specify a custom folder for your file creation via the `OUTPUT_FOLDER` environment variable.\n\n### Custom output release file\nBy default the output is created into *release_file.md* file. You can control the output name using environment variables in your action.\n\n#### Prefixed name using v2.0.0+\n```YAML\n- name: Create Release Notes\n  uses: docker://decathlon/release-notes-generator-action:2.0.1\n  env:\n    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n    FILENAME_PREFIX: MyMilestone\n```\n\nThe output filename will be `MyMilestone_2` (if the milestone id is 2).\n\n#### Filename using v2.0.0+\n```YAML\n- name: Create Release Notes\n  uses: docker://decathlon/release-notes-generator-action:2.0.1\n  env:\n    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n    FILENAME: ProvidedFilename\n```\n\nThe output filename will be `ProvidedFilename.md`. This can be mixed up with the `FILENAME_PREFIX`.\n\n### Use Milestone title\nProviding the `USE_MILESTONE_TITLE` environment variable which allow you to switch the name to the Milestone title instead of providing a *static* one.\nThe title will be modified replacing spaces with underscore '_' char. This will be overridden by `FILENAME`.\n\n#### Prefixed name using v2.0.0+\n\n```YAML\n- name: Create Release Notes\n  uses: docker://decathlon/release-notes-generator-action:2.0.1\n  env:\n    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n    USE_MILESTONE_TITLE: \"true\"\n```\n\n#### Result illustration\n```console\n[...]\nCreating release notes for Milestone 1 into the Sprint_10.md file\n[...]\n### SUCCEEDED Create Release Notes 15:53:53Z (15.913s)\n```\n\n## Section configuration\nYou can manage the sections and how they are used by the release generator, creating the `.github/release-notes.yml` file in the repository where you activate the action.\nAn example of file content (you can find detailed information directly on the [Spring repository](https://github.com/spring-io/github-changelog-generator#customizing-sections))\n```\nchangelog:\n  sections:\n  - title: \"Enhancements\"\n    labels: [\"new\"]\n  - title: \"Bugs\"\n    labels: [\"fix\"]\n```\nIn the sections list you can configure each section with an emoji and a list of labels to take care of for this section.\n\n## How to use the generated file\nThe idea is to keep the control about what to do with the release notes file.  \nSo simply link a new action and: send it by mail, push it on your website, on the github wiki, ...\n\nPersonally, in some of our projects, we are pushing the release note as new GitHub wiki page using the [Wiki page creator action](https://github.com/Decathlon/wiki-page-creator-action).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDecathlon%2Frelease-notes-generator-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDecathlon%2Frelease-notes-generator-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDecathlon%2Frelease-notes-generator-action/lists"}