name: version-increment-branch description: "Get the latest and next version of a package from a NuGet repository based on the current branch and merge target." inputs: version: description: "The version to increment." required: false incrementMode: description: "The mode to increment by. Options: 'major', 'minor', 'patch', 'revision'" required: false default: revision outputs: nextVersion: description: "The next version of the package, based on the current branch and merge target." value: ${{ steps.increment.outputs.nextVersion }} baseVersion: description: "Base of the branch-defined version." value: ${{ steps.branch.outputs.baseVersion }} majorMinorPatchVersion: description: "Major.Minor.Patch of the latest version." value: ${{ steps.branch.outputs.majorMinorPatchVersion }} runs: using: "composite" steps: - name: "Get latest non-pre-release NuGet package version." id: parse uses: act/common/utils/version-parse@master with: version: ${{ inputs.version }} - name: "Build the next version with the given repository information." id: branch run: | NAME="Version Increment Branch" echo "::group::$NAME - Inputs" echo "${{ toJSON(inputs) }}" echo "::endgroup::" EVENT_NAME="${{ github.event_name }}" HEAD="${{ github.head_ref || github.ref_name }}" BASE="${{ github.base_ref || github.ref_name }}" PR_NUMBER="${{ github.event.number || '-1' }}" MAJOR="${{ steps.parse.outputs.major || '0' }}" MINOR="${{ steps.parse.outputs.minor || '0' }}" PATCH="${{ steps.parse.outputs.patch || '0' }}" LAST_MMP_VERSION="$MAJOR.$MINOR.$PATCH" REVISION="${{ steps.parse.outputs.revision || '0' }}" bash ${{ github.action_path }}/get_next_version.sh "$EVENT_NAME" "$HEAD" "$BASE" "$PR_NUMBER" "$LAST_MMP_VERSION" "$REVISION" shell: bash - name: "Parse the version to increment." id: parseNext uses: act/common/utils/version-parse@master with: version: ${{ steps.branch.outputs.currentVersion }} - name: "Get next version." id: increment uses: act/common/utils/version-increment@master with: incrementMode: ${{ inputs.incrementMode }} major: ${{ steps.parseNext.outputs.major }} minor: ${{ steps.parseNext.outputs.minor }} patch: ${{ steps.parseNext.outputs.patch }} revision: ${{ steps.parseNext.outputs.revision }} suffix: ${{ steps.parseNext.outputs.suffix }} metadata: ${{ steps.parseNext.outputs.metadata }}