Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikepenz/action-gh-release
📦 :octocat: GitHub Action for creating GitHub Releases
https://github.com/mikepenz/action-gh-release
Last synced: 3 months ago
JSON representation
📦 :octocat: GitHub Action for creating GitHub Releases
- Host: GitHub
- URL: https://github.com/mikepenz/action-gh-release
- Owner: mikepenz
- License: mit
- Fork: true (softprops/action-gh-release)
- Created: 2020-10-17T08:18:25.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-14T08:27:28.000Z (8 months ago)
- Last Synced: 2024-06-17T22:46:51.263Z (5 months ago)
- Language: TypeScript
- Homepage:
- Size: 2.43 MB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - mikepenz/action-gh-release - 📦 :octocat: GitHub Action for creating GitHub Releases (TypeScript)
README
## Fork
This is a fork from https://github.com/softprops/action-gh-release with various patches and modifications applied - Please refer to the original action for any questions.
📦 :octocat:
action gh-release
A GitHub Action for creating GitHub Releases on Linux, Windows, and macOS virtual environments
## 🤸 Usage
### 🚥 Limit releases to pushes to tags
Typically usage of this action involves adding a step to a build that
is gated pushes to git tags. You may find `step.if` field helpful in accomplishing this
as it maximizes the reuse value of your workflow for non-tag pushes.Below is a simple example of `step.if` tag gating
```yaml
name: Mainon: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Release
uses: mikepenz/action-gh-release@{latest}
if: startsWith(github.ref, 'refs/tags/')
```### 💅 Customizing
#### inputs
The following are optional as `step.with` keys
| Name | Type | Description |
| -------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `body` | String | Text communicating notable changes in this release |
| `body_path` | String | Path to load text communicating notable changes in this release |
| `draft` | Boolean | Indicator of whether or not this release is a draft |
| `prerelease` | Boolean | Indicator of whether or not is a prerelease |
| `files` | String | Newline-delimited globs of paths to assets to upload for release |
| `name` | String | Name of the release. defaults to tag name |
| `tag_name` | String | Name of a tag. defaults to `github.ref` |
| `fail_on_unmatched_files` | Boolean | Indicator of whether to fail if any of the `files` globs match nothing |
| `fail_on_asset_upload_issue` | Boolean | Indicator of whether to fail if any of the `assets` fails to upload |
| `repository` | String | Name of a target repository in `/` format. Defaults to GITHUB_REPOSITORY env variable |
| `target_commitish` | String | Commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Defaults to repository default branch. |
| `make_latest` | String | Configuration to make the new release the latest. Defaults to 'true'. Can be one of: 'true', 'false', 'legacy' branch. |
| `token` | String | Secret GitHub Personal Access Token. Defaults to `${{ github.token }}` |
| `discussion_category_name` | String | If specified, a discussion of the specified category is created and linked to the release. The value must be a category that already exists in the repository. For more information, see ["Managing categories for discussions in your repository."](https://docs.github.com/en/discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository) |
| `generate_release_notes` | Boolean | Whether to automatically generate the name and body for this release. If name is specified, the specified name will be used; otherwise, a name will be automatically generated. If body is specified, the body will be pre-pended to the automatically generated notes. See the [GitHub docs for this feature](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes) for more information |
| `append_body` | Boolean | Append to existing body instead of overwriting it |💡 When providing a `body` and `body_path` at the same time, `body_path` will be
attempted first, then falling back on `body` if the path can not be read from.💡 When the release info keys (such as `name`, `body`, `draft`, `prerelease`, etc.)
are not explicitly set and there is already an existing release for the tag, the
release will retain its original info.#### outputs
The following outputs can be accessed via `${{ steps..outputs }}` from this action
| Name | Type | Description |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url` | String | Github.com URL for the release |
| `id` | String | Release ID |
| `upload_url` | String | URL for uploading assets to the release |
| `assets` | String | JSON array containing information about each uploaded asset, in the format given [here](https://docs.github.com/en/rest/releases/assets#get-a-release-asset) (minus the `uploader` field) |As an example, you can use `${{ fromJSON(steps..outputs.assets)[0].browser_download_url }}` to get the download URL of the first asset.
#### environment variables
The following `step.env` keys are allowed as a fallback but deprecated in favor of using inputs.
| Name | Description |
| ------------------- | ------------------------------------------------------------------------------------------ |
| `GITHUB_TOKEN` | GITHUB_TOKEN as provided by `secrets` |
| `GITHUB_REPOSITORY` | Name of a target repository in `/` format. defaults to the current repository |> **⚠️ Note:** This action was previously implemented as a Docker container, limiting its use to GitHub Actions Linux virtual environments only. With recent releases, we now support cross platform usage. You'll need to remove the `docker://` prefix in these versions
### Permissions
This Action requires the following permissions on the GitHub integration token:
```yaml
permissions:
contents: write
```When used with `discussion_category_name`, additional permission is needed:
```yaml
permissions:
contents: write
discussions: write
```[GitHub token permissions](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token) can be set for an individual job, workflow, or for Actions as a whole.
Doug Tangren (softprops) 2019