Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(action): allow configuring the github token and set it when it exists #34

Merged
merged 5 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This action generates a changelog based on your Git history using [git-cliff](ht
- `version`: `git-cliff` version to use. (e.g. `"latest"`, `"v2.5.0"`)
- `config`: Path of the configuration file. (Default: `"cliff.toml"`)
- `args`: [Arguments](https://github.com/orhun/git-cliff#usage) to pass to git-cliff. (Default: `"-v"`)
- `github_token`: The GitHub API token used to get git-cliff release information via the GitHub API to avoid rate limits. (Default: `${{ github.token }}`)
orhun marked this conversation as resolved.
Show resolved Hide resolved

### Output variables

Expand All @@ -32,6 +33,13 @@ This action generates a changelog based on your Git history using [git-cliff](ht
>
> Otherwise, you might end up getting empty changelogs or `git ref` errors depending on arguments passed to `git-cliff`.

### Running the action outside of GitHub

If you run the action in Gitea or GitHub Enterprise, the `github_token` input is invalid. You have two options:

- Pass an empty value `github_token: ""` (limit of 60 requests per hour per IP address).
orhun marked this conversation as resolved.
Show resolved Hide resolved
- Create a GitHub token and pass it through GitHub secrets to avoid rate limiting.

### Examples

#### Simple
Expand Down
6 changes: 5 additions & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ inputs:
description: "git-cliff arguments"
required: false
default: "-v"
github_token:
description: "GitHub API token"
required: false
default: "${{ github.token }}"
outputs:
changelog:
description: "output file"
Expand All @@ -33,7 +37,7 @@ runs:
RUNNER_OS: ${{ runner.os }}
RUNNER_ARCH: ${{ runner.arch }}
VERSION: ${{ inputs.version }}
GITHUB_TOKEN: ${{ github.token }}
GITHUB_API_TOKEN: ${{ inputs.github_token }}

- name: Run git-cliff
id: run-git-cliff
Expand Down
21 changes: 14 additions & 7 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,21 @@ if [[ "${VERSION}" != 'latest' ]]; then
RELEASE_URL="https://api.github.com/repos/orhun/git-cliff/releases/tags/${VERSION}"
fi

# Although releases endpoint is available without authentication, the current github.token is still passed
# in order to increase the limit of 60 requests per hour per IP address to a higher value that's also counted
# per GitHub account.
# Caching is disabled in order not to receive stale responses from Varnish cache fronting GitHub API.
RELEASE_INFO="$(curl --silent --show-error --fail \
--header "authorization: Bearer ${GITHUB_TOKEN}" \
--header 'Cache-Control: no-cache, must-revalidate' \
"${RELEASE_URL}")"
if [[ -z "${GITHUB_API_TOKEN}" ]]; then
RELEASE_INFO="$(curl --silent --show-error --fail \
--header 'Cache-Control: no-cache, must-revalidate' \
"${RELEASE_URL}")"
else
# Although releases endpoint is available without authentication, the current github.token is still passed
# in order to increase the limit of 60 requests per hour per IP address to a higher value that's also counted
# per GitHub account.
RELEASE_INFO="$(curl --silent --show-error --fail \
--header "authorization: Bearer ${GITHUB_API_TOKEN}" \
--header 'Cache-Control: no-cache, must-revalidate' \
"${RELEASE_URL}")"
fi

TAG_NAME="$(echo "${RELEASE_INFO}" | jq --raw-output ".tag_name")"
TARGET="git-cliff-${TAG_NAME:1}-${ARCH}-${OS}.tar.gz"
LOCATION="$(echo "${RELEASE_INFO}" \
Expand Down