Skip to content
Merged
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
84 changes: 52 additions & 32 deletions .github/workflows/preview-release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Preview Release
name: Fork Package Release

on:
release:
Expand All @@ -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

Expand All @@ -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
Expand All @@ -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
Expand All @@ -62,70 +79,73 @@ 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
id: nuget-login
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
Loading