Skip to content
Draft
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
e71f72e
Use MinVer to compute package versions
DavidNemecek Sep 20, 2025
b81c442
Merge pull request #2625 from litedb-org/codex/plan-move-to-github-ac…
JKamsker Sep 20, 2025
fda48e7
Remove MinVerDefaultPreReleaseIdentifiers environment variable from p…
JKamsker Sep 20, 2025
a12aea6
Update MinVerDefaultPreReleaseIdentifiers to use a single prerelease …
JKamsker Sep 20, 2025
e2eb0c2
Add Bitwarden secret retrieval for NuGet API key in publish workflows
JKamsker Sep 20, 2025
92b3f1b
Add test run settings and set timeout for test jobs in CI workflows
JKamsker Sep 20, 2025
6604e37
Add agents
JKamsker Sep 20, 2025
9276f08
Enhance test logging and introduce CpuBoundFactAttribute for CPU-boun…
JKamsker Sep 20, 2025
1b8a9aa
Comment out CI workflow steps for future reference
JKamsker Sep 20, 2025
c594e44
Add synthetic zip payloads for rebuild tests
JKamsker Sep 20, 2025
305aba7
Use deterministic sample for descending sort test
JKamsker Sep 20, 2025
d6dd57c
Clarify write lock timeout comment
JKamsker Sep 20, 2025
f9d9cff
Merge remote-tracking branch 'origin/codex/reduce-transaction-timeout…
JKamsker Sep 20, 2025
e77d6f4
Merge remote-tracking branch 'origin/codex/refactor-sort_tests-with-s…
JKamsker Sep 20, 2025
0ed00ff
Merge remote-tracking branch 'origin/codex/update-rebuild_tests-with-…
JKamsker Sep 20, 2025
6cbaeac
Refactor CI workflow by removing commented-out code for clarity
JKamsker Sep 20, 2025
23f5fa4
Add test database factory
JKamsker Sep 20, 2025
02cba90
Merge branch 'feat/improve-test-time' into codex/consolidate-test-dat…
JKamsker Sep 20, 2025
c880867
Default simple tests to in-memory database
JKamsker Sep 21, 2025
83c4d88
Merge remote-tracking branch 'origin/codex/consolidate-test-database-…
JKamsker Sep 21, 2025
7a0dfae
Merge pull request #10 from JKamsker/codex/consolidate-test-database-…
JKamsker Sep 21, 2025
d8f41da
Merge pull request #2627 from JKamsker/feat/improve-test-time
JKamsker Sep 21, 2025
065ae9b
Add support for multi-key query ordering
JKamsker Sep 21, 2025
69c100e
Merge remote-tracking branch 'upstream/dev' into codex/expand-query/q…
JKamsker Sep 21, 2025
1fa3bb4
Fix test
JKamsker Sep 21, 2025
40de44c
Changes from review
JKamsker Sep 21, 2025
14cd7c8
Add set of new tests
JKamsker Sep 21, 2025
26bc3da
Add more tests to multi order
JKamsker Sep 21, 2025
fa00f17
Merge pull request #2632 from JKamsker/feat/composite-sorting
JKamsker Sep 21, 2025
2eed470
Fix package versions
JKamsker Sep 21, 2025
1e37138
Merge pull request #2633 from JKamsker/dev
JKamsker Sep 21, 2025
8576017
Confirm rollback bug in dev
JKamsker Sep 23, 2025
086e813
Handle safepoint buffers during rollback
JKamsker Sep 23, 2025
98503e8
Manually verified rollback bug #2586
JKamsker Sep 23, 2025
2fcace1
Fix testing
JKamsker Sep 23, 2025
d89b162
Merge pull request #2638 from litedb-org/codex/fix-litedb-rollback-cr…
JKamsker Sep 23, 2025
8b02f19
Fix dev build
JKamsker Sep 23, 2025
bad7273
Simplify rebuild crash test setup
JKamsker Sep 23, 2025
de7fd61
Add timeouts to skipped query and rebuild tests
JKamsker Sep 23, 2025
07378b7
Log start and completion for long-running tests
JKamsker Sep 23, 2025
765c93c
Merge pull request #2639 from litedb-org/codex/investigate-rebuild_cr…
JKamsker Sep 23, 2025
7be883d
ifdef
JKamsker Sep 23, 2025
ebc9999
Switch to gitversion
JKamsker Sep 27, 2025
c32a197
Fix stuck unit tests
JKamsker Sep 27, 2025
bf3987f
Ensure external streams checkpoint on commit (#2652)
JKamsker Sep 27, 2025
30624bc
Add cleanup step for detached NuGet packages and enhance GitVersion c…
JKamsker Sep 28, 2025
d9d8a8d
Disable GitVersion in shallow clones (#2656)
JKamsker Sep 28, 2025
66ec615
Implement vectors (#2678)
JKamsker Sep 30, 2025
8630067
Repo Runner (#2690)
JKamsker Oct 1, 2025
fbb53e3
Improve build pipeline (#2692)
JKamsker Oct 1, 2025
3114fda
Add support for GroupBy (#2694)
JKamsker Oct 1, 2025
ce004d7
Use fixed stack buffers in string serializers (#2695)
JKamsker Oct 5, 2025
a540b2a
Fix support for custom dictionary key types (#546) (#2701)
JKamsker Oct 5, 2025
8622e13
Expand CI coverage across Windows and multi-target tests (#2702)
JKamsker Oct 5, 2025
2f9c286
Fix breaking change in dotnet 10 (#2703)
JKamsker Oct 5, 2025
2bb05aa
Refactor workflows to reuse CI for prerelease gating (#2704)
JKamsker Oct 5, 2025
58f5c22
Add workflow_dispatch support to publish prerelease workflow
JKamsker Oct 5, 2025
087bad0
Trigger gh workflow when workflow changes
JKamsker Oct 5, 2025
86eefe8
Fix/2670 memoryextensions net10 followup (#2710)
LPEdwin Oct 7, 2025
ff4d67c
Feat/fix mutexes (#2711)
JKamsker Oct 8, 2025
604d1d0
Fix/url encoded mutex (#2709)
JKamsker Oct 8, 2025
4b3fca1
Fix ReadFull must read PAGE_SIZE bytes [{0}]
isbdnt1 Oct 25, 2025
775349b
Add windows ci matrix (#2718)
JKamsker Oct 26, 2025
2ec2daf
Run ReproRunner in publish prerelease
JKamsker Oct 26, 2025
b9dead2
Add regression test
JKamsker Oct 28, 2025
1ab2331
Merge remote-tracking branch 'upstream/dev' into dev
JKamsker Oct 28, 2025
7ae5d1f
Merge pull request #2717 from isbdnt1/dev
JKamsker Oct 28, 2025
736ff09
Add macOS coverage to CI workflow
JKamsker Oct 28, 2025
e55199d
Merge pull request #2719 from JKamsker/feat/macos
JKamsker Oct 28, 2025
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
13 changes: 13 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"gitversion.tool": {
"version": "6.4.0",
"commands": [
"dotnet-gitversion"
],
"rollForward": false
}
}
}
29 changes: 29 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: CI

on:
pull_request:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Restore
run: dotnet restore LiteDB.sln

- name: Build
run: dotnet build LiteDB.sln --configuration Release --no-restore /p:DefineConstants=TESTING

- name: Test
timeout-minutes: 5
run: dotnet test LiteDB.sln --configuration Release --no-build --verbosity normal --settings tests.runsettings --logger "trx;LogFileName=TestResults.trx" --logger "console;verbosity=detailed" /p:DefineConstants=TESTING
106 changes: 106 additions & 0 deletions .github/workflows/publish-prerelease.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Publish prerelease

on:
push:
branches:
- dev

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Restore .NET tools
run: dotnet tool restore

- name: Compute semantic version
id: gitversion
shell: bash
run: |
set -euo pipefail
JSON=$(dotnet tool run dotnet-gitversion /output json)
echo "$JSON"

NUGET_VERSION=$(echo "$JSON" | jq -r '.NuGetVersion')
FULL_SEMVER=$(echo "$JSON" | jq -r '.FullSemVer')
SHORT_SHA=$(echo "$JSON" | jq -r '.ShortSha')
MAJOR_MINOR_PATCH=$(echo "$JSON" | jq -r '.MajorMinorPatch')
PR_LABEL=$(echo "$JSON" | jq -r '.PreReleaseLabel')
PR_NUMBER=$(echo "$JSON" | jq -r '.PreReleaseNumber')

if [[ "$PR_LABEL" != "" && "$PR_LABEL" != "null" ]]; then
printf -v PR_PADDED '%04d' "$PR_NUMBER"
RELEASE_VERSION_PADDED="${MAJOR_MINOR_PATCH}-${PR_LABEL}.${PR_PADDED}"
else
RELEASE_VERSION_PADDED="$MAJOR_MINOR_PATCH"
fi

echo "nugetVersion=$NUGET_VERSION" >> "$GITHUB_OUTPUT"
echo "fullSemVer=$FULL_SEMVER" >> "$GITHUB_OUTPUT"
echo "releaseVersionPadded=$RELEASE_VERSION_PADDED" >> "$GITHUB_OUTPUT"
echo "informational=${NUGET_VERSION}+${SHORT_SHA}" >> "$GITHUB_OUTPUT"

- name: Restore
run: dotnet restore LiteDB.sln

- name: Test
timeout-minutes: 5
run: dotnet test LiteDB.sln --configuration Release --verbosity normal --settings tests.runsettings --logger "trx;LogFileName=TestResults.trx" --logger "console;verbosity=detailed" /p:DefineConstants=TESTING

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: "**/*TestResults*.trx"

- name: Upload hang dumps (if any)
uses: actions/upload-artifact@v4
if: always()
with:
name: hangdumps
path: |
hangdumps
**/TestResults/**/*.dmp
if-no-files-found: ignore

- name: Build
if: success()
run: dotnet build LiteDB/LiteDB.csproj --configuration Release --no-restore /p:ContinuousIntegrationBuild=true

- name: Pack
if: success()
run: dotnet pack LiteDB/LiteDB.csproj --configuration Release --no-build -o artifacts /p:ContinuousIntegrationBuild=true

# if delete all nuget packages which are named ``0.0.0-detached.nupkg`` (leftover from detached builds)
- name: Clean up detached packages
run: |
find artifacts -name "0.0.0-detached.nupkg" -delete

- name: Retrieve secrets from Bitwarden
uses: bitwarden/sm-action@v2
with:
access_token: ${{ secrets.BW_ACCESS_TOKEN }}
base_url: https://vault.bitwarden.eu
secrets: |
265b2fb6-2cf0-4859-9bc8-b24c00ab4378 > NUGET_API_KEY

- name: Push package to NuGet
if: success()
env:
PACKAGE_VERSION: ${{ steps.gitversion.outputs.nugetVersion }}
run: |
echo "Pushing LiteDB version $PACKAGE_VERSION"
dotnet nuget push "artifacts/*.nupkg" --api-key "$NUGET_API_KEY" --source https://api.nuget.org/v3/index.json --skip-duplicate
112 changes: 112 additions & 0 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Publish release

on:
workflow_dispatch:
inputs:
ref:
description: Branch, tag, or SHA to release from
default: master
required: true
publish_nuget:
description: Push packages to NuGet
type: boolean
default: false
publish_github:
description: Create or update GitHub release
type: boolean
default: false

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ inputs.ref }}

- name: Set up .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Restore .NET tools
run: dotnet tool restore

- name: Compute semantic version
id: gitversion
shell: bash
run: |
set -euo pipefail
JSON=$(dotnet tool run dotnet-gitversion /output json)
echo "$JSON"

NUGET_VERSION=$(echo "$JSON" | jq -r '.NuGetVersion')
FULL_SEMVER=$(echo "$JSON" | jq -r '.FullSemVer')
SHORT_SHA=$(echo "$JSON" | jq -r '.ShortSha')
MAJOR_MINOR_PATCH=$(echo "$JSON" | jq -r '.MajorMinorPatch')
PR_LABEL=$(echo "$JSON" | jq -r '.PreReleaseLabel')
PR_NUMBER=$(echo "$JSON" | jq -r '.PreReleaseNumber')

if [[ "$PR_LABEL" != "" && "$PR_LABEL" != "null" ]]; then
printf -v PR_PADDED '%04d' "$PR_NUMBER"
RELEASE_VERSION_PADDED="${MAJOR_MINOR_PATCH}-${PR_LABEL}.${PR_PADDED}"
else
RELEASE_VERSION_PADDED="$MAJOR_MINOR_PATCH"
fi

echo "nugetVersion=$NUGET_VERSION" >> "$GITHUB_OUTPUT"
echo "fullSemVer=$FULL_SEMVER" >> "$GITHUB_OUTPUT"
echo "releaseVersionPadded=$RELEASE_VERSION_PADDED" >> "$GITHUB_OUTPUT"
echo "informational=${NUGET_VERSION}+${SHORT_SHA}" >> "$GITHUB_OUTPUT"

- name: Restore
run: dotnet restore LiteDB.sln

- name: Build
run: dotnet build LiteDB.sln --configuration Release --no-restore /p:ContinuousIntegrationBuild=true

- name: Test
timeout-minutes: 8
run: dotnet test LiteDB.sln --configuration Release --no-build --verbosity normal --settings tests.runsettings --logger "trx;LogFileName=TestResults.trx" --logger "console;verbosity=detailed"

- name: Pack
run: dotnet pack LiteDB/LiteDB.csproj --configuration Release --no-build -o artifacts /p:ContinuousIntegrationBuild=true

# if delete all nuget packages which are named ``0.0.0-detached.nupkg`` (leftover from detached builds)
- name: Clean up detached packages
run: |
find artifacts -name "0.0.0-detached.nupkg" -delete

- name: Retrieve secrets from Bitwarden
if: ${{ inputs.publish_nuget }}
uses: bitwarden/sm-action@v2
with:
access_token: ${{ secrets.BW_ACCESS_TOKEN }}
base_url: https://vault.bitwarden.eu
secrets: |
265b2fb6-2cf0-4859-9bc8-b24c00ab4378 > NUGET_API_KEY

- name: Push package to NuGet
if: ${{ inputs.publish_nuget }}
env:
PACKAGE_VERSION: ${{ steps.gitversion.outputs.nugetVersion }}
run: |
echo "Pushing LiteDB version $PACKAGE_VERSION"
dotnet nuget push "artifacts/*.nupkg" --api-key "$NUGET_API_KEY" --source https://api.nuget.org/v3/index.json --skip-duplicate

- name: Publish GitHub release
if: ${{ inputs.publish_github }}
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.gitversion.outputs.releaseVersionPadded }}
name: LiteDB ${{ steps.gitversion.outputs.releaseVersionPadded }}
generate_release_notes: true
files: artifacts/*.nupkg
target_commitish: ${{ github.sha }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
125 changes: 125 additions & 0 deletions .github/workflows/tag-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: Tag version

on:
workflow_dispatch:
inputs:
ref:
description: Branch or SHA to tag
default: master
required: true
bump:
description: Version component to increment
type: choice
options:
- patch
- minor
- major
default: patch

jobs:
create-tag:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ inputs.ref }}

- name: Set up .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Restore .NET tools
run: dotnet tool restore

- name: Determine current version
id: gitversion
shell: bash
run: |
set -euo pipefail
JSON=$(dotnet tool run dotnet-gitversion /output json)
echo "$JSON"

MAJOR_MINOR_PATCH=$(echo "$JSON" | jq -r '.MajorMinorPatch')
PR_LABEL=$(echo "$JSON" | jq -r '.PreReleaseLabel')
PR_NUMBER=$(echo "$JSON" | jq -r '.PreReleaseNumber')

if [[ "$PR_LABEL" != "" && "$PR_LABEL" != "null" ]]; then
printf -v PR_PADDED '%04d' "$PR_NUMBER"
SEMVER="${MAJOR_MINOR_PATCH}-${PR_LABEL}.${PR_PADDED}"
else
SEMVER="$MAJOR_MINOR_PATCH"
fi

echo "fullSemVer=$SEMVER" >> "$GITHUB_OUTPUT"
echo "major=$(echo "$JSON" | jq -r '.Major')" >> "$GITHUB_OUTPUT"
echo "minor=$(echo "$JSON" | jq -r '.Minor')" >> "$GITHUB_OUTPUT"
echo "patch=$(echo "$JSON" | jq -r '.Patch')" >> "$GITHUB_OUTPUT"

- name: Calculate next version
id: next
shell: bash
env:
BUMP: ${{ inputs.bump }}
MAJOR: ${{ steps.gitversion.outputs.major }}
MINOR: ${{ steps.gitversion.outputs.minor }}
PATCH: ${{ steps.gitversion.outputs.patch }}
run: |
set -euo pipefail
major=$MAJOR
minor=$MINOR
patch=$PATCH

case "$BUMP" in
major)
major=$((major + 1))
minor=0
patch=0
;;
minor)
minor=$((minor + 1))
patch=0
;;
patch)
patch=$((patch + 1))
;;
esac

target="${major}.${minor}.${patch}"
echo "target=$target" >> "$GITHUB_OUTPUT"

- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Create annotated tag
env:
TARGET: ${{ steps.next.outputs.target }}
run: |
set -euo pipefail
if git rev-parse -q --verify "refs/tags/v${TARGET}" >/dev/null; then
echo "Tag v${TARGET} already exists" >&2
exit 1
fi

git tag -a "v${TARGET}" -m "Release tag v${TARGET}"

- name: Push tag
env:
TARGET: ${{ steps.next.outputs.target }}
run: |
set -euo pipefail
git push origin "v${TARGET}"

- name: Summary
if: always()
env:
TARGET: ${{ steps.next.outputs.target }}
FULL: ${{ steps.gitversion.outputs.fullSemVer }}
run: echo "Created tag v${TARGET} (previous build was ${FULL})"
Loading
Loading