mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-22 16:31:28 +02:00
47 lines
1.7 KiB
YAML
47 lines
1.7 KiB
YAML
name: Parse semver string
|
|
description: Parse a refs/tags/vX.Y.Z[-prerelease][+build] ref into version components. Falls back to 0.0.0 when not run on a version tag.
|
|
outputs:
|
|
major:
|
|
description: Major version number (e.g. "1" from v1.2.3).
|
|
value: ${{ steps.parse.outputs.major }}
|
|
minor:
|
|
description: Minor version number (e.g. "2" from v1.2.3).
|
|
value: ${{ steps.parse.outputs.minor }}
|
|
patch:
|
|
description: Patch version number (e.g. "3" from v1.2.3).
|
|
value: ${{ steps.parse.outputs.patch }}
|
|
prerelease:
|
|
description: Prerelease identifier (e.g. "rc.1" from v1.2.3-rc.1), empty when absent.
|
|
value: ${{ steps.parse.outputs.prerelease }}
|
|
build:
|
|
description: Build metadata (e.g. "build.7" from v1.2.3+build.7), empty when absent.
|
|
value: ${{ steps.parse.outputs.build }}
|
|
fullversion:
|
|
description: MAJOR.MINOR.PATCH joined (e.g. "1.2.3").
|
|
value: ${{ steps.parse.outputs.fullversion }}
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- id: parse
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
REF="${{ (startsWith(github.ref, 'refs/tags/v') && github.ref) || 'refs/tags/v0.0.0' }}"
|
|
if [[ "$REF" =~ ^refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)(-([0-9A-Za-z.-]+))?(\+([0-9A-Za-z.-]+))?$ ]]; then
|
|
MAJOR="${BASH_REMATCH[1]}"
|
|
MINOR="${BASH_REMATCH[2]}"
|
|
PATCH="${BASH_REMATCH[3]}"
|
|
PRERELEASE="${BASH_REMATCH[5]}"
|
|
BUILD="${BASH_REMATCH[7]}"
|
|
else
|
|
MAJOR=0; MINOR=0; PATCH=0; PRERELEASE=""; BUILD=""
|
|
fi
|
|
{
|
|
echo "major=$MAJOR"
|
|
echo "minor=$MINOR"
|
|
echo "patch=$PATCH"
|
|
echo "prerelease=$PRERELEASE"
|
|
echo "build=$BUILD"
|
|
echo "fullversion=$MAJOR.$MINOR.$PATCH"
|
|
} >> "$GITHUB_OUTPUT"
|