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

Use GITHUB_REF_NAME as name of push branch; fix error in branch detection [citest skip] #64

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
50 changes: 32 additions & 18 deletions .github/workflows/changelog_to_tag.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# yamllint disable rule:line-length
name: Pushing CHANGELOG.md triggers tagging
name: Pushing CHANGELOG.md triggers tag, release, and Galaxy publish
on: # yamllint disable-line rule:truthy
push:
branches:
Expand All @@ -10,7 +10,7 @@ on: # yamllint disable-line rule:truthy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
jobs:
tagging:
tag_release_publish:
runs-on: ubuntu-latest
steps:
- name: checkout PR
Expand All @@ -19,30 +19,44 @@ jobs:
id: tag
run: |
set -euxo pipefail
pat='\[[0-9]*\.[0-9]*\.[0-9]*\] - [0-9\-]*'
print=false
cat CHANGELOG.md | while read -r line; do
if [[ "$line" =~ $pat ]] && [[ "$print" == false ]]; then
echo "$line"
print=true
elif [[ "$line" =~ $pat ]] && [[ "$print" == true ]]; then
break
elif [[ "$print" == true ]]; then
while read -r line; do
if [[ "$line" =~ ^\[([0-9]+\.[0-9]+\.[0-9]+)\]\ -\ [0-9-]+ ]]; then
if [ "$print" = false ]; then
_tagname="${BASH_REMATCH[1]}"
echo "$line"
print=true
else
break
fi
elif [ "$print" = true ]; then
echo "$line"
fi
done > ./.tagmsg.txt
_tagname=$( grep -m 1 "[0-9]*\.[0-9]*\.[0-9]*" CHANGELOG.md | \
sed -e "s/^.*\[\([0-9]*\.[0-9]*\.[0-9]*\)\].*/\1/" )
done < CHANGELOG.md > ./.tagmsg.txt
git fetch --all --tags
for t in $( git tag -l ); do
if [[ $t == "$_tagname" ]]; then
echo INFO: tag $t already exists
if [ "$t" = "$_tagname" ]; then
echo INFO: tag "$t" already exists
exit 1
fi
done
# Get the main branch name, "master" or "main".
_branch=$( git branch -r | grep -o 'origin/HEAD -> origin/.*$' | \
awk -F'/' '{print $3}' )
# Get name of the branch that the change was pushed to
_branch="${GITHUB_REF_NAME:-}"
if [ "$_branch" = master ] || [ "$_branch" = main ]; then
echo Using branch name ["$_branch"] as push branch
else
echo WARNING: GITHUB_REF_NAME ["$_branch"] is not main or master
_branch=$( git branch -r | grep -o 'origin/HEAD -> origin/.*$' | \
awk -F'/' '{print $3}' || : )
fi
if [ -z "$_branch" ]; then
_branch=$( git branch --points-at HEAD --no-color --format='%(refname:short)' )
fi
if [ -z "$_branch" ]; then
echo ERROR: unable to determine push branch
git branch -a
exit 1
fi
echo ::set-output name=tagname::"$_tagname"
echo ::set-output name=branch::"$_branch"
- name: Create tag
Expand Down