Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/agents/dependency-update.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Work the surfaces in this order. Each is independent; batch the network lookups.
3. GitHub Actions (`.github/workflows/`, `src/Templates/Boilerplate/Bit.Boilerplate/.github/workflows/`, `src/Butil/tests/Bit.Butil.Tests.E2E/ci/`)
4. Azure DevOps tasks (`src/Templates/Boilerplate/Bit.Boilerplate/.azure-devops/workflows/`)
5. devcontainers (`.devcontainer/`, `src/Templates/Boilerplate/Bit.Boilerplate/.devcontainer/`)
6. `.config/dotnet-tools.json` (4 files), `global.json` (3 files)
6. `dnx <package>@<version>` calls in workflows and docs (`vpk`, `dotnet-ef`), `global.json` (3 files)
7. Container image tags in the Aspire AppHost

## The hold-back rules
Expand Down Expand Up @@ -186,11 +186,13 @@ The `image` follows the newest .NET SDK: `curl -s
https://builds.dotnet.microsoft.com/dotnet/release-metadata/10.0/releases.json` → `.latest-sdk`. Both
devcontainers must agree.

### dotnet-tools and global.json
### dnx tool versions and global.json

`vpk` must equal the `Velopack` PackageReference version in the same project — Velopack requires the
CLI and the library to match, and this has drifted before. `dotnet-ef` should equal the EF Core
package version.
There are no `.config/dotnet-tools.json` manifests any more: every tool is run with `dnx
<package>@<version>`, so the pins live in the workflow and doc lines that call them (`grep -rn "dnx
.*@"`). `vpk` must equal the `Velopack` PackageReference version in the same project — Velopack
requires the CLI and the library to match, and this has drifted before. `dotnet-ef` should equal the
EF Core package version.

`src/global.json` is `rollForward: disable` and tracks the newest SDK. The two template
`global.json` files are `10.0.100` + `latestFeature` deliberately — they must accept any 10.0.x on a
Expand Down
24 changes: 9 additions & 15 deletions .github/workflows/admin-sample.cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,7 @@ jobs:
- name: Use Bit.ResxTranslator
run: |
cd AdminPanel
dotnet tool install --global Bit.ResxTranslator --prerelease
bit-resx-translate
dnx Bit.ResxTranslator --prerelease

- name: Update core appsettings.json
uses: devops-actions/variable-substitution@ae7b1f3676ae374dc70282e6b9650bc50b611222 # v1.2
Expand Down Expand Up @@ -116,7 +115,7 @@ jobs:
dotnet build AdminPanel/src/Client/AdminPanel.Client.Web/AdminPanel.Client.Web.csproj -t:BeforeBuildTasks -p:Version="${{ vars.APP_VERSION}}" --no-restore -c Release

- name: Publish Server Web
run: dotnet publish AdminPanel/src/Server/AdminPanel.Server.Web/AdminPanel.Server.Web.csproj -c Release -o server-web -p:Version="${{ vars.APP_VERSION}}" -p:AspNetCoreHostingModel=OutOfProcess
run: dotnet publish AdminPanel/src/Server/AdminPanel.Server.Web/AdminPanel.Server.Web.csproj -c Release -o server-web -p:Version="${{ vars.APP_VERSION}}" -p:AspNetCoreHostingModel=OutOfProcess -p:BitMinifyAggressive=true

- name: Publish Server API
run: dotnet publish AdminPanel/src/Server/AdminPanel.Server.Api/AdminPanel.Server.Api.csproj -c Release -o server-api -p:Version="${{ vars.APP_VERSION}}" -p:AspNetCoreHostingModel=OutOfProcess
Expand Down Expand Up @@ -245,7 +244,7 @@ jobs:
run: dotnet build AdminPanel/src/Client/AdminPanel.Client.Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks -p:Version="${{ vars.APP_VERSION}}" -p:WasmEnableSIMD=true --no-restore -c Release

- name: Publish
run: dotnet publish AdminPanel/src/Client/AdminPanel.Client.Web/AdminPanel.Client.Web.csproj -c Release -o client -p:WasmEnableSIMD=true -p:Version="${{ vars.APP_VERSION}}"
run: dotnet publish AdminPanel/src/Client/AdminPanel.Client.Web/AdminPanel.Client.Web.csproj -c Release -o client -p:WasmEnableSIMD=true -p:Version="${{ vars.APP_VERSION}}" -p:BitMinifyAggressive=true

- name: Upload to asw
run: |
Expand Down Expand Up @@ -283,8 +282,7 @@ jobs:
- name: Use Bit.ResxTranslator
run: |
cd AdminPanel
dotnet tool install --global Bit.ResxTranslator --prerelease
bit-resx-translate
dnx Bit.ResxTranslator --prerelease

- name: Update core appsettings.json
uses: devops-actions/variable-substitution@ae7b1f3676ae374dc70282e6b9650bc50b611222 # v1.2
Expand All @@ -305,21 +303,19 @@ jobs:
continue-on-error: true
run: |
cd AdminPanel\src\Client\AdminPanel.Client.Windows\
dotnet tool restore
dotnet vpk download s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases
dnx vpk@1.2.0 -- download s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases

- name: Publish
run: |
cd AdminPanel\src\Client\AdminPanel.Client.Windows\
dotnet publish AdminPanel.Client.Windows.csproj -c Release -o .\publish-result -r win-x64 -p:Version="${{ vars.APP_VERSION}}" -p:PublishReadyToRun=true -p:PublishReadyToRunComposite=true --self-contained
dotnet tool restore
dotnet vpk pack -u AdminPanel.Client.Windows -v "${{ vars.APP_VERSION }}" -p .\publish-result -e AdminPanel.Client.Windows.exe -r win-x64 --framework webview2 --icon .\wwwroot\favicon.ico --packTitle 'AdminPanel'
dnx vpk@1.2.0 -- pack -u AdminPanel.Client.Windows -v "${{ vars.APP_VERSION }}" -p .\publish-result -e AdminPanel.Client.Windows.exe -r win-x64 --framework webview2 --icon .\wwwroot\favicon.ico --packTitle 'AdminPanel'

# The update feed behind WindowsUpdate.FilesUrl.
- name: Upload releases to R2
run: |
cd AdminPanel\src\Client\AdminPanel.Client.Windows\
dotnet vpk upload s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases --keepMaxReleases 10
dnx vpk@1.2.0 -- upload s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases --keepMaxReleases 10

build_blazor_hybrid_android:
name: build blazor hybrid (android)
Expand Down Expand Up @@ -366,8 +362,7 @@ jobs:
- name: Use Bit.ResxTranslator
run: |
cd AdminPanel
dotnet tool install --global Bit.ResxTranslator --prerelease
bit-resx-translate
dnx Bit.ResxTranslator --prerelease

- name: Update core appsettings.json
uses: devops-actions/variable-substitution@ae7b1f3676ae374dc70282e6b9650bc50b611222 # v1.2
Expand Down Expand Up @@ -445,8 +440,7 @@ jobs:
- name: Use Bit.ResxTranslator
run: |
cd AdminPanel
dotnet tool install --global Bit.ResxTranslator --prerelease
bit-resx-translate
dnx Bit.ResxTranslator --prerelease

- name: Update core appsettings.json
uses: devops-actions/variable-substitution@ae7b1f3676ae374dc70282e6b9650bc50b611222 # v1.2
Expand Down
19 changes: 15 additions & 4 deletions .github/workflows/all.ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,7 @@ jobs:
run: |
cd TestPostgreSQL/src/Server/TestPostgreSQL.Server.Api/
dotnet build -p:EnforceCodeStyleInBuild=true
dotnet tool restore
dotnet ef migrations add Initial --verbose
dnx dotnet-ef@10.0.12 -- migrations add Initial --verbose

- name: Trust dotnet cert
continue-on-error: true
Expand Down Expand Up @@ -248,8 +247,7 @@ jobs:
run: |
cd TestSqlServer/src/Server/TestSqlServer.Server.Api/
dotnet build -p:EnforceCodeStyleInBuild=true
dotnet tool restore
dotnet ef migrations add Initial --verbose
dnx dotnet-ef@10.0.12 -- migrations add Initial --verbose

- name: Install sql server
uses: potatoqualitee/mssqlsuite@2291d923e83859edd871679c05b379037376761f # v1.12
Expand Down Expand Up @@ -557,6 +555,13 @@ jobs:
dotnet build src/CodeAnalyzers/Bit.CodeAnalyzers/Bit.CodeAnalyzers.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
dotnet pack src/CodeAnalyzers/Bit.CodeAnalyzers/Bit.CodeAnalyzers.csproj --output ./packages --configuration Release

- name: Build and pack Minifier
run: |
dotnet build src/Minifier/Bit.Minifier/Bit.Minifier.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
dotnet pack src/Minifier/Bit.Minifier/Bit.Minifier.csproj --output ./packages --configuration Release
dotnet build src/Minifier/Bit.Minifier.Cli/Bit.Minifier.Cli.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
dotnet pack src/Minifier/Bit.Minifier.Cli/Bit.Minifier.Cli.csproj --output ./packages --configuration Release

- name: Build and pack ResxTranslator
run: |
dotnet build src/ResxTranslator/Bit.ResxTranslator/Bit.ResxTranslator.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
Expand Down Expand Up @@ -723,6 +728,12 @@ jobs:
- name: Build CodeAnalyzers solution in Release mode
run: dotnet build src/CodeAnalyzers/Bit.CodeAnalyzers.slnx -c Release

- name: Build Minifier solution in Release mode
run: dotnet build src/Minifier/Bit.Minifier.slnx -c Release

- name: Test Minifier
run: cd src/Minifier && dotnet test --project Tests/Bit.Minifier.Tests/Bit.Minifier.Tests.csproj -c Release --no-build

- name: Build ResxTranslator solution in Release mode
run: dotnet build src/ResxTranslator/Bit.ResxTranslator.slnx -c Release

Expand Down
1 change: 1 addition & 0 deletions .github/workflows/bit.ci.BlazorUI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
pull_request:
paths:
- 'src/BlazorUI/**'
- 'src/Minifier/**'

env:
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: true
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/bit.ci.Minifier.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: bit platform CI - Minifier

on:
workflow_dispatch:
pull_request:
paths:
- 'src/Minifier/**'

env:
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: true

permissions:
contents: read

jobs:
build-Minifier:
if: startsWith(github.event.pull_request.title, 'Prerelease') != true && startsWith(github.event.pull_request.title, 'Release') != true && startsWith(github.event.pull_request.title, 'Version') != true
name: build Bit.Minifier
runs-on: ubuntu-24.04

steps:

- name: Checkout source code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup .NET 10.0
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
global-json-file: src/global.json

- name: dotnet build
run: dotnet build src/Minifier/Bit.Minifier.slnx

- name: dotnet test
run: cd src/Minifier && dotnet test --project Tests/Bit.Minifier.Tests/Bit.Minifier.Tests.csproj --no-build
1 change: 1 addition & 0 deletions .github/workflows/bit.ci.Templates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
pull_request:
paths:
- 'src/Templates/**'
- 'src/Minifier/**'

env:
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: true
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/bit.ci.Websites.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
pull_request:
paths:
- 'src/Websites/**'
- 'src/Minifier/**'

env:
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: true
Expand Down
8 changes: 3 additions & 5 deletions .github/workflows/blazorui.demo.cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -164,21 +164,19 @@ jobs:
continue-on-error: true
run: |
cd src\BlazorUI\Demo\Client\Bit.BlazorUI.Demo.Client.Windows\
dotnet tool restore
dotnet vpk download s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases
dnx vpk@1.2.0 -- download s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases

- name: Publish
run: |
cd src\BlazorUI\Demo\Client\Bit.BlazorUI.Demo.Client.Windows\
dotnet publish Bit.BlazorUI.Demo.Client.Windows.csproj -c Release -o .\publish-result -r win-x86 -p:Version="${{ vars.APP_VERSION}}" -p:CompressionEnabled=false -p:PublishReadyToRun=true -p:PublishReadyToRunComposite=true --self-contained
dotnet tool restore
dotnet vpk pack -u Bit.BlazorUI.Demo.Client.Windows -v "${{ vars.APP_VERSION }}" -p .\publish-result -e Bit.BlazorUI.Demo.Client.Windows.exe -r win-x86 --framework webview2 --icon .\wwwroot\favicon.ico --packTitle 'Bit Blazor UI'
dnx vpk@1.2.0 -- pack -u Bit.BlazorUI.Demo.Client.Windows -v "${{ vars.APP_VERSION }}" -p .\publish-result -e Bit.BlazorUI.Demo.Client.Windows.exe -r win-x86 --framework webview2 --icon .\wwwroot\favicon.ico --packTitle 'Bit Blazor UI'

# The update feed behind WindowsUpdateSettings.FilesUrl.
- name: Upload releases to R2
run: |
cd src\BlazorUI\Demo\Client\Bit.BlazorUI.Demo.Client.Windows\
dotnet vpk upload s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases --keepMaxReleases 10
dnx vpk@1.2.0 -- upload s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases --keepMaxReleases 10


build_blazor_hybrid_android:
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/nuget.org.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ on:
- 'src/Bswup/**'
- 'src/Butil/**'
- 'src/CodeAnalyzers/**'
- 'src/Minifier/**'
- 'src/SourceGenerators/**'
- 'src/Templates/**'

Expand Down Expand Up @@ -161,6 +162,16 @@ jobs:
- name: dotnet pack CodeAnalyzer
run: dotnet pack src/CodeAnalyzers/Bit.CodeAnalyzers/Bit.CodeAnalyzers.csproj --output . --configuration Release

- name: dotnet build Minifier
run: dotnet build src/Minifier/Bit.Minifier/Bit.Minifier.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
- name: dotnet pack Minifier
run: dotnet pack src/Minifier/Bit.Minifier/Bit.Minifier.csproj --output . --configuration Release

- name: dotnet build Minifier.Cli
run: dotnet build src/Minifier/Bit.Minifier.Cli/Bit.Minifier.Cli.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
- name: dotnet pack Minifier.Cli
run: dotnet pack src/Minifier/Bit.Minifier.Cli/Bit.Minifier.Cli.csproj --output . --configuration Release

- name: dotnet build ResxTranslator
run: dotnet build src/ResxTranslator/Bit.ResxTranslator/Bit.ResxTranslator.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
- name: dotnet pack ResxTranslator
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/prerelease.nuget.org.yml
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,16 @@ jobs:
- name: dotnet pack CodeAnalyzer
run: dotnet pack src/CodeAnalyzers/Bit.CodeAnalyzers/Bit.CodeAnalyzers.csproj --output . --configuration Release

- name: dotnet build Minifier
run: dotnet build src/Minifier/Bit.Minifier/Bit.Minifier.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
- name: dotnet pack Minifier
run: dotnet pack src/Minifier/Bit.Minifier/Bit.Minifier.csproj --output . --configuration Release

- name: dotnet build Minifier.Cli
run: dotnet build src/Minifier/Bit.Minifier.Cli/Bit.Minifier.Cli.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
- name: dotnet pack Minifier.Cli
run: dotnet pack src/Minifier/Bit.Minifier.Cli/Bit.Minifier.Cli.csproj --output . --configuration Release

- name: dotnet build ResxTranslator
run: dotnet build src/ResxTranslator/Bit.ResxTranslator/Bit.ResxTranslator.csproj -c Release -p:GeneratePackageOnBuild=false -p:WarningLevel=0 -p:RunCodeAnalysis=false
- name: dotnet pack ResxTranslator
Expand Down
13 changes: 5 additions & 8 deletions .github/workflows/sales-module-demo.cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
dotnet build SalesModule/src/Client/SalesModule.Client.Web/SalesModule.Client.Web.csproj -t:BeforeBuildTasks -p:Version="${{ vars.APP_VERSION}}" --no-restore -c Release

- name: Publish
run: dotnet publish SalesModule/src/Server/SalesModule.Server.Web/SalesModule.Server.Web.csproj -c Release -o server -p:Version="${{ vars.APP_VERSION}}" -p:AspNetCoreHostingModel=OutOfProcess
run: dotnet publish SalesModule/src/Server/SalesModule.Server.Web/SalesModule.Server.Web.csproj -c Release -o server -p:Version="${{ vars.APP_VERSION}}" -p:AspNetCoreHostingModel=OutOfProcess -p:BitMinifyAggressive=true

# Server-owned; C:\inetpub keeps its own copies. Also keeps them out of the artifact.
- name: Strip server-owned files from bundle
Expand Down Expand Up @@ -177,8 +177,7 @@ jobs:
- name: Use Bit.ResxTranslator
run: |
cd SalesModule
dotnet tool install --global Bit.ResxTranslator --prerelease
bit-resx-translate
dnx Bit.ResxTranslator --prerelease

- name: Generate CSS/JS files
run: dotnet build SalesModule\src\Client\SalesModule.Client.Core\SalesModule.Client.Core.csproj -t:BeforeBuildTasks -p:Version="${{ vars.APP_VERSION}}" --no-restore -c Release
Expand All @@ -188,18 +187,16 @@ jobs:
continue-on-error: true
run: |
cd SalesModule\src\Client\SalesModule.Client.Windows\
dotnet tool restore
dotnet vpk download s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases
dnx vpk@1.2.0 -- download s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases

- name: Publish
run: |
cd SalesModule\src\Client\SalesModule.Client.Windows\
dotnet publish SalesModule.Client.Windows.csproj -c Release -o .\publish-result -r win-x64 -p:Version="${{ vars.APP_VERSION}}" -p:PublishReadyToRun=true -p:PublishReadyToRunComposite=true --self-contained
dotnet tool restore
dotnet vpk pack -u SalesModule.Client.Windows -v "${{ vars.APP_VERSION }}" -p .\publish-result -e SalesModule.Client.Windows.exe -r win-x64 --framework webview2 --icon .\wwwroot\favicon.ico --packTitle 'SalesModule'
dnx vpk@1.2.0 -- pack -u SalesModule.Client.Windows -v "${{ vars.APP_VERSION }}" -p .\publish-result -e SalesModule.Client.Windows.exe -r win-x64 --framework webview2 --icon .\wwwroot\favicon.ico --packTitle 'SalesModule'

# The update feed behind WindowsUpdate.FilesUrl.
- name: Upload releases to R2
run: |
cd SalesModule\src\Client\SalesModule.Client.Windows\
dotnet vpk upload s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases --keepMaxReleases 10
dnx vpk@1.2.0 -- upload s3 --endpoint ${{ vars.R2_ENDPOINT }} --bucket ${{ env.R2_BUCKET }} --keyId ${{ secrets.R2_ACCESS_KEY_ID }} --secret ${{ secrets.R2_SECRET_ACCESS_KEY }} -o .\Releases --keepMaxReleases 10
Loading
Loading