Skip to content
Merged
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
28 changes: 0 additions & 28 deletions .github/workflows/build-and-test.yml

This file was deleted.

145 changes: 145 additions & 0 deletions .github/workflows/sdk-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
name: Cortex Package Release Pipeline

on:
pull_request:
types: [closed]
branches:
- 'v*/main'

jobs:
build-and-publish:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Check if PR was merged
id: check_merge
run: |
if [ "${{ github.event.pull_request.merged }}" = "true" ]; then
echo "merged=true" >> $GITHUB_OUTPUT
else
echo "merged=false" >> $GITHUB_OUTPUT
fi

- name: Determine version increment
id: versioning
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
labels=$(echo '${{ toJSON(github.event.pull_request.labels) }}' | jq -r '.[].name')
echo "PR labels: $labels"
increment="patch"
if echo "$labels" | grep -q "feature"; then
increment="minor"
fi
echo "increment=$increment" >> $GITHUB_OUTPUT

- name: Get current version
id: get_version
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
branchName='${{ github.ref_name }}' # e.g., v1/main
echo "Branch name: $branchName"
if [[ $branchName =~ ^v([0-9]+)/main$ ]]; then
majorVersion="${BASH_REMATCH[1]}"
echo "Major version: $majorVersion"
git fetch --tags
latestTag=$(git tag --list "v$majorVersion.*.*" | sort -V | tail -n1)
if [ -n "$latestTag" ]; then
currentVersion="${latestTag#v}"
else
currentVersion="$majorVersion.0.0"
fi
else
echo "Branch name does not match expected pattern"
exit 1
fi
echo "Current version: $currentVersion"
echo "major=$majorVersion" >> $GITHUB_OUTPUT
echo "currentVersion=$currentVersion" >> $GITHUB_OUTPUT

- name: Bump version
id: bump_version
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
increment='${{ steps.versioning.outputs.increment }}'
currentVersion='${{ steps.get_version.outputs.currentVersion }}'
IFS='.' read -ra versionParts <<< "$currentVersion"
major=${versionParts[0]}
minor=${versionParts[1]}
patch=${versionParts[2]}
if [ "$increment" == 'minor' ]; then
minor=$((minor + 1))
patch=0
elif [ "$increment" == 'patch' ]; then
patch=$((patch + 1))
else
echo "Unknown increment type: $increment"
exit 1
fi
newVersion="$major.$minor.$patch"
echo "New version: $newVersion"
echo "newVersion=$newVersion" >> $GITHUB_OUTPUT

- name: Install xmlstarlet
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: sudo apt-get install -y xmlstarlet

- name: Update project versions
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
newVersion='${{ steps.bump_version.outputs.newVersion }}'
find . -name '*.csproj' -not -path '*/Cortex.Tests/*' | while read csproj; do
echo "Updating version in $csproj"
xmlstarlet ed -P -L -u "//Project/PropertyGroup/Version" -v "$newVersion" "$csproj" || \
xmlstarlet ed -P -L -s "//Project/PropertyGroup" -t elem -n "Version" -v "$newVersion" "$csproj"
done

- name: Build solution
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: dotnet build --configuration Release

- name: Pack projects
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
dotnet pack --configuration Release --no-build --output ./artifacts

- name: Publish to NuGet
if: ${{ steps.check_merge.outputs.merged == 'true' }}
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
run: |
dotnet nuget push ./artifacts/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json

- name: Configure Git
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"

- name: Create Git tag
if: ${{ steps.check_merge.outputs.merged == 'true' }}
run: |
newVersion='${{ steps.bump_version.outputs.newVersion }}'
git tag -a "v$newVersion" -m "Release v$newVersion"
git push origin "v$newVersion"

- name: Create GitHub Release
if: ${{ steps.check_merge.outputs.merged == 'true' }}
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: "v${{ steps.bump_version.outputs.newVersion }}"
release_name: "v${{ steps.bump_version.outputs.newVersion }}"
draft: false
prerelease: false
body: "Release of version v${{ steps.bump_version.outputs.newVersion }}"
6 changes: 3 additions & 3 deletions src/Cortex.States.RocksDb/RocksDbStateStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using System.Collections.Generic;
using System.Text.Json;
using System.Threading;
using System.Xml.Linq;

namespace Cortex.States.RocksDb
{
Expand All @@ -18,10 +17,11 @@ public class RocksDbStateStore<TKey, TValue> : IStateStore<TKey, TValue>
private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
public string Name { get; }

public RocksDbStateStore(string name, string dbPath)
public RocksDbStateStore(string name, string dbPath, DbOptions rocksDbOptions = null)
{
Name = name;
var options = new DbOptions().SetCreateIfMissing(true);
var options = rocksDbOptions ?? new DbOptions().SetCreateIfMissing(true);

_db = RocksDbSharp.RocksDb.Open(options, dbPath);

// Default serializers using JSON
Expand Down
2 changes: 1 addition & 1 deletion src/Cortex.Streams.Files/Cortex.Streams.Files.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<Version>1.0.0</Version>
<PackageLicenseFile>license.md</PackageLicenseFile>
<PackageIcon>cortex.png</PackageIcon>
<PackageId>Cortex.Streams.S3</PackageId>
<PackageId>Cortex.Streams.Files</PackageId>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<IsPublishable>True</IsPublishable>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
Expand Down
Loading