{"id":13623220,"url":"https://github.com/taiki-e/create-gh-release-action","last_synced_at":"2025-04-30T11:23:11.470Z","repository":{"id":37469506,"uuid":"335611917","full_name":"taiki-e/create-gh-release-action","owner":"taiki-e","description":"GitHub Action for creating GitHub Releases based on changelog.","archived":false,"fork":false,"pushed_at":"2025-03-29T03:57:08.000Z","size":178,"stargazers_count":77,"open_issues_count":5,"forks_count":11,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-22T06:17:50.404Z","etag":null,"topics":["github-actions"],"latest_commit_sha":null,"homepage":"","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/taiki-e.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"taiki-e"}},"created_at":"2021-02-03T12:07:34.000Z","updated_at":"2025-04-10T03:46:31.000Z","dependencies_parsed_at":"2023-09-28T18:01:55.966Z","dependency_job_id":"b30538e9-e915-4446-826c-8b6b7724602f","html_url":"https://github.com/taiki-e/create-gh-release-action","commit_stats":{"total_commits":198,"total_committers":5,"mean_commits":39.6,"dds":0.04040404040404044,"last_synced_commit":"9cde2a76da067fc609a70deac6d209b88407861f"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taiki-e%2Fcreate-gh-release-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taiki-e%2Fcreate-gh-release-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taiki-e%2Fcreate-gh-release-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taiki-e%2Fcreate-gh-release-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taiki-e","download_url":"https://codeload.github.com/taiki-e/create-gh-release-action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251689157,"owners_count":21627855,"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"],"created_at":"2024-08-01T21:01:29.284Z","updated_at":"2025-04-30T11:23:11.432Z","avatar_url":"https://github.com/taiki-e.png","language":"Shell","funding_links":["https://github.com/sponsors/taiki-e"],"categories":["Shell"],"sub_categories":[],"readme":"# create-gh-release-action\n\n[![release](https://img.shields.io/github/release/taiki-e/create-gh-release-action?style=flat-square\u0026logo=github)](https://github.com/taiki-e/create-gh-release-action/releases/latest)\n[![github actions](https://img.shields.io/github/actions/workflow/status/taiki-e/create-gh-release-action/ci.yml?branch=main\u0026style=flat-square\u0026logo=github)](https://github.com/taiki-e/create-gh-release-action/actions)\n\nGitHub Action for creating GitHub Releases based on changelog.\n\n- [Usage](#usage)\n  - [Inputs](#inputs)\n  - [Outputs](#outputs)\n  - [Example workflow: Basic usage](#example-workflow-basic-usage)\n  - [Example workflow: Create a draft release](#example-workflow-create-a-draft-release)\n  - [Example workflow: Custom title](#example-workflow-custom-title)\n  - [Example workflow: No changelog](#example-workflow-no-changelog)\n  - [Example workflow: Reject releases from outside of main branch](#example-workflow-reject-releases-from-outside-of-main-branch)\n  - [Other examples](#other-examples)\n- [Supported events](#supported-events)\n- [Compatibility](#compatibility)\n- [Related Projects](#related-projects)\n- [License](#license)\n\n## Usage\n\nThis action creates GitHub Releases based on changelog that specified by `changelog` option.\n\nCurrently, changelog format and supported tag names have the following rule:\n\n- This action uses [parse-changelog] to parse changelog.\n  Only the changelog format accepted by [parse-changelog] is supported.\n\n  Basically, [Keep a Changelog][keepachangelog] and similar formats are\n  supported, but we recommend checking if [parse-changelog] can parse your\n  project's changelog as you expected.\n\n  [If the `changelog` option is not specified, the changelog is ignored and only the release created.](#example-workflow-no-changelog)\n\n- The supported tag format is `v?MAJOR.MINOR.PATCH(-PRERELEASE)?(+BUILD_METADATA)?`.\n  (leading \"v\", pre-release version, and build metadata are optional.) The optional prefix is also supported.\n  This is based on [Semantic Versioning][semver]\n\n### Inputs\n\n| Name      | Required  | Description                                                                 | Type    | Default |\n| --------- |:---------:| --------------------------------------------------------------------------- | ------- | ------- |\n| token     | **✓** [^1]| GitHub token for creating GitHub Releases (see [action.yml](action.yml) for more) | String |         |\n| changelog |           | Path to changelog (variables `$tag`, `$version`, `$prefix`, and any string) | String  |         |\n| allow-missing-changelog |  | Create the release even if the changelog entry corresponding to the version is missing. The default value of the changelog will be an empty string. | Boolean | `false` |\n| title     |           | Format of title (variables `$tag`, `$version`, `$prefix`, and any string)   | String  | `$tag`  |\n| draft     |           | Create a draft release (`true` or `false`)                                  | Boolean | `false` |\n| branch    |           | Reject releases from commits not contained in branches that match the specified pattern (regular expression) | String  |         |\n| prefix    |           | An optional pattern that matches a prefix for the release tag, before the version number (see [action.yml](action.yml) for more) | String |         |\n| ref       |           | Fully-formed tag ref for this release (see [action.yml](action.yml) for more) | String |         |\n\n[^1]: Required one of `token` input option or `GITHUB_TOKEN` environment variable.\n\n### Outputs\n\n| Name            | Description                                                                                                    |\n| --------------- | -------------------------------------------------------------------------------------------------------------- |\n| computed-prefix | The computed prefix, including '-' and 'v'.                                                                    |\n| version         | The version number extracted from the tag. The tag name is a concatenation of `computed-prefix` and `version`. |\n\n### Example workflow: Basic usage\n\n```yaml\nname: Release\n\npermissions:\n  contents: write\n\non:\n  push:\n    tags:\n      - v[0-9]+.*\n\njobs:\n  create-release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: taiki-e/create-gh-release-action@v1\n        with:\n          # (Optional) Path to changelog.\n          changelog: CHANGELOG.md\n          # (Required) GitHub token for creating GitHub Releases.\n          token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n### Example workflow: Create a draft release\n\n```yaml\nname: Release\n\npermissions:\n  contents: write\n\non:\n  push:\n    tags:\n      - v[0-9]+.*\n\njobs:\n  create-release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: taiki-e/create-gh-release-action@v1\n        with:\n          # (Optional) Path to changelog.\n          changelog: CHANGELOG.md\n          # (Optional) Create a draft release.\n          # [default value: false]\n          draft: true\n          # (Required) GitHub token for creating GitHub Releases.\n          token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n### Example workflow: Custom title\n\nYou can customize the title of the release by `title` option.\n\n*[Example of the created release.](https://github.com/taiki-e/pin-project/releases/tag/v1.0.4)*\n\n```yaml\nname: Release\n\npermissions:\n  contents: write\n\non:\n  push:\n    tags:\n      - v[0-9]+.*\n\njobs:\n  create-release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: taiki-e/create-gh-release-action@v1\n        with:\n          # (Optional)\n          changelog: CHANGELOG.md\n          # (Optional) Format of title.\n          # [default value: $tag]\n          # [possible values: variables $tag, $version, and any string]\n          title: $version\n          # (Required) GitHub token for creating GitHub Releases.\n          token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n### Example workflow: No changelog\n\nIf the `changelog` option is not specified, the changelog is ignored and only the release created.\n\n*[Example of the created release.](https://github.com/openrr/urdf-viz/releases/tag/v0.23.1)*\n\n```yaml\nname: Release\n\npermissions:\n  contents: write\n\non:\n  push:\n    tags:\n      - v[0-9]+.*\n\njobs:\n  create-release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: taiki-e/create-gh-release-action@v1\n        with:\n          # (Required) GitHub token for creating GitHub Releases.\n          token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n### Example workflow: Reject releases from outside of main branch\n\nYou can reject releases from commits not contained in branches that match the specified pattern by using `branch` option.\n\n```yaml\nname: Release\n\npermissions:\n  contents: write\n\non:\n  push:\n    tags:\n      - v[0-9]+.*\n\njobs:\n  create-release:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: taiki-e/create-gh-release-action@v1\n        with:\n          # (Optional) Path to changelog.\n          changelog: CHANGELOG.md\n          # (Optional) Reject releases from commits not contained in branches\n          # that match the specified pattern (regular expression)\n          branch: main\n          # (Required) GitHub token for creating GitHub Releases.\n          token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n### Other examples\n\n- [cargo-hack](https://github.com/taiki-e/cargo-hack/blob/202e6e59d491c9202ce148c9ef423853267226db/.github/workflows/release.yml#L25-L45)\n- [tracing](https://github.com/tokio-rs/tracing/blob/2aa0cb010d8a7fa0de610413b5acd4557a00dd34/.github/workflows/release.yml#L10-L24)\n\n## Supported events\n\nThe following two events are supported by default:\n\n- tags ([`on.push.tags`](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push))\n\n  For example:\n\n  ```yaml\n  on:\n    push:\n      tags:\n        - v[0-9]+.*\n  ```\n\n- GitHub release ([`on.release`](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#release))\n\n  For example:\n\n  ```yaml\n  on:\n    release:\n      types: [created]\n  ```\n\nYou can create a release from arbitrary event to arbitrary tag by specifying the `ref` input option.\n\nFor example, to create a release to the `my_tag` tag, specify `ref` input option as follows:\n\n```yaml\nwith:\n  ref: refs/tags/my_tag\n```\n\n## Compatibility\n\nThis action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows).\n\nTo use this action in self-hosted runners or in containers, at least the following tools are required:\n\n- bash\n- GNU tar\n- curl\n- git\n- [gh (GitHub CLI)](https://github.com/cli/cli#installation)\n\n## Related Projects\n\n- [upload-rust-binary-action]: GitHub Action for building and uploading Rust binary to GitHub Releases.\n- [parse-changelog]: Simple changelog parser, written in Rust. This action uses this tool for changelog parsing.\n- [setup-cross-toolchain-action]: GitHub Action for setup toolchains for cross compilation and cross testing for Rust.\n- [install-action]: GitHub Action for installing development tools (mainly from GitHub Releases).\n- [cache-cargo-install-action]: GitHub Action for `cargo install` with cache.\n- [checkout-action]: GitHub Action for checking out a repository. (Simplified actions/checkout alternative that does not depend on Node.js.)\n\n[cache-cargo-install-action]: https://github.com/taiki-e/cache-cargo-install-action\n[checkout-action]: https://github.com/taiki-e/checkout-action\n[install-action]: https://github.com/taiki-e/install-action\n[keepachangelog]: https://keepachangelog.com/en/1.0.0\n[parse-changelog]: https://github.com/taiki-e/parse-changelog\n[semver]: https://semver.org\n[setup-cross-toolchain-action]: https://github.com/taiki-e/setup-cross-toolchain-action\n[upload-rust-binary-action]: https://github.com/taiki-e/upload-rust-binary-action\n\n## License\n\nLicensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or\n[MIT license](LICENSE-MIT) at your option.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall\nbe dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaiki-e%2Fcreate-gh-release-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaiki-e%2Fcreate-gh-release-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaiki-e%2Fcreate-gh-release-action/lists"}