{"id":17493332,"url":"https://github.com/brainelectronics/changelog-based-release","last_synced_at":"2026-06-18T20:30:56.508Z","repository":{"id":65159115,"uuid":"564811707","full_name":"brainelectronics/changelog-based-release","owner":"brainelectronics","description":"📦 :octocat: GitHub Action for creating changelog based GitHub Releases","archived":false,"fork":false,"pushed_at":"2022-11-12T11:55:31.000Z","size":35,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-03-14T19:53:39.766Z","etag":null,"topics":["actions","changelog","changelog-parser","github-actions","github-releases","release","release-automation","tagging"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brainelectronics.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-11T14:56:09.000Z","updated_at":"2023-11-07T13:01:30.000Z","dependencies_parsed_at":"2023-01-05T04:52:45.380Z","dependency_job_id":null,"html_url":"https://github.com/brainelectronics/changelog-based-release","commit_stats":{"total_commits":48,"total_committers":2,"mean_commits":24.0,"dds":0.02083333333333337,"last_synced_commit":"0595b13ebc15adead905aa4f8c031c23a30ca690"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainelectronics%2Fchangelog-based-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainelectronics%2Fchangelog-based-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainelectronics%2Fchangelog-based-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brainelectronics%2Fchangelog-based-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brainelectronics","download_url":"https://codeload.github.com/brainelectronics/changelog-based-release/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246068302,"owners_count":20718505,"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":["actions","changelog","changelog-parser","github-actions","github-releases","release","release-automation","tagging"],"created_at":"2024-10-19T12:06:34.744Z","updated_at":"2026-06-18T20:30:56.502Z","avatar_url":"https://github.com/brainelectronics.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Changelog based release Action\n\n[![Create release](https://github.com/brainelectronics/changelog-based-release/actions/workflows/release.yaml/badge.svg)](https://github.com/brainelectronics/changelog-based-release/actions/workflows/release.yaml)\n![Release](https://img.shields.io/github/v/release/brainelectronics/changelog-based-release?include_prereleases\u0026color=success)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nGitHub Action for creating changelog based GitHub Releases\n\n---\n\n\u003c!-- MarkdownTOC --\u003e\n\n- [Requirements](#requirements)\n  - [Tag section](#tag-section)\n- [Usage](#usage)\n  - [Basic usage](#basic-usage)\n  - [Customizing](#customizing)\n  - [Outputs](#outputs)\n  - [Permissions](#permissions)\n- [License](#license)\n\n\u003c!-- /MarkdownTOC --\u003e\n\n## Requirements\n\nAs this Action uses the [changelog2version](https://github.com/brainelectronics/changelog2version)\nto parse and extract informations from a changelog, the requirements for the\nchangelog format have to meet certain criterias.\n\n### Tag section\n\nThe header of an entry in the changelog has to follow the following format if\nnot specified differently with the `version-line-regex` and/or `semver-line-regex`\noption in the workflow.\n\nThis changelog entry shall follow the\n[semantic version pattern](https://semver.org/) and shall match the following\npattern:\n\n`## [x.y.z] - yyyy-mm-dd` or `## [x.y.z] - yyyy-mm-ddThh:mm:ss`\n\nThe line shall start with two hashtags (`##`) followed by a single space (` `).\nThe semver version with `x`, `y` and `z` as non-negative integers, seperated\nby a dot (`.`) and surrounded by square brackets (`[]`). Followed by a space\n(` `), a dash (`-`), another space (` `) and the\n[ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html) formatted\ndate. Additional timestamps after the date, seperated from the date by a\nsingle space (` `) or a capital (`T`), are optional. The semantic version tag\ninside the square brackets (`[]`) supports the full semantic versioning scope.\n\nExamples:\n\n- `## [1.2.3] - 2022-11-13`\n- `## [1.2.3-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay] - 2022-11-13T12:34:56`\n\nThe [changelog](changelog.md) of this repo is an example of how the changelog\nshall look like to be parsable with the default changelog2version settings.\n\n## Usage\n\n### Basic usage\n\nWith the default values used a GitHub release and tag based on the changelog\nlocated in the project root will be created. For further details check the\n[customizing section](#customizing)\n\nSee [action.yml](action.yml)\n\n```yaml\nname: Create release\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: write\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    name: Release\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: 'Create changelog based release'\n        uses: brainelectronics/changelog-based-release@v1\n```\n\n### Customizing\n\nThe following are optional as `step.with` keys\n\n| Name                      | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| ------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `github-token`            | String  | Secret GitHub Personal Access Token. Defaults to `${{ github.token }}`                                                                                                                                                |\n| `changelog-path`          | String  | Path to changelog used for releasing. Default to `changelog.md`                                                                                                                                                       |\n| `tag-name-prefix`         | String  | Prefix of tag name before extraced x.y.z from changelog, e.g. `v` to get `v1.2.3`                                                                                                                                     |\n| `tag-name-extension`      | String  | Extension of tag name after extracted x.y.z from changelog, e.g. `${{ github.sha }}` to get `1.2.3${{ github.sha }}`. Defaults to `-rc${{ github.run_number }}.dev${{ github.event.number }}` e.g. `1.2.3-rc21.dev`   |\n| `release-name-prefix`     | String  | Prefix of release name before extracted x.y.z from changelog, e.g. `Release of ` to get `Release of 1.2.3`                                                                                                            |\n| `release-name-extension`  | String  | Extension of release name after extracted x.y.z from changelog, e.g. `-rc` to get `1.2.3-rc`. Defaults to `-rc${{ github.run_number }}.dev${{ github.event.number }}` e.g. `1.2.3-rc21.dev`                           |\n| `draft-release`           | Boolean | Indicator of whether or not this release is a draft. Defaults to `false`                                                                                                                                              |\n| `prerelease`              | Boolean | Indicator of whether or not is a prerelease. Defaults to `false`                                                                                                                                                      |\n| `from-commit-sha`         | String  | Commit SHA to create tag on. Defaults to `${{ github.head_ref }}`                                                                                                                                                      |\n\n```yaml\nsteps:\n  - name: Checkout\n    uses: actions/checkout@v6\n  - name: 'Create changelog based release'\n    uses: brainelectronics/changelog-based-release@v1\n    with:\n      # note you'll typically need to create a personal access token\n      # with permissions to create releases in the other repo\n      # or you set the \"contents\" permissions to \"write\" as in this example\n      github-token:  ${{ secrets.CUSTOM_GITHUB_TOKEN }}\n      changelog-path: path/to/changelog.md\n      tag-name-prefix: 'v'\n      tag-name-extension: '+${{ github.sha }}'\n      release-name-prefix: 'Release of '\n      release-name-extension: '-rc'\n      draft-release: true\n      prerelease: true\n```\n\n### Outputs\n\nThe Action provides the following output variables\n\n| Name                  | Type    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| --------------------- | ------- | --------------------------------- |\n| `latest-description`  | String  | Content of latest changelog entry |\n| `latest-version`      | String  | Latest changelog version          |\n\n```yaml\nsteps:\n  - name: Checkout\n    uses: actions/checkout@v3\n  - name: 'Create changelog based release'\n    uses: brainelectronics/changelog-based-release@v1\n    id: changelog-release\n  - name: Report action output\n    run: |\n      echo \"Latest changelog change description: ${{ steps.changelog-release.outputs.latest-description }}\"\n      echo \"Latest changelog version: ${{ steps.changelog-release.outputs.latest-version }}\"\n```\n\n### Permissions\n\nThis Action requires the following permissions on the GitHub integration token:\n\n```yaml\npermissions:\n  contents: write\n```\n\n[GitHub token permissions](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)\ncan be set for an individual job, workflow, or for Actions as a whole.\n\n## License\n\nThe scripts and documentation in this project are released under the\n[MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrainelectronics%2Fchangelog-based-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrainelectronics%2Fchangelog-based-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrainelectronics%2Fchangelog-based-release/lists"}