diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index de134dc..a8cbf0e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -44,15 +44,15 @@ jobs: - name: Pack run: | dotnet pack -c release /p:ContinuousIntegrationBuild=true - cp -r ForceOps/nupkg ForceOps/nupkg_pack - cp -r ForceOps.Lib/nupkg ForceOps.Lib/nupkg_pack - dotnet clean + dotnet pack ForceOps -c release -r win-x64 /p:ContinuousIntegrationBuild=true + dotnet pack ForceOps -c release -r any -p:PublishAot=false /p:ContinuousIntegrationBuild=true - - name: Build (AOT) + # The .sha256 sidecar is used by the scoop bucket's autoupdate + # (https://github.com/domsleee/scoop-bucket). + - name: Create sha256 for release exe run: | - dotnet publish -c release /p:UseAot=1 /p:ContinuousIntegrationBuild=true - cp -r ForceOps/bin ForceOps/bin_aot - dotnet clean + $exe = "ForceOps/bin/release/net10.0/win-x64/publish/ForceOps.exe" + (Get-FileHash $exe -Algorithm SHA256).Hash.ToLower() | Set-Content -NoNewline "$exe.sha256" - name: Create release if: ${{ github.ref == 'refs/heads/main' && startsWith(github.event.head_commit.message, 'chore(release)') }} @@ -60,10 +60,15 @@ jobs: with: draft: true name: "${{ steps.get_version.outputs.version }}" - files: ForceOps/bin_aot/Release/net10.0/win-x64/publish/ForceOps.exe + files: | + ForceOps/bin/release/net10.0/win-x64/publish/ForceOps.exe + ForceOps/bin/release/net10.0/win-x64/publish/ForceOps.exe.sha256 tag_name: "${{ steps.get_version.outputs.version }}" + # RID-specific packages must be on the feed before the top-level pointer + # package, so the pointer package is pushed in a second step. - name: Publish NuGet if: ${{ github.ref == 'refs/heads/main' && startsWith(github.event.head_commit.message, 'chore(release)') }} run: | - dotnet nuget push -k ${{ secrets.NUGET_AUTH_TOKEN }} -s https://api.nuget.org/v3/index.json ForceOps/nupkg_pack/ForceOps.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg_pack/ForceOps.Lib.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg_pack/ForceOps.Lib.${{ steps.get_version.outputs.version }}.snupkg --skip-duplicate + dotnet nuget push -k ${{ secrets.NUGET_AUTH_TOKEN }} -s https://api.nuget.org/v3/index.json ForceOps/nupkg/ForceOps.win-x64.${{ steps.get_version.outputs.version }}.nupkg ForceOps/nupkg/ForceOps.any.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg/ForceOps.Lib.${{ steps.get_version.outputs.version }}.nupkg ForceOps.Lib/nupkg/ForceOps.Lib.${{ steps.get_version.outputs.version }}.snupkg --skip-duplicate + dotnet nuget push -k ${{ secrets.NUGET_AUTH_TOKEN }} -s https://api.nuget.org/v3/index.json ForceOps/nupkg/ForceOps.${{ steps.get_version.outputs.version }}.nupkg --skip-duplicate diff --git a/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs b/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs index 32c8538..33d2462 100644 --- a/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs +++ b/ForceOps.Benchmarks/src/FileAndDirectoryDeleterBenchmark.cs @@ -3,7 +3,7 @@ namespace ForceOps.Benchmarks; -// [SimpleJob(RuntimeMoniker.NativeAot80)] +// [SimpleJob(RuntimeMoniker.NativeAot10_0)] [SimpleJob] public class FileAndDirectoryDeleterBenchmark { diff --git a/ForceOps/ForceOps.csproj b/ForceOps/ForceOps.csproj index 7eced39..e54f313 100644 --- a/ForceOps/ForceOps.csproj +++ b/ForceOps/ForceOps.csproj @@ -9,14 +9,13 @@ ./nupkg - + true forceops - - + true - win-x64 + win-x64;any diff --git a/README.md b/README.md index e8c8cb9..3a62ae3 100644 --- a/README.md +++ b/README.md @@ -12,15 +12,16 @@ Uses [LockChecker](https://github.com/domsleee/LockCheck) to find processes lock ## Installation ### Install with [`scoop`](http://scoop.sh/) (recommended) -It has a faster startup because it uses [Native AOT](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/): +Installs the [Native AOT](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/) build and doesn't require the .NET SDK: ```shell -scoop install https://gist.github.com/domsleee/f765105f512ec607ee0a6e3ee5debd6d/raw/forceops.json +scoop bucket add domsleee https://github.com/domsleee/scoop-bucket +scoop install forceops ``` To update: ```shell -scoop update forceops --force +scoop update forceops ``` ### Alternative - install with [`dotnet`](https://dotnet.microsoft.com/en-us/download) @@ -29,6 +30,8 @@ scoop update forceops --force dotnet tool install -g forceops ``` +On x64 Windows this installs the same Native AOT build as the scoop install. Other architectures get a framework-dependent build. Requires the .NET 10 SDK or later to install. + To update: ```shell dotnet tool update -g forceops