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 SEMVER_UPDATE="${{ inputs.semver }}" fi if [[ -n "${SEMVER_UPDATE}" ]]; 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 "${SEMVER_UPDATE}" 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 ${SEMVER_UPDATE} 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