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

Release drafter pulls tag number from package.json automatically #5085

Merged
merged 14 commits into from
May 10, 2024
4 changes: 1 addition & 3 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
name-template: 'v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
- title: '🚀 Features'
label: 'Feature 🎁'
Expand All @@ -18,6 +16,6 @@ template: |
Install with NPM: https://www.npmjs.com/package/vanilla-framework
Visit the documentation at https://vanillaframework.io/docs

## New in Vanilla v$NEXT_PATCH_VERSION
## New in Vanilla v$INPUT_VERSION

$CHANGES
22 changes: 21 additions & 1 deletion .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,27 @@ jobs:
update_release_draft:
runs-on: ubuntu-latest
steps:
- name: Draft release notes
- name: Checkout repo
uses: actions/checkout@v4
with:
# Only need package.json as it is used by the get_version step to pass tag number into release-drafter
sparse-checkout: package.json

- name: Get version number from package.json
id: get_version
shell: bash
run: |
set -e
echo "version_number=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I'm a bit rusty on GH actions, and they changed how to do things in the past. Is this the recommended way to store some values? Can you point me to some docs?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bartaz Yes, this is the "new" way to set an output param for a GHA step. See some docs here: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter

You may have seen this in the past with a slightly different syntax that was deprecated recently; maybe this looks more familiar: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/


- name: Draft release notes for v${{ steps.get_version.outputs.version_number }}
uses: release-drafter/release-drafter@v6
with:
# Setting tag and name override the name-template and tag-template.
# See https://github.com/release-drafter/release-drafter?tab=readme-ov-file#action-inputs for more
tag: "v${{ steps.get_version.outputs.version_number }}"
name: "v${{ steps.get_version.outputs.version_number }}"
version: "v${{ steps.get_version.outputs.version_number }}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if it matters, but is version expected to be a version number (just 1.0.0), or can it be anything (with v in front)?

Copy link
Member Author

@jmuzina jmuzina May 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bartaz tag is filled into the tag field for the release. It is subject to some validation from Github (it has to be a git ref).

name is filled into the name of the release.

version is used for the body of the release (where it says "New in Vanilla v{x}").

Here's an example image where each field is different to better distinguish them:

Screenshot 2024-05-08 at 1 39 52 PM

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmuzina Thanks. So in this case v would be duplicated in the body? Because we add it both here into the version param, and then again in the template as v$INPUT_VERSION. That's why I guess we may want to put just the number of the version into version param. I also makes more sense semantically.

Suggested change
version: "v${{ steps.get_version.outputs.version_number }}"
version: "${{ steps.get_version.outputs.version_number }}"

Copy link
Member Author

@jmuzina jmuzina May 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bartaz I'm glad you brought this up. It seems like release drafter is doing some sort of logic against input.tag to split off the v so that $INPUT_VERSION template has no v. Here's an example of that where you can see that inputting v4.12.1 as tag causes the tag to be resolved to v4.12.1 and $INPUT_VERSION as 4.12.1.

So, we don't need input.version at all in this case; we can just specify name for the draft release name and tag for the tag to use :)

Screenshot 2024-05-08 at 3 03 30 PM

commitish: main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading