diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c209fb8..7129f0e 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -36,7 +36,7 @@ jobs: PLATFORM_MATRIX: ${{ steps.load-platform-matrix.outputs.PLATFORM_MATRIX }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: load-platform-matrix id: load-platform-matrix @@ -75,7 +75,7 @@ jobs: runs-on: ${{ matrix.host.RUNNER }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: submodules: true @@ -91,7 +91,6 @@ jobs: os: ${{ matrix.host.OS }} target: ${{ matrix.host.TARGET }} github-token: ${{ secrets.GITHUB_TOKEN }} - engine-version: ${{ matrix.engine.version }} - uses: actions/cache@v4 with: @@ -104,7 +103,6 @@ jobs: run: | cargo zigbuild -r --target ${{ matrix.host.TARGET }}.2.17 mkdir -p target/release - cp target/*/release/libglide_rs.so target/release/ - name: Build native libs if: ${{ !contains(matrix.host.TARGET, 'linux-gnu') }} @@ -116,10 +114,11 @@ jobs: uses: actions/upload-artifact@v4 with: name: ${{ matrix.host.TARGET }} + if-no-files-found: error path: | - rust/target/release/*.so - rust/target/release/*.dylib - rust/target/release/*.dll + rust/target/${{ matrix.host.TARGET }}/release/*.so + rust/target/${{ matrix.host.TARGET }}/release/*.dylib + rust/target/${{ matrix.host.TARGET }}/release/*.dll build-package-to-publish: needs: [set-release-version, create-binaries] @@ -127,7 +126,7 @@ jobs: env: RELEASE_VERSION: ${{ needs.set-release-version.outputs.RELEASE_VERSION }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Download published artifacts uses: actions/download-artifact@v4 @@ -154,11 +153,11 @@ jobs: - name: Pack the client working-directory: sources/Valkey.Glide run: | - dotnet build Valkey.Glide.csproj --configuration Release /property:Version=${{ env.RELEASE_VERSION }} - dotnet pack Valkey.Glide.csproj --configuration Release -p:NuspecProperties=version=${{ env.RELEASE_VERSION }} + dotnet build Valkey.Glide.csproj --configuration Release /property:Version=$RELEASE_VERSION + dotnet pack Valkey.Glide.csproj --configuration Release -p:NuspecProperties=version=$RELEASE_VERSION tree -h bin/Release - unzip -l bin/Release/Valkey.Glide.${{ env.RELEASE_VERSION }}.nupkg - unzip -l bin/Release/Valkey.Glide.${{ env.RELEASE_VERSION }}.symbols.nupkg + unzip -l bin/Release/Valkey.Glide.$RELEASE_VERSION.nupkg + unzip -l bin/Release/Valkey.Glide.$RELEASE_VERSION.snupkg env: SkipCargo: true @@ -166,13 +165,16 @@ jobs: uses: actions/upload-artifact@v4 with: name: package - path: sources/Valkey.Glide/bin/Release/Valkey.Glide.*.nupkg + if-no-files-found: error + path: sources/Valkey.Glide/bin/Release/Valkey.Glide.*nupkg publish: environment: Release if: ${{ (inputs.nuget_publish == true || github.event_name == 'push') && github.repository_owner == 'valkey-io' }} - needs: [build-package-to-publish] + needs: [build-package-to-publish, set-release-version] runs-on: ubuntu-latest + env: + RELEASE_VERSION: ${{ needs.set-release-version.outputs.RELEASE_VERSION }} steps: - name: Download package uses: actions/download-artifact@v4 @@ -182,11 +184,31 @@ jobs: - name: Publish run: | ls -lh - dotnet nuget push Valkey.Glide.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json + dotnet nuget push Valkey.Glide.$RELEASE_VERSION.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json + + - name: Wait for package to be ready for download + run: | + dotnet new console --name temp-check --output . --framework net8.0 + TIMEOUT=600 # 10 minutes + INTERVAL=10 # 10 seconds + ELAPSED=0 + + while [ $ELAPSED -lt $TIMEOUT ]; do + echo "Checking availability... (${ELAPSED}s elapsed)" + if dotnet add package Valkey.Glide --version $RELEASE_VERSION ; then + echo "Package is now available!" + exit 0 + fi + sleep $INTERVAL + ELAPSED=$((ELAPSED + INTERVAL)) + dotnet nuget locals all --clear + done + + echo "Timeout: Package is not available after ${TIMEOUT}s" + exit 1 test: needs: [publish, set-release-version, load-platform-matrix] - if: ${{ !cancelled() }} timeout-minutes: 35 strategy: # Run all jobs @@ -197,7 +219,9 @@ jobs: env: RELEASE_VERSION: ${{ needs.set-release-version.outputs.RELEASE_VERSION }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 + with: + submodules: true - name: Download package if: ${{ needs.publish.result == 'skipped' }} @@ -232,15 +256,15 @@ jobs: shell: bash run: | dotnet remove reference $(dotnet list reference | tail -n +3) - dotnet add package Valkey.Glide --version ${{ env.RELEASE_VERSION }} + dotnet add package Valkey.Glide --version $RELEASE_VERSION git diff - - name: Install engine + - name: Install server # TODO activate this on windows once fixed, see https://github.com/valkey-io/valkey-glide-csharp/issues/6 if: ${{ matrix.host.OS != 'windows' }} - uses: ./.github/workflows/install-engine + uses: ./.github/workflows/install-server with: - engine-version: 8.1 + server-version: 8.1 target: ${{ matrix.host.TARGET }} - name: Run tests @@ -268,5 +292,5 @@ jobs: RELEASE_VERSION: ${{ needs.set-release-version.outputs.RELEASE_VERSION }} steps: - name: Remove package from NuGet due to test failures - if: ${{ needs.test.result == 'failure' && needs.publish.result == 'success' }} - run: dotnet nuget delete Valkey.Glide ${{ env.RELEASE_VERSION }} --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --non-interactive + if: ${{ (needs.test.result == 'failure' && needs.publish.result == 'success') || needs.publish.result == 'failure' }} + run: dotnet nuget delete Valkey.Glide $RELEASE_VERSION --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --non-interactive diff --git a/Valkey.Glide.sln b/Valkey.Glide.sln index dd2dc1f..0ee4842 100644 --- a/Valkey.Glide.sln +++ b/Valkey.Glide.sln @@ -14,7 +14,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".files", ".files", "{1F0580 .editorconfig = .editorconfig .gitignore = .gitignore DEVELOPER.md = DEVELOPER.md - ..\.github\workflows\csharp.yml = ..\.github\workflows\csharp.yml + README.md = README.md + icon.png = icon.png + .github\workflows\csharp.yml = .github\workflows\csharp.yml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{9C73AD22-2B57-455C-B623-C30EE8F77B44}" diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..04112e6 Binary files /dev/null and b/icon.png differ diff --git a/sources/Valkey.Glide/Valkey.Glide.csproj b/sources/Valkey.Glide/Valkey.Glide.csproj index 9dc9409..37c561f 100644 --- a/sources/Valkey.Glide/Valkey.Glide.csproj +++ b/sources/Valkey.Glide/Valkey.Glide.csproj @@ -20,7 +20,7 @@ true true - symbols.nupkg + snupkg portable true diff --git a/sources/Valkey.Glide/Valkey.Glide.nuspec b/sources/Valkey.Glide/Valkey.Glide.nuspec index 0c2859a..2162915 100644 --- a/sources/Valkey.Glide/Valkey.Glide.nuspec +++ b/sources/Valkey.Glide/Valkey.Glide.nuspec @@ -7,12 +7,12 @@ Valkey GLIDE Maintainers true General Language Independent Driver for the Enterprise (GLIDE) for Valkey - https://github.com/valkey-io/valkey-glide/csharp + https://github.com/valkey-io/valkey-glide-csharp Apache-2.0 - - README.md - + README.md + icon.png + open-source performance database csharp key-value fault-tolerance cache reliability pubsub valkey valkey-client Copyright © 2025 Valkey GLIDE Maintainers @@ -29,7 +29,6 @@ - @@ -40,5 +39,6 @@ +