diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 0414249..7e515dc 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -1,32 +1,51 @@ -# This workflow will build a .NET project -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net - -name: .NET +name: CI on: push: - branches: [ "main" ] + branches: + - main + - release/** pull_request: - branches: [ "main" ] - + branches: + - main + jobs: build: + + env: + BUILD_CONFIG: 'Release' + SOLUTION: 'Primitively.sln' + runs-on: ubuntu-latest - strategy: - matrix: - dotnet-version: [ '7.0.x' ] - + steps: - - uses: actions/checkout@v3 - - name: Setup .NET ${{ matrix.dotnet-version }} - uses: actions/setup-dotnet@v3 - with: - dotnet-version: ${{ matrix.dotnet-version }} - - name: Display dotnet version - run: dotnet --version + - uses: actions/checkout@v2 + + - name: Get Build Version + run: | + Import-Module .\build\GetBuildVersion.psm1 + Write-Host $Env:GITHUB_REF + $version = GetBuildVersion -VersionString $Env:GITHUB_REF + echo "BUILD_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append + shell: pwsh + + - name: Setup NuGet + uses: NuGet/setup-nuget@v1.0.5 + - name: Restore dependencies - run: dotnet restore + run: nuget restore $SOLUTION + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 7.0.x + - name: Build - run: dotnet build --no-restore - - name: Test - run: dotnet test --no-build --verbosity normal + run: dotnet build $SOLUTION --configuration $BUILD_CONFIG -p:Version=$BUILD_VERSION --no-restore + + - name: Run tests + run: dotnet test /p:Configuration=$env:BUILD_CONFIG --no-restore --no-build --verbosity normal + + - name: Publish + if: startsWith(github.ref, 'refs/heads/release') + run: nuget push **\*.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}} \ No newline at end of file diff --git a/build/GetBuildVersion.psm1 b/build/GetBuildVersion.psm1 new file mode 100644 index 0000000..11ea5d0 --- /dev/null +++ b/build/GetBuildVersion.psm1 @@ -0,0 +1,34 @@ +Function GetBuildVersion { + Param ( + [string]$VersionString + ) + + # Process through regex + $VersionString -match "(?\d+)(\.(?\d+))?(\.(?\d+))?(\-(?
[0-9A-Za-z\-\.]+))?(\+(?\d+))?" | Out-Null
+
+    if ($matches -eq $null) {
+        return "1.0.0-build"
+    }
+
+    # Extract the build metadata
+    $BuildRevision = [uint64]$matches['build']
+    # Extract the pre-release tag
+    $PreReleaseTag = [string]$matches['pre']
+    # Extract the patch
+    $Patch = [uint64]$matches['patch']
+    # Extract the minor
+    $Minor = [uint64]$matches['minor']
+    # Extract the major
+    $Major = [uint64]$matches['major']
+
+    $Version = [string]$Major + '.' + [string]$Minor + '.' + [string]$Patch;
+    if ($PreReleaseTag -ne [string]::Empty) {
+        $Version = $Version + '-' + $PreReleaseTag
+    }
+
+    if ($BuildRevision -ne 0) {
+        $Version = $Version + '.' + [string]$BuildRevision
+    }
+
+    return $Version
+}
\ No newline at end of file
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 43759a5..4f4f5e0 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -20,8 +20,8 @@
     false
     true
     true
-    false
-    $(MSBuildThisFileDirectory)..\artifacts
+    true
+    
   
  
   
@@ -44,10 +44,6 @@
   
   
     
-    
   
   
 
\ No newline at end of file