Skip to content
Open
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
80 changes: 50 additions & 30 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,9 @@ jobs:
git checkout preview
git reset --hard "$GITHUB_REF"
git push origin --force-with-lease
publish-packages:
name: Publish packages
if: github.event_name == 'release'
build-packages:
name: Build and pack packages
runs-on: windows-latest
environment: deploy
needs:
- formatting
- coverage
- run-tests
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -145,28 +139,54 @@ jobs:
run: dotnet build -c Release
- name: Pack
run: |
$semver = "$env:GITHUB_REF_NAME"
if ($semver -match '^(\d+)\.(\d+)\.\d+') {
$major = $matches[1]
$minor = $matches[2]
$packageVersion = "$env:GITHUB_REF_NAME"
$assemblyVersion = "$major.$minor.0.0"
Write-Host "Package version: $packageVersion"
Write-Host "Assembly version: $assemblyVersion"
dotnet pack -c Release --output nupkgs -p:PackageVersion=$packageVersion -p:AssemblyVersion=$assemblyVersion
if ("$env:GITHUB_EVENT_NAME" -eq "release") {
$semver = "$env:GITHUB_REF_NAME"
if ($semver -match '^(\d+)\.(\d+)\.\d+') {
$major = $matches[1]
$minor = $matches[2]
$packageVersion = "$env:GITHUB_REF_NAME"
$assemblyVersion = "$major.$minor.0.0"
} else {
throw "Invalid semver format"
}
} else {
throw "Invalid semver format"
# Placeholder version for non-release builds; never used for a real release.
$packageVersion = "0.0.0-ci"
$assemblyVersion = "0.0.0.0"
}
- name: Check release conditions
shell: bash
run: |
if [[ "$GITHUB_REF" =~ ^"refs/tags/"[0-9]+.[0-9]+.[0-9]+(-[a-z]+.[0-9]+)?|"refs/heads/main"$ ]]; then
echo "CREATE_RELEASE=true" >> "$GITHUB_ENV"
else
echo "CREATE_RELEASE=false" >> "$GITHUB_ENV"
fi
Write-Host "Package version: $packageVersion"
Write-Host "Assembly version: $assemblyVersion"
dotnet pack -c Release --output nupkgs -p:PackageVersion=$packageVersion -p:AssemblyVersion=$assemblyVersion
- name: Upload package artifact
if: github.event_name == 'release'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: nupkgs
path: nupkgs/*.nupkg
retention-days: 1

publish-packages:
name: Publish packages
if: github.event_name == 'release'
needs:
- formatting
- coverage
- run-tests
- build-packages
runs-on: windows-latest
environment: deploy
permissions:
id-token: write
steps:
- name: Download package artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: nupkgs
path: nupkgs
- name: NuGet login (OIDC → temp API key)
uses: NuGet/login@8d196754b4036150537f80ac539e15c2f1028841 # v1.2.0
id: nuget-login
with:
user: ${{ secrets.NUGET_USER }}
- name: Push
if: env.CREATE_RELEASE == 'true'
run: dotnet nuget push .\nupkgs\*.nupkg --source https://api.nuget.org/v3/index.json --api-key "$env:NUGET_API_KEY"
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
run: dotnet nuget push .\nupkgs\*.nupkg --source https://api.nuget.org/v3/index.json --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}"
Loading