GitHub action to get version information from the Git tag.
The tag reqires a "v" as prefix followed by a Semantic Version 2.0.0. You can test your tag for validation.
- *v[Major].[Minor].[Patch]
- *v[Major].[Minor].[Patch]-[pre-release]
- *v[Major].[Minor].[Patch]+[buildmetadata]
- *v[Major].[Minor].[Patch]-[pre-release]+[buildmetadata]
name: Example
on:
push:
tags:
- 'v*'
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Restore
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-restore --no-build
- name: Get Version from Tag
if: startsWith(github.event.ref, 'refs/tags/v')
id: tagver
uses: ChrSchu90/GitTagSemanticVersion@v1.1
- name: Pack Release NuGets
if: ${{ steps.tagver.outputs.is_release == 'true' }}
run: dotnet pack --no-restore --output ${{ github.workspace }}/packages /p:Version=${{ steps.tagver.outputs.version }}
- name: Pack Prerelease NuGets
if: ${{ steps.tagver.outputs.is_prerelease == 'true' }}
run: dotnet pack --no-restore --output ${{ github.workspace }}/packages /p:VersionPrefix=${{ steps.tagver.outputs.version }} --version-suffix ${{ steps.tagver.outputs.suffix }}
- name: Push NuGets
if: ${{ steps.tagver.outputs.is_valid == 'true' }}
run: dotnet nuget push ${{ github.workspace }}/packages/*.nupkg --source ${{ secrets.NUGET_FEED }} --skip-duplicate --api-key ${{ secrets.NUGET_API_KEY }}| Name | Type | Description |
|---|---|---|
tag |
String | [optional] Tag where the version info gets extracted from. Default is github.ref |
The following outputs can be accessed via ${{ steps.<step-id>.outputs }}.
Note that boolean output variables needs to be handled like strings, otherwise it could lead into unexpected behaviors!
| Name | Type | Description |
|---|---|---|
version_tag |
String | The clean version tag (e.g. v1.2.3-beta1+as4at5dd) without the git ref prefix |
version |
String | Version without pre-release or build metadata (e.g. 1.2.3) |
major |
String | Major version number (e.g. 1) |
minor |
String | Minor version number (e.g. 2) |
patch |
String | Patch version number (e.g. 3) |
suffix |
String | Pre-release tag without - (e.g. beta1) |
metadata |
String | Metadata tag without + (e.g. as4at5dd) |
package |
String | Package version for NuGet with suffix if defined (e.g. 1.2.3-beta1) |
is_valid |
String | true if the version tag was valid and could be processed, otherwise false |
is_prerelease |
String | true if the version is a pre-release (suffix defined), otherwise false |
is_release |
String | true if the version is a release (no suffix defined), otherwise false |
- This action requires
pwshto actually be available and on PATH of the runner - which is the case for all GitHub-provided runner VMs; for your own runners you need to take care of that yourself. - This action is a
compositeaction.
This action is licensed under MIT license.