.github: Make all release tags follow v<semver> convention

Replace xemu-v*, gh-release/* tagging with typical semver vX.Y.Z, which
plays nicer with GitHub releases. Increments patch version on push
to master.
This commit is contained in:
Matt Borgerson 2022-04-29 21:47:17 -07:00 committed by mborgerson
parent 292c9703de
commit a809d8557d
5 changed files with 42 additions and 18 deletions

View file

@ -21,6 +21,26 @@ jobs:
uses: actions/checkout@v2
with:
fetch-depth: 0
# On push to master, increment patch version and create a new tag on release
- name: Increment patch version
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
git config user.name "nobody"
git config user.email "nobody@nowhere"
VERSION=$(git describe --tags --match 'v*' --abbrev=0 | xargs ./scripts/increment-semver.py)
git tag -a $VERSION -m $VERSION
echo "Generated new release version: $VERSION"
# GitHub treats the new tag as lightweight, so older tags will shadow the
# new tag. Recreate it as an annotated tag now so the version script picks
# it up properly.
- name: Annotate release tag
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
run: |
git config user.name "nobody"
git config user.email "nobody@nowhere"
VERSION=${GITHUB_REF/refs\/tags\//}
git tag -a -f $VERSION $VERSION -m $VERSION
echo "Recreated release tag: $VERSION"
- name: Create source package
run: |
./scripts/archive-source.sh src.tar
@ -280,7 +300,7 @@ jobs:
path: xemu-macos-universal-${{ matrix.configuration }}.zip
Release:
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/xemu-v'))
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v'))
runs-on: ubuntu-latest
needs: [Ubuntu, macOSUniversal, Windows]
steps:
@ -293,21 +313,15 @@ jobs:
- name: Get release info
run: |
echo "XEMU_VERSION=$(cat XEMU_VERSION)" >> $GITHUB_ENV
if [[ $GITHUB_REF == refs/tags/* ]]; then
echo "TAG_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
else
# GitHub requires a tag to make a release, but this is not a tagged
# update. Generate a new tag.
echo "TAG_NAME=gh-release/$(cat XEMU_VERSION)" >> $GITHUB_ENV
fi
- name: Publish release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.TAG_NAME }}
name: ${{ env.XEMU_VERSION }}
tag_name: v${{ env.XEMU_VERSION }}
name: v${{ env.XEMU_VERSION }}
prerelease: false
draft: false
files: |
dist/src.tar.gz/src.tar.gz
dist/xemu-win-debug/xemu-win-debug.zip
dist/xemu-win-release/xemu-win-release.zip
dist/xemu-macos-universal-release/xemu-macos-universal-release.zip
@ -319,7 +333,7 @@ jobs:
# package creation.
PushToPPA:
name: Push to PPA Snapshot Branch
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/xemu-v'))
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v'))
needs: [Ubuntu, macOSUniversal, Windows]
runs-on: ubuntu-latest
steps:

View file

@ -76,7 +76,7 @@ done
git rev-parse HEAD 2>/dev/null | tr -d '\n' > XEMU_COMMIT
git symbolic-ref --short HEAD > XEMU_BRANCH
git describe --tags --match 'xemu-v*' | cut -c 7- | tr -d '\n' > XEMU_VERSION
git describe --tags --match 'v*' | cut -c 2- | tr -d '\n' > XEMU_VERSION
tar -r --file "$tar_file" XEMU_COMMIT XEMU_BRANCH XEMU_VERSION
exit 0

10
scripts/increment-semver.py Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env python3
import argparse, re
ap = argparse.ArgumentParser()
ap.add_argument('semver', help='Input semver X.Y.Z')
args = ap.parse_args()
m = re.match(r'(?P<pfx>[^\d]*)(?P<maj>\d+)\.(?P<min>\d+)\.(?P<pat>\d+)',
args.semver)
assert m, 'Invalid version format'
print(m.group('pfx') + '.'.join([m.group('maj'), m.group('min'),
str(int(m.group('pat')) + 1)]))

View file

@ -21,7 +21,7 @@ XEMU_BRANCH=$( \
XEMU_VERSION=$( \
cd "$dir"; \
if test -e .git; then \
git describe --tags --match 'xemu-v*' | cut -c 7- | tr -d '\n'; \
git describe --tags --match 'v*' | cut -c 2- | tr -d '\n'; \
elif test -e XEMU_VERSION; then \
cat XEMU_VERSION; \
fi)
@ -36,15 +36,15 @@ get_version_dot () {
XEMU_VERSION_MAJOR=$(get_version_dot 1)
XEMU_VERSION_MINOR=$(get_version_dot 2)
XEMU_VERSION_MICRO=$(get_version_dot 3)
XEMU_VERSION_PATCH=$(get_version_field 2)
XEMU_VERSION_PATCH=$(get_version_dot 3)
XEMU_VERSION_COMMIT=$(get_version_field 2)
cat <<EOF
#define XEMU_VERSION "$XEMU_VERSION"
#define XEMU_VERSION_MAJOR $XEMU_VERSION_MAJOR
#define XEMU_VERSION_MINOR $XEMU_VERSION_MINOR
#define XEMU_VERSION_MICRO $XEMU_VERSION_MICRO
#define XEMU_VERSION_PATCH $XEMU_VERSION_PATCH
#define XEMU_VERSION_COMMIT $XEMU_VERSION_COMMIT
#define XEMU_BRANCH "$XEMU_BRANCH"
#define XEMU_COMMIT "$XEMU_COMMIT"
#define XEMU_DATE "$XEMU_DATE"

View file

@ -3,8 +3,8 @@
#include "xemu-version-macro.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION XEMU_VERSION_MAJOR,XEMU_VERSION_MINOR,XEMU_VERSION_MICRO,XEMU_VERSION_PATCH
PRODUCTVERSION XEMU_VERSION_MAJOR,XEMU_VERSION_MINOR,XEMU_VERSION_MICRO,XEMU_VERSION_PATCH
FILEVERSION XEMU_VERSION_MAJOR,XEMU_VERSION_MINOR,XEMU_VERSION_PATCH,XEMU_VERSION_COMMIT
PRODUCTVERSION XEMU_VERSION_MAJOR,XEMU_VERSION_MINOR,XEMU_VERSION_PATCH,XEMU_VERSION_COMMIT
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP