diff --git a/.github/workflows/wf-build-release-ci.yml b/.github/workflows/wf-build-release-ci.yml
index 8bf0c577..fc726f0a 100644
--- a/.github/workflows/wf-build-release-ci.yml
+++ b/.github/workflows/wf-build-release-ci.yml
@@ -1,167 +1,99 @@
name: Build, test, pack, push (CI)
+
on:
push:
branches:
- - master
+ - master
workflow_dispatch:
-jobs:
- build:
- runs-on: windows-latest
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ test:
+ runs-on: windows-latest
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
steps:
- uses: actions/checkout@v4
name: Checkout Code
-
+
- name: Install additional .NET SDKs
uses: actions/setup-dotnet@v4
with:
- dotnet-version: |
- 1.0.x
- 2.0.x
+ dotnet-version: |
+ 2.1.x
+ 3.1.x
5.0.x
6.0.x
8.0.x
- - name: Restore NuGet Packages
- run: dotnet restore
-
- - name: Build library
- run: dotnet build -c Release --no-restore
+ - name: Run tests
+ working-directory: QRCoderTests
+ run: dotnet test -c Debug --nologo /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
- - name: Upload artifacts
+ - name: Upload coverage files
uses: actions/upload-artifact@v4
with:
- name: Compiled project
- path: ${{ github.workspace }}
+ name: coverage-files
+ path: QRCoderTests/coverage.*.xml
+ retention-days: 1
- test:
- needs: build
- runs-on: windows-latest
- steps:
- - name: Download artifacts
+ upload-coverage:
+ needs: test
+ runs-on: ubuntu-latest
+ steps:
+ - name: Download coverage files
uses: actions/download-artifact@v4
with:
- name: Compiled project
- path: ${{ github.workspace }}
-
- - name: Install additional .NET SDKs
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: |
- 1.0.x
- 2.0.x
- 5.0.x
- 6.0.x
- 8.0.x
-
- - name: Run test .NET 3.5
- working-directory: QRCoderTests
- run: dotnet test -c Release -f net35 --nologo --no-build # No coverage for NET3.5 because of bug in combination with Coverlet+Stronh naming
-
- - name: Run test .NET 4.52
- working-directory: QRCoderTests
- run: dotnet test -c Release -f net452 --nologo --no-build # No coverage for NET4.5 because of bug in combination with Coverlet+Strong naming
-
- - name: Run test .NET Core 1.1
- working-directory: QRCoderTests
- run: dotnet test -c Release -f netcoreapp1.1 --nologo # No coverage for .NETCORE 1.1 because Coverlet doesn't support it https://github.com/coverlet-coverage/coverlet/issues/466
-
- - name: Run test .NET Core 2.0
- working-directory: QRCoderTests
- run: dotnet test -c Release -f netcoreapp2.0 --nologo /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
-
- - name: Run test .NET 5.0
- working-directory: QRCoderTests
- run: dotnet test -c Release -f net5.0 --nologo --no-build /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
-
- - name: Run test .NET 5.0 Windows
- working-directory: QRCoderTests
- run: dotnet test -c Release -f net5.0-windows --nologo --no-build /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
-
- - name: Run test .NET 6.0
- working-directory: QRCoderTests
- run: dotnet test -c Release -f net6.0 --nologo --no-build /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
-
- - name: Run test .NET 6.0 Windows
- working-directory: QRCoderTests
- run: dotnet test -c Release -f net6.0-windows --nologo --no-build /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
-
- - name: Run API approval tests
- working-directory: QRCoderApiTests
- run: dotnet test -c Release --nologo --no-build
-
- - name: Codecov update netcoreapp2.0
- uses: codecov/codecov-action@v4
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- disable_search: true
- fail_ci_if_error: true
- files: ./QRCoderTests/coverage.netcoreapp2.0.opencover.xml
- flags: netcoreapp2.0
+ name: coverage-files
- - name: Codecov update net5.0
+ - name: Upload to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
- disable_search: true
fail_ci_if_error: true
- files: ./QRCoderTests/coverage.net5.0.opencover.xml
- flags: net5.0
- - name: Codecov update net5.0-windows
- uses: codecov/codecov-action@v4
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- disable_search: true
- fail_ci_if_error: true
- files: ./QRCoderTests/coverage.net5.0-windows.opencover.xml
- flags: net5.0-windows
+ additional-tests:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v4
+ name: Checkout Code
- - name: Codecov update net6.0
- uses: codecov/codecov-action@v4
+ - name: Install .NET SDK
+ uses: actions/setup-dotnet@v4
with:
- token: ${{ secrets.CODECOV_TOKEN }}
- disable_search: true
- fail_ci_if_error: true
- files: ./QRCoderTests/coverage.net5.0.opencover.xml
- flags: net6.0
+ dotnet-version: 8.0.x
- - name: Codecov update net6.0-windows
- uses: codecov/codecov-action@v4
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- disable_search: true
- fail_ci_if_error: true
- files: ./QRCoderTests/coverage.net5.0-windows.opencover.xml
- flags: net6.0-windows
+ - name: Run trim analysis
+ working-directory: QRCoderTrimAnalysis
+ run: dotnet publish -c Release -o bin/publish
+ - name: Run API approval tests
+ working-directory: QRCoderApiTests
+ run: dotnet test -c Release --nologo
pack-push-ci:
- needs: test
+ needs: [test, additional-tests, upload-coverage]
runs-on: windows-latest
env:
GH_PKG_SEC: ${{ secrets.GITHUB_TOKEN }}
- steps:
- - name: Download artifacts
- uses: actions/download-artifact@v4
- with:
- name: Compiled project
- path: ${{ github.workspace }}
+ steps:
+ - uses: actions/checkout@v4
+ name: Checkout Code
- - name: Install additional .NET SDKs
+ - name: Install .NET SDK
uses: actions/setup-dotnet@v4
with:
- dotnet-version: |
- 1.0.x
- 2.0.x
- 5.0.x
- 6.0.x
- 8.0.x
+ dotnet-version: 8.0.x
- name: Restore dependencies
run: dotnet restore
+ - name: Build library
+ run: dotnet build -c Release --no-restore
+
- name: Get assembly version QRCoder
run: echo "ASSEM_VER=$([Reflection.Assembly]::Loadfile( $(-join($pwd,"\QRCoder\bin\Release\net40\QRCoder.dll"))).GetName().version.ToString())" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
@@ -187,15 +119,4 @@ jobs:
run: dotnet pack QRCoder.Xaml\QRCoder.Xaml.csproj -c Release --no-build /p:PackageVersion="$env:ASSEM_VER_SHT_XAML$env:CI_TAG_XAML" /p:PackageReleaseNotes="- This is an automatic CI build ($env:CI_TAG_XAML)`n- Please don't use it in productive environments!"
- name: Publish QRCoder and QRCoder.Xaml to Github packages
- run: dotnet nuget push "**/*.nupkg" --no-symbols --skip-duplicate --api-key $env:GH_PKG_SEC --source https://nuget.pkg.github.com/codebude/index.json
-
-
- clean:
- needs: [build, test, pack-push-ci]
- if: always()
- runs-on: windows-latest
- steps:
- - name: Delete artifacts
- uses: GeekyEggo/delete-artifact@v5
- with:
- name: Compiled project
+ run: dotnet nuget push "**/*.nupkg" --no-symbols --skip-duplicate --api-key $env:GH_PKG_SEC --source https://nuget.pkg.github.com/Shane32/index.json
diff --git a/.github/workflows/wf-build-test.yml b/.github/workflows/wf-build-test.yml
index 571828c5..097795cd 100644
--- a/.github/workflows/wf-build-test.yml
+++ b/.github/workflows/wf-build-test.yml
@@ -1,9 +1,14 @@
name: Build, test (Pull Request)
+
on:
pull_request:
branches:
- master
- workflow_dispatch:
+
+concurrency:
+ group: pr-${{ github.event.pull_request.number }}
+ cancel-in-progress: true
+
jobs:
build:
runs-on: windows-latest
@@ -34,6 +39,7 @@ jobs:
needs: build
runs-on: windows-latest
strategy:
+ fail-fast: false
matrix:
dotnet-framework:
- { name: ".NET Framework 4.6.2", framework: "net462", coverage: false, no-build: true, sdk: "8.0.x" }
diff --git a/QRCoder.Xaml/QRCoder.Xaml.csproj b/QRCoder.Xaml/QRCoder.Xaml.csproj
index f3cef913..0f3fccaa 100644
--- a/QRCoder.Xaml/QRCoder.Xaml.csproj
+++ b/QRCoder.Xaml/QRCoder.Xaml.csproj
@@ -46,7 +46,7 @@
-
+
true
QRCoder.XamlStrongName.snk
false
diff --git a/QRCoder/QRCoder.csproj b/QRCoder/QRCoder.csproj
index ed8fc4d6..e62f0c42 100644
--- a/QRCoder/QRCoder.csproj
+++ b/QRCoder/QRCoder.csproj
@@ -57,7 +57,7 @@
-
+
true
QRCoderStrongName.snk
false