* Create a new release after a v*.*.* commit instead of the tag * Fix bugs * Avoid matching things like "v2"
39 lines
1.4 KiB
Bash
Executable File
39 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
echo "INFO: Installing action dependencies..."
|
|
(cd /action; npm ci)
|
|
|
|
echo "INFO: Checking out current commit..."
|
|
git -c advice.detachedHead=false checkout $GITHUB_SHA
|
|
|
|
# GitHub doesn't support running actions on new tags yet: we need to run it on the commit.
|
|
# For this reason, we can't be sure that the tag already exists. We can use the commit
|
|
# message to create the tag. If the tag already exists locally, they won't conflict because
|
|
# they have the same name and are on the same commit.
|
|
echo "INFO: Getting release version..."
|
|
# current_tag=$(git describe --abbrev=0 --tags HEAD)
|
|
current_tag=$(git log --oneline --format=%B -1 HEAD)
|
|
|
|
echo "INFO: Creating new tag..."
|
|
(git tag $current_tag $GITHUB_SHA) || echo "INFO: Tag already exists"
|
|
|
|
last_tag=$(git describe --abbrev=0 --tags HEAD^)
|
|
echo "INFO: New version is $current_tag; last version is $last_tag."
|
|
|
|
echo "INFO: Generating the changelog..."
|
|
|
|
# lerna-changelog expects the token to be provided as GITHUB_AUTH,
|
|
# but GitHub actions don't allow to predefine custom env vars prefixed with
|
|
# GITHUB_. We need to define it here.
|
|
changelog=$(
|
|
GITHUB_AUTH="$GITHUB_TOKEN" \
|
|
node /action/node_modules/.bin/lerna-changelog --tag-from $last_tag --tag-to $current_tag
|
|
)
|
|
|
|
echo "INFO: Publishing the new GitHub release..."
|
|
echo "$changelog" | node /action/release $current_tag
|
|
|
|
echo "INFO: Done! Don't forget to thank new contributors :)"
|