name: Create Semver Release description: Uses tags and semver type to push a tag on the latest commit author: Skydust # Define your inputs here. inputs: semver: type: choice description: Choose the semver options: - "Major - Incompatible API changes" - "Minor - Adding functionality in a backward compatible manner" - "Patch - Backward compatible bug fixes" runs: using: composite steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # Include full history with tags - name: Get new version run: | last_version="$(git describe --tags --match "v*" --abbrev=0 || 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}" echo NEW_VERSION=${NEW_VERSION} >> $GITEA_ENV - name: Pushing new version run: | git config user.email "release@example.com" git config user.name "Release" original_url="$(git remote get-url origin)" gitea_url="${GITHUB_SERVER_URL#https://}" # Remove HTTPS log_info "Overriding git repository auth with PAT" git config credential.helper store echo "https://Skydust:${{ secrets.CI_GIT_WRITE_TOKEN }}@${gitea_url}" > .git-credentials log_info "Pushing new tag" git fetch git tag -a "v${NEW_VERSION}" -m "Release version ${NEW_VERSION}" git push origin "v${NEW_VERSION}"