diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..6373321 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,34 @@ +name: Build and Test + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +defaults: + run: + shell: pwsh + +jobs: + build-and-test: + name: build-and-test on ${{matrix.os}} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-latest] + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: | + 3.1.x + 6.x + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build -p:ContinuousIntegrationBuild=True --no-restore --configuration Release + - name: Test + run: dotnet test --no-build --configuration Release --verbosity normal \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..345cc7c --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,76 @@ +name: Deploy + +on: + release: + types: [created] + +defaults: + run: + shell: pwsh + +env: + baseVersion: 1.0.0 + +jobs: + build-and-test: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: | + 3.1.x + 6.x + - name: Restore dependencies + run: dotnet restore + - name: Set Version + run: | + echo "${{ github.ref }}" + if ("${{ github.ref }}".startsWith("refs/tags/v")) { + $tagVersion = "${{ github.ref }}".substring(11) + echo "buildVersion=$tagVersion.${{ github.run_number }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "nugetVersion=$tagVersion" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "preRelease=false" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + } else { + echo "buildVersion=${{ env.baseVersion }}.${{ github.run_number }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "nugetVersion=${{ env.baseVersion }}-ci${{ github.run_number }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + } + - name: Build + run: dotnet build -p:Version=${{ env.buildVersion }} -p:ContinuousIntegrationBuild=True --no-restore --configuration Release + - name: Test + run: dotnet test --no-build --configuration Release --verbosity normal + - name: Pack + if: startsWith(github.ref, 'refs/tags/v') + run: dotnet pack -p:PackageVersion=${{ env.nugetVersion }} --configuration Release -o ${{env.DOTNET_ROOT}}/IntelliTect.ListingManagerPack --no-build + - name: Upload Artifacts + if: startsWith(github.ref, 'refs/tags/v') + uses: actions/upload-artifact@v2 + with: + name: NuGet + path: ${{env.DOTNET_ROOT}}/IntelliTect.ListingManagerPack + + deploy: + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + needs: build-and-test + environment: + name: 'Production' + url: 'https://www.nuget.org/packages/IntelliTect.EssentialCSharp.ListingManager' + steps: + - name: Download artifact from build job + uses: actions/download-artifact@v2 + with: + name: NuGet + - name: Push NuGet + run: | + $tagVersion = "${{ github.ref }}".substring(11) + echo "::set-output name=TAG_VERSION::$tagVersion" + dotnet nuget push IntelliTect.EssentialCSharp.ListingManager.$tagVersion.nupkg --source https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_API_KEY }} --skip-duplicate + id: tag-version + - name: Upload nupkg to Releases + uses: softprops/action-gh-release@v1 + with: + fail_on_unmatched_files: true + generate_release_notes: true + files: IntelliTect.EssentialCSharp.ListingManager.${{ steps.tag-version.outputs.TAG_VERSION }}.nupkg \ No newline at end of file diff --git a/ListingManager/ListingManager.csproj b/ListingManager/ListingManager.csproj index 2c0192b..fee200b 100644 --- a/ListingManager/ListingManager.csproj +++ b/ListingManager/ListingManager.csproj @@ -5,6 +5,9 @@ netcoreapp3.1 true ListingManager + git + true + IntelliTect, EssentialCSharp, ListingManager IntelliTect 0.1.5 IntelliTect.EssentialCSharp.ListingManager @@ -13,10 +16,35 @@ 10 enable CS1591 - + MIT + https://github.com/IntelliTect/ListingManager + https://github.com/IntelliTect/ListingManager + + true + + true + + true + snupkg + + + true + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + \ No newline at end of file