Files
get-version/action.yml
2025-03-30 18:59:14 +02:00

63 lines
2.1 KiB
YAML

name: Retrieve version
description: Uses the tags and git commit to find a unique version and sets it as NEW_VERSION
author: Skydust
inputs:
semver:
description: "The semver type to use if this is a release"
required: false
default: ""
runs:
using: composite
steps:
- name: Getting version
shell: bash
run: |
if [[ -n "${{ inputs.semver }}" ]]; then
last_version="$(git describe --tags --abbrev=0 --match "v*" 2> /dev/null || echo "")"
if [[ -z "$last_version" ]]; then
last_version="v0.0.0"
fi
last_version="${last_version:1}"
log_info "Last version: ${last_version}"
# Split the version into components
IFS='.' read -r major minor patch <<< "${last_version%%-*}"
# Increment the appropriate part of the version
case "${{ inputs.semver }}" in
"Major"*) NEW_VERSION="$((major + 1)).0.0"
;;
"Minor"*) NEW_VERSION="$major.$((minor + 1)).0"
;;
"Patch"*) NEW_VERSION="$major.$minor.$((patch + 1))"
;;
esac
log_info "Requested ${{ inputs.semver }} update"
log_info "New version: ${NEW_VERSION}"
NEW_VERSION="v${NEW_VERSION}"
elif [[ "${{ github.ref }}" == refs/tags/* ]]; then
NEW_VERSION="${GITHUB_REF##refs/tags/}"
log_info "This is a tag push: $(yellow)${NEW_VERSION}"
else
log_info "This is a branch push: $(yellow)${GITHUB_REF##refs/heads/}"
last_version="$(git describe --tags --abbrev=0 --match "v*" 2> /dev/null || echo "")"
if [[ -z "$last_version" ]]; then
last_version="v0.0.0"
fi
calculatedSha="$(git rev-parse --short ${{ github.sha }})"
NEW_VERSION="${last_version}-${calculatedSha}"
fi
# Removing the v
NEW_VERSION="${NEW_VERSION:1}"
log_info "New version: $(yellow)${NEW_VERSION}"
log_info "Exported version in env var $(yellow)NEW_VERSION"
echo "NEW_VERSION=${NEW_VERSION}" >> $GITEA_ENV