From 2933616e8321ace789d5e20fcdc56310edd5c2e1 Mon Sep 17 00:00:00 2001 From: Skuirrels Date: Thu, 23 Jul 2026 16:55:12 +0100 Subject: [PATCH] Enable stable fork release workflow --- .github/workflows/preview-release.yml | 84 +++++++++++++++++---------- 1 file changed, 52 insertions(+), 32 deletions(-) diff --git a/.github/workflows/preview-release.yml b/.github/workflows/preview-release.yml index 54ea63d..52002c0 100644 --- a/.github/workflows/preview-release.yml +++ b/.github/workflows/preview-release.yml @@ -1,4 +1,4 @@ -name: Preview Release +name: Fork Package Release on: release: @@ -9,8 +9,12 @@ permissions: id-token: write jobs: - publish-preview: - if: github.event.release.prerelease == true && startsWith(github.event.release.tag_name, 'v1.5.4-preview.') + publish-fork-package: + if: >- + (github.event.release.prerelease == true && + startsWith(github.event.release.tag_name, 'v1.5.4-preview.')) || + (github.event.release.prerelease == false && + github.event.release.tag_name == 'v1.5.4') runs-on: ubuntu-latest environment: nuget-preview @@ -21,16 +25,28 @@ jobs: fetch-depth: 0 ref: ${{ github.event.release.tag_name }} - - name: Set preview version + - name: Set package version and release mode shell: bash run: | version="${{ github.event.release.tag_name }}" version="${version#v}" - if [[ ! "$version" =~ ^1\.5\.4-preview\.[0-9]+$ ]]; then - echo "Unexpected preview version: $version" >&2 + + if [[ "$version" =~ ^1\.5\.4-preview\.[0-9]+$ ]]; then + fork_preview=true + fork_release=false + elif [[ "$version" == "1.5.4" ]]; then + fork_preview=false + fork_release=true + else + echo "Unexpected fork package version: $version" >&2 exit 1 fi - echo "PREVIEW_VERSION=$version" >> "$GITHUB_ENV" + + { + echo "PACKAGE_VERSION=$version" + echo "FORK_PREVIEW=$fork_preview" + echo "FORK_RELEASE=$fork_release" + } >> "$GITHUB_ENV" - name: Setup .NET SDK uses: actions/setup-dotnet@v5 @@ -48,9 +64,10 @@ jobs: /m:1 /p:BuildType=Full /p:CI=false - /p:ForkPreview=true - /p:Version=${{ env.PREVIEW_VERSION }} - /p:PackageVersion=${{ env.PREVIEW_VERSION }} + /p:ForkPreview="$FORK_PREVIEW" + /p:ForkRelease="$FORK_RELEASE" + /p:Version="$PACKAGE_VERSION" + /p:PackageVersion="$PACKAGE_VERSION" /p:UseSharedCompilation=false - name: Test @@ -62,60 +79,63 @@ jobs: --logger "console;verbosity=quiet" /p:BuildType=Full /p:CI=false - /p:ForkPreview=true + /p:ForkPreview="$FORK_PREVIEW" + /p:ForkRelease="$FORK_RELEASE" /p:DoesNotReturnAttribute=DoesNotReturnAttribute - - name: Pack preview packages + - name: Pack fork packages shell: bash run: | - mkdir -p artifacts/preview + mkdir -p artifacts/fork-release common_args=( --configuration Release --no-build --no-restore - --output artifacts/preview + --output artifacts/fork-release /m:1 /p:BuildType=Full /p:CI=false - /p:ForkPreview=true - /p:PreviewPack=true - /p:Version="$PREVIEW_VERSION" - /p:PackageVersion="$PREVIEW_VERSION" + /p:ForkPreview="$FORK_PREVIEW" + /p:ForkRelease="$FORK_RELEASE" + /p:ForkPack=true + /p:Version="$PACKAGE_VERSION" + /p:PackageVersion="$PACKAGE_VERSION" ) dotnet pack DuckDB.NET.Bindings/Bindings.csproj "${common_args[@]}" dotnet restore DuckDB.NET.Data/Data.csproj \ - --source artifacts/preview \ + --source artifacts/fork-release \ --source https://api.nuget.org/v3/index.json \ /p:BuildType=Full \ /p:CI=false \ - /p:ForkPreview=true \ - /p:PreviewPack=true \ - /p:Version="$PREVIEW_VERSION" \ - /p:PackageVersion="$PREVIEW_VERSION" + /p:ForkPreview="$FORK_PREVIEW" \ + /p:ForkRelease="$FORK_RELEASE" \ + /p:ForkPack=true \ + /p:Version="$PACKAGE_VERSION" \ + /p:PackageVersion="$PACKAGE_VERSION" dotnet pack DuckDB.NET.Data/Data.csproj "${common_args[@]}" - name: Validate and smoke-test packages - run: ./scripts/validate-preview-packages.sh artifacts/preview "$PREVIEW_VERSION" + run: ./scripts/validate-fork-packages.sh artifacts/fork-release "$PACKAGE_VERSION" - name: Generate checksums - working-directory: artifacts/preview + working-directory: artifacts/fork-release run: sha256sum *.nupkg > SHA256SUMS - name: Upload workflow artifacts uses: actions/upload-artifact@v7 with: - name: duckdb-net-${{ env.PREVIEW_VERSION }} + name: duckdb-net-${{ github.event.release.tag_name }} path: | - artifacts/preview/*.nupkg - artifacts/preview/SHA256SUMS + artifacts/fork-release/*.nupkg + artifacts/fork-release/SHA256SUMS if-no-files-found: error - - name: Attach packages to GitHub prerelease + - name: Attach packages to GitHub release env: GH_TOKEN: ${{ github.token }} - run: gh release upload "${{ github.event.release.tag_name }}" artifacts/preview/* --clobber + run: gh release upload "${{ github.event.release.tag_name }}" artifacts/fork-release/* --clobber - name: Authenticate to NuGet.org uses: NuGet/login@v1 @@ -123,9 +143,9 @@ jobs: with: user: skuirrels - - name: Publish preview packages to NuGet.org + - name: Publish fork packages to NuGet.org run: >- - dotnet nuget push "artifacts/preview/*.nupkg" + dotnet nuget push "artifacts/fork-release/*.nupkg" --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate